Name: series-workflowl89sv Phase: Succeeded StartedAt: 2026-07-25 21:35:32 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[0] Phase: Succeeded StartedAt: 2026-07-25 21:35:33 +0000 UTC FinishedAt: 2026-07-25 21:57:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 21:35:33 +0000 UTC FinishedAt: 2026-07-25 21:57:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "59f92fa9-28e3-4b7a-91f1-36f5b22e1162" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_task_work_schedule_signal", "bpf_task_work_schedule_resume" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwmIzM0OywKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI5MmQwNDNkYTE0NmEwZjJiMWQyY2U3MTBkYWU4MDYxZjVlN2EzMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCBjMThmMWUxNmVkZWU0Yy4uODhiMzhkYjQ3ZGU5MmYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbkBAIC00Mzg4LDcgJiM0Mzs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG4gXHR2b2lkICptYXBfdmFsO1xuIFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcbi1cdGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbiYjNDM7XHRicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4gfSBfX2FsaWduZWQoOCk7XG4gXG5AQCAtNDQ3MSw3ICYjNDM7NDQ3MSw4IEBAIHN0YXRpYyB2b2lkIGJwZl90YXNrX3dvcmtfY2FsbGJhY2soc3RydWN0IGNhbGxiYWNrX2hlYWQgKmNiKVxuIFx0a2V5ID0gKHZvaWQgKiltYXBfa2V5X2Zyb21fdmFsdWUoY3R4LVx1MDAzZW1hcCwgY3R4LVx1MDAzZW1hcF92YWwsIFx1MDAyNmlkeCk7XG4gXG4gXHRtaWdyYXRlX2Rpc2FibGUoKTtcbi1cdGN0eC1cdTAwM2VjYWxsYmFja19mbihjdHgtXHUwMDNlbWFwLCBrZXksIGN0eC1cdTAwM2VtYXBfdmFsKTtcbiYjNDM7XHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwLCAodTY0KShsb25nKWtleSxcbiYjNDM7XHRcdFx0ICh1NjQpKGxvbmcpY3R4LVx1MDAzZW1hcF92YWwsIDAsIDApO1xuIFx0bWlncmF0ZV9lbmFibGUoKTtcbiBcbiBcdGJwZl90YXNrX3dvcmtfY3R4X3Jlc2V0KGN0eCk7XG5AQCAtNDU5NCw3ICYjNDM7NDU5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHggKmJwZl90YXNrX3dvcmtfYWNxdWlyZV9jdHgoc3RydWN0IGJwZl90YXNrX3dvcmtcbiB9XG4gXG4gc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxuLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2tfZm4sXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4LCBlbnVtIHRhc2tfd29ya19ub3RpZnlfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbkBAIC00NjE5LDcgJiM0Mzs0NjIwLDcgQEAgc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmtcbiBcdH1cbiBcbiBcdGN0eC1cdTAwM2V0YXNrID0gdGFzaztcbi1cdGN0eC1cdTAwM2VjYWxsYmFja19mbiA9IGNhbGxiYWNrX2ZuO1xuJiM0MztcdGN0eC1cdTAwM2VjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbiBcdGN0eC1cdTAwM2Vtb2RlID0gbW9kZTtcbiBcdGN0eC1cdTAwM2VtYXAgPSBtYXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwmIzM0OywKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI5MmQwNDNkYTE0NmEwZjJiMWQyY2U3MTBkYWU4MDYxZjVlN2EzMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hlbHBlcnMuYwpAQCAtNDM4OCw3ICYjNDM7NDM4OCw3IEBAIHN0cnVjdCBicGZfdGFza193b3JrX2N0eCB7CiAJc3RydWN0IGJwZl9tYXAgKm1hcDsKIAl2b2lkICptYXBfdmFsOwogCWVudW0gdGFza193b3JrX25vdGlmeV9tb2RlIG1vZGU7Ci0JYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuOwomIzQzOwlicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwogfSBfX2FsaWduZWQoOCk7CiAKQEAgLTQ0NzEsNyAmIzQzOzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYikKIAlrZXkgPSAodm9pZCAqKW1hcF9rZXlfZnJvbV92YWx1ZShjdHgtJmd0O21hcCwgY3R4LSZndDttYXBfdmFsLCAmYW1wO2lkeCk7CiAKIAltaWdyYXRlX2Rpc2FibGUoKTsKLQljdHgtJmd0O2NhbGxiYWNrX2ZuKGN0eC0mZ3Q7bWFwLCBrZXksIGN0eC0mZ3Q7bWFwX3ZhbCk7CiYjNDM7CWN0eC0mZ3Q7Y2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtJmd0O21hcCwgKHU2NCkobG9uZylrZXksCiYjNDM7CQkJICh1NjQpKGxvbmcpY3R4LSZndDttYXBfdmFsLCAwLCAwKTsKIAltaWdyYXRlX2VuYWJsZSgpOwogCiAJYnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTsKQEAgLTQ1OTQsNyAmIzQzOzQ1OTUsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrCiB9CiAKIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dywKLQkJCQkgIHN0cnVjdCBicGZfbWFwICptYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbiwKJiM0MzsJCQkJICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbiwKIAkJCQkgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCwgZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZSkKIHsKIAlzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7CkBAIC00NjE5LDcgJiM0Mzs0NjIwLDcgQEAgc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsKIAl9CiAKIAljdHgtJmd0O3Rhc2sgPSB0YXNrOwotCWN0eC0mZ3Q7Y2FsbGJhY2tfZm4gPSBjYWxsYmFja19mbjsKJiM0MzsJY3R4LSZndDtjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwogCWN0eC0mZ3Q7bW9kZSA9IG1vZGU7CiAJY3R4LSZndDttYXAgPSBtYXA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIEZ1bmN0aW9uIFNpZ25hdHVyZSBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGtlcm5lbC9icGYvaGVscGVycy5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIOKAkyBhbnl0aGluZyBpbiB0aGUgQlBGIGhlbHBlciBzcGFjZSB3YXJyYW50cyBjYXJlZnVsIGV4YW1pbmF0aW9uLiBJIHNlZSB0aGUgY29yZSBjaGFuZ2UgaXMgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGFkanVzdG1lbnQgdG8gaG93IHRoZSBgYnBmX3Rhc2tfd29ya19jYWxsYmFja190YCBpcyBkZWZpbmVkLiBJdCYjMzk7cyBub3cgZ29pbmcgYnkgdGhlIG5hbWUgYGJwZl9jYWxsYmFja190YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHhgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjbHVlIHNvbWV0aGluZ+KAmXMgc2hpZnRpbmcgaW4gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gc2lnbmF0dXJlcy4KClRoZSByZWFsIG1lYXQgb2YgaXQgaXMgdGhhdCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgaXMgYmVpbmcgdXBkYXRlZCB0byBwYXNzICpmaXZlKiBhcmd1bWVudHMgdG8gdGhlIGBjdHgtJmd0O2NhbGxiYWNrX2ZuYCBpbnN0ZWFkIG9mIHRoZSBvbGQgdGhyZWUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3Igb2YgYSBmdW5jdGlvbmFsIGNoYW5nZTsgYSBtb2RpZmljYXRpb24gaW4gaG93IEJQRiBjYWxsYmFja3MgYXJlIGhhbmRsZWQuIFRoZSBmdW5jdGlvbiBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIG5vdyBhY2NlcHQgYHZvaWQgKmNhbGxiYWNrX2ZuYCwgY2FzdGluZyBpdCB0byBgYnBmX2NhbGxiYWNrX3RgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgbW9yZSBnZW5lcmljLCBmbGV4aWJsZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgYmVpbmcgaW1wbGVtZW50ZWQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAsIGFzIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgYXBwZWFyIHRvIGJlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgZXhpc3RpbmcgQlBGIHByb2dyYW1zIHRoYXQgbWlnaHQgYmUgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGlzIGFsbCBsb29rcyB2ZXJ5IG11Y2ggcmVsYXRlZCB0byBCUEYgdGFzayB3b3JrIGFuZCBub3cgc2VlbXMgbGlrZSBpdCBoYXMgcG90ZW50aWFsbHkgd2lkZXIgaW1wbGljYXRpb25zLgoKU2luY2UgdGhpcyBkZWFscyB3aXRoIEJQRiwgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCYjMzk7cyBlbmFibGVkIGFuZCBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIHdpdGhpbiBhbnkgc3lzdGVtcyBJJiMzOTttIGNvbmNlcm5lZCB3aXRoLiBCZXN0IHRvIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCBga2VybmVsL2JwZi9oZWxwZXJzLmNgIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmM9NDU1Mj1zdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk2LVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDU5NzpzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk4LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY0MjogKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1NJR05BTFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY0My0gKiBtb2RlXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1MS0gKi9cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NTI6X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjU1LXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NTY6XHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9TSUdOQUwpO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1Ny19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1OS0vKipcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NjA6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9SRVNVTUVcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NjEtICogbW9kZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NjktICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjcwOl9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzEtXHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY3My17XG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0Njc0Olx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzUtfVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNeSBBbmFseXNpcyBvZiBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKgoKQWxyaWdodCwgc28gYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCBhcmUgYm90aCBrZnVuY3Mg4oCTIGtlcm5lbCBmdW5jdGlvbnMsIHRoYXQgaXMsIGV4cG9zZWQgZm9yIHVzZSB3aXRoaW4gQlBGIHByb2dyYW1zLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB3b3JrLCBhbmQgSSBuZWVkIHRvIHNvbGlkaWZ5IHRoYXQgdW5kZXJzdGFuZGluZy4KClRoZSBrZXkgaXMgdGhhdCBzb21lIGNhbGxiYWNrLCBwcmVzdW1hYmx5IGRlZmluZWQgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSAob3IgcGVyaGFwcyBpbiBrZXJuZWwgc3BhY2UgYW5kIGFjY2Vzc2VkKSwgZ2V0cyBleGVjdXRlZCB3aGVuIG9uZSBvZiB0aG9zZSBzY2hlZHVsaW5nIGtmdW5jcyBpcyBjYWxsZWQuIE5vdyB0aGUgbWlsbGlvbiBkb2xsYXIgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgdGhhdCBhY3R1YWxseSBoYXBwZW4/IEFjY29yZGluZyB0byB3aGF0IEkgaGF2ZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNhbGxiYWNrIGV4ZWN1dGlvbiBoYXBwZW5zIHZpYSBhIGZ1bmN0aW9uLCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIG1lY2hhbmlzbSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgZGV0YWlscyBvZiBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZC4gVGltZSB0byBkaXZlIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX2NhbGxiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmM9NDMxNj1fX2JwZl9rZnVuYyBpbnQgYnBmX3ZlcmlmeV9wa2NzN19zaWduYXR1cmUoY29uc3Qgc3RydWN0IGJwZl9keW5wdHIgKmRhdGFfcCxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00MzYwLVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDM2MTp0eXBlZGVmIGludCAoKmJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00MzYyLVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ0Mzg9c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYW5jZWwoc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpjdHgpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDQ0OS1cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ0NTA6c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYWxsYmFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqY2IpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NDUxLXtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NTk3PXN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjI3LVx0Y3R4LVx1MDAzZW1hcF92YWwgPSAodm9pZCAqKXR3IC0gbWFwLVx1MDAzZXJlY29yZC1cdTAwM2V0YXNrX3dvcmtfb2ZmO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDYyODpcdGluaXRfdGFza193b3JrKFx1MDAyNmN0eC1cdTAwM2V3b3JrLCBicGZfdGFza193b3JrX2NhbGxiYWNrKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MjktXHRpbml0X2lycV93b3JrKFx1MDAyNmN0eC1cdTAwM2VpcnFfd29yaywgYnBmX3Rhc2tfd29ya19pcnEpO1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ2NTI9X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MzpcdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTQtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjcwPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzE6XHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjcyLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMgaW4gdGhpcyBCUEYgdGFzayB3b3JrIG1lY2hhbmlzbTogYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCwgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgYW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IHRoZSBhc3luY2hyb25vdXMgY2FsbGJhY2sgZnVuY3Rpb24sIGBicGZfdGFza193b3JrX2NhbGxiYWNrYC4gVGhlc2UgYXJlIHRoZSBjb3JlIHBsYXllcnMgaGVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsaW5nIGFuZCByZXN1bXB0aW9uIGFyZSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlIGdpdmVuIGl0cyBhc3luY2hyb25vdXMgbmF0dXJlLiBUaGUgYXN5bmMgY2FsbGJhY2sgaXMsIGFzIGFsd2F5cywgd2hlcmUgdGhlIGZ1biBpcy4KCkJlZm9yZSBJIGdvIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIHRoaW5rIGl0JiMzOTtzIHdpc2UgdG8gcmV2aWV3IHRoZSBjb25maWdzLiBUaGF0IHdpbGwgc2V0IHRoZSBjb250ZXh0IGZvciB0aGUgYmVoYXZpb3IgYW5kIHRoZSBjb25zdHJhaW50cyB0aGF0IHRoZSBCUEYgcHJvZ3JhbSB3aWxsIG9wZXJhdGUgdW5kZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IHBhcmFtZXRlcnMgYXJlIGluZmx1ZW5jaW5nIHRoZSBiZWhhdmlvci4gTm8gc2Vuc2UgaW4gc3Bpbm5pbmcgbXkgd2hlZWxzIHdpdGhvdXQgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWdzIHRlbGwgbWUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JjL0tjb25maWc9MTc9aWYgUkNfQ09SRVxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTE4LVxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnOjE5OmNvbmZpZyBCUEZfTElSQ19NT0RFMlxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBlQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGxpcmMgZGV2aWNlc1wmIzM0O1xuLS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzPTI0Mj1jb25maWcgUVVFVUVEX1NQSU5MT0NLU1xuLS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0NS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzOjI0Njpjb25maWcgQlBGX0FSQ0hfU1BJTkxPQ0tcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0Ny1cdGJvb2xcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctMy0jIEJQRiBpbnRlcnByZXRlciB0aGF0LCBmb3IgZXhhbXBsZSwgY2xhc3NpYyBzb2NrZXQgZmlsdGVycyBkZXBlbmQgb24uXG5rZXJuZWwvYnBmL0tjb25maWc6NDpjb25maWcgQlBGXG5rZXJuZWwvYnBmL0tjb25maWctNS1cdGJvb2xcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy03Mi1cbmtlcm5lbC9icGYvS2NvbmZpZzo3Mzpjb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxua2VybmVsL2JwZi9LY29uZmlnLTc0LVx0Ym9vbCBcJiMzNDtEaXNhYmxlIHVucHJpdmlsZWdlZCBCUEYgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz05MD1zb3VyY2UgXCYjMzQ7a2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWdcJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy05MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo5Mjpjb25maWcgQlBGX0xTTVxua2VybmVsL2JwZi9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIExTTSBJbnN0cnVtZW50YXRpb25cJiMzNDtcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MjptZW51Y29uZmlnIEJQRl9QUkVMT0FEXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtQcmVsb2FkIEJQRiBmaWxlIHN5c3RlbSB3aXRoIGtlcm5lbCBzcGVjaWZpYyBwcm9ncmFtIGFuZCBtYXAgaXRlcmF0b3JzXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc9MTQ9aWYgQlBGX1BSRUxPQURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjE1OmNvbmZpZyBCUEZfUFJFTE9BRF9VTURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7YnBmX3ByZWxvYWQga2VybmVsIG1vZHVsZVwmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTg2NT1jb25maWcgUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODY3LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODY4OmNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjktXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4tLVxubmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcbi0tXG5uZXQvS2NvbmZpZy0zNjAtXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZy0zNjItXHRib29sIFwmIzM0O2VuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgQlBGIEhlbHBlciBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aGUgcGF0Y2ggaXMgYXBwYXJlbnRseSBuZXN0bGVkIHdpdGhpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBNeSBpbml0aWFsIHN0ZXAgd2lsbCBiZSB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmaWxlLiBVbmRlcnN0YW5kaW5nIHRoZSByZXF1aXJlZCBidWlsZCBmbGFncywgZXNwZWNpYWxseSB0aG9zZSByZWxhdGVkIHRvIEJQRiBmdW5jdGlvbmFsaXR5LCBpcyBjcnVjaWFsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBoYXMgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBlbmFibGVkIHRvIHByb3Blcmx5IGFuYWx5emUgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGNoJiMzOTtzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBUaGlzIHdpbGwgc3RyZWFtbGluZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBwdXJwb3NlIGFuZCBpdHMgZXhwZWN0ZWQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZWxwZXJzXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRXhhbWluaW5nIEJQRiBUYXNrIFNjaGVkdWxpbmcgYW5kIFN5c3RlbSBDYWxscyoqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBoZXJlIGlzIGRlZmluaXRlbHkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgYSBnaXZlbi4gTm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYC4gVGhvc2UgYXJlIHRoZSB3b3JraG9yc2VzIGluIHRoaXMgYXJlYSwgc28gdGhleSBuZWVkIGEgY2xvc2UgbG9vay4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IG1pc3MgYW55dGhpbmcgc3VidGxlLCBsZXQmIzM5O3MgcXVpY2tseSBzY2FuIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkgb3IgcG90ZW50aWFsbHkgaW5mbHVlbmNlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYmVoYXZlLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTQ1OTc9c3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NDEtLyoqXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjQyOiAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfU0lHTkFMXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjUxLSAqL1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjUzLVx0XHRcdFx0XHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTg1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb251bmRydW1zKioKCkFscmlnaHQsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXNlIGZ1bmN0aW9ucyBwb3NzaWJseSB3cmFwcGVkIGluIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcz8gSSBtZWFuLCBpdCYjMzk7cyBwcmV0dHkgY29tbW9uLCBlc3BlY2lhbGx5IGluIGNvZGViYXNlcyB0aGF0IHN1cHBvcnQgZGlmZmVyZW50IHBsYXRmb3JtcyBvciBoYXZlIGNvbmRpdGlvbmFsIGZlYXR1cmUgc2V0cy4gSWYgdGhleSAqYXJlKiBjb25kaXRpb25hbCwgdGhhdCBjaGFuZ2VzIHRoZSBlbnRpcmUgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXZlbiAqY29tcGlsZWQqIGluIHRoZSBmaXJzdCBwbGFjZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbXMsIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGNlcnRhaW4gYnVpbGRzIG9yIGVudmlyb25tZW50cy4gVGhhdCBhZmZlY3RzIGV2ZXJ5dGhpbmcgZnJvbSB0ZXN0aW5nIHN0cmF0ZWdpZXMgdG8gaW50ZWdyYXRpb24gd2l0aCBvdGhlciBtb2R1bGVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb3IgaW4vZXhjbHVzaXZpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUgaG93IHRvIHByb2NlZWQgd2l0aCBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NjQwOlx0XG40NjQxOlx0LyoqXG40NjQyOlx0ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcbjQ2NDM6XHQgKiBtb2RlXG40NjQ0Olx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXG40NjQ1Olx0ICogQHR3OiBQb2ludGVyIHRvIHN0cnVjdCBicGZfdGFza193b3JrIGluIEJQRiBtYXAgdmFsdWUgZm9yIGludGVybmFsIGJvb2trZWVwaW5nXG40NjQ2Olx0ICogQG1hcF9fbWFwOiBicGZfbWFwIHRoYXQgZW1iZWRzIHN0cnVjdCBicGZfdGFza193b3JrIGluIHRoZSB2YWx1ZXNcbjQ2NDc6XHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxuNDY0ODpcdCAqIEBhdXg6IHBvaW50ZXIgdG8gYnBmX3Byb2dfYXV4IG9mIHRoZSBjYWxsZXIgQlBGIHByb2dyYW0sIGltcGxpY2l0bHkgc2V0IGJ5IHRoZSB2ZXJpZmllclxuNDY0OTpcdCAqXG40NjUwOlx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxuNDY1MTpcdCAqL1xuNDY1MjpcdF9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbjQ2NTM6XHRcdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbjQ2NTQ6XHRcdFx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuNDY1NTpcdHtcbjQ2NTY6XHRcdHJldHVybiBicGZfdGFza193b3JrX3NjaGVkdWxlKHRhc2ssIHR3LCBtYXBfX21hcCwgY2FsbGJhY2ssIGF1eCwgVFdBX1NJR05BTCk7XG40NjU3Olx0fVxuNDY1ODpcdFxuNDY1OTpcdC8qKlxuNDY2MDpcdCAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfUkVTVU1FXG40NjYxOlx0ICogbW9kZVxuNDY2MjpcdCAqIEB0YXNrOiBUYXNrIHN0cnVjdCBmb3Igd2hpY2ggY2FsbGJhY2sgc2hvdWxkIGJlIHNjaGVkdWxlZFxuNDY2MzpcdCAqIEB0dzogUG9pbnRlciB0byBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiBCUEYgbWFwIHZhbHVlIGZvciBpbnRlcm5hbCBib29ra2VlcGluZ1xuNDY2NDpcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXG40NjY1Olx0ICogQGNhbGxiYWNrOiBwb2ludGVyIHRvIEJQRiBzdWJwcm9ncmFtIHRvIGNhbGxcbjQ2NjY6XHQgKiBAYXV4OiBwb2ludGVyIHRvIGJwZl9wcm9nX2F1eCBvZiB0aGUgY2FsbGVyIEJQRiBwcm9ncmFtLCBpbXBsaWNpdGx5IHNldCBieSB0aGUgdmVyaWZpZXJcbjQ2Njc6XHQgKlxuNDY2ODpcdCAqIFJldHVybjogMCBpZiB0YXNrIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkIHN1Y2Nlc3NmdWxseSwgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2VcbjQ2Njk6XHQgKi9cbjQ2NzA6XHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG40NjcxOlx0XHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG40NjcyOlx0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbjQ2NzM6XHR7XG40Njc0Olx0XHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9SRVNVTUUpO1xuNDY3NTpcdH1cbjQ2NzY6XHRcbjQ2Nzc6XHRzdGF0aWMgaW50IG1ha2VfZmlsZV9keW5wdHIoc3RydWN0IGZpbGUgKmZpbGUsIHUzMiBmbGFncywgYm9vbCBtYXlfc2xlZXAsXG40Njc4Olx0XHRcdFx0ICAgIHN0cnVjdCBicGZfZHlucHRyX2tlcm4gKnB0cilcbjQ2Nzk6XHR7XG40NjgwOlx0XHRzdHJ1Y3QgYnBmX2R5bnB0cl9maWxlX2ltcGwgKnN0YXRlO1xuNDY4MTpcdFxuNDY4MjpcdFx0LyogZmxhZ3MgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkICovXG40NjgzOlx0XHRpZiAoZmxhZ3MpIHtcbjQ2ODQ6XHRcdFx0YnBmX2R5bnB0cl9zZXRfbnVsbChwdHIpO1xuNDY4NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQ2ODY6XHRcdH1cbjQ2ODc6XHRcbjQ2ODg6XHRcdHN0YXRlID0ga21hbGxvY19ub2xvY2soc2l6ZW9mKCpzdGF0ZSksIDAsIE5VTUFfTk9fTk9ERSk7XG40Njg5Olx0XHRpZiAoIXN0YXRlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODUKCQkJCQkJCW91dHB1dDogMTUzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFRhc2sgV29yayBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBCUEYgdGFzayB3b3JrIHNjaGVkdWxpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGxpa2UgYCNpZmRlZmAgc3Vycm91bmRpbmcgdGhlIGtleSBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuZXIuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseS4KClRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgQlBGIHRhc2sgd29yayBzY2hlZHVsaW5nIGltcGxlbWVudGF0aW9uLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpa2VseSByZXNpZGVzLCBhcmUgZGVmaW5pdGVseSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBJIG5vdGVkIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIHN0YXRpYzsgdGhlcmVmb3JlLCBpdOKAmXMgbm90IGFuIGVudHJ5IHBvaW50IEkgbmVlZCB0byBleGFtaW5lIGRpcmVjdGx5LiBIb3dldmVyLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSBjYWxsZWQgd2l0aGluIHRoZSB0d28gZnVuY3Rpb25zIHRvIHdoaWNoIEkgYW0gZ2l2aW5nIHNwZWNpYWwgYXR0ZW50aW9uIHRvLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJJiMzOTt2ZSBtaXNzZWQuIE5vcGUsIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQsIGFzIEkgb3JpZ2luYWxseSB0aG91Z2h0LgoKQWxyaWdodCwgdGhhdCYjMzk7cyBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93LiBJIGNhbiBwcm9jZWVkIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgZmluYWxpemUgdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCYjMzQ7LAogICAgJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBleGVjdXRpb24gb2YgdGhlIEJQRiB0YXNrIHdvcmsgY2FsbGJhY2suIEl0IGNoYW5nZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmcm9tIDMgdG8gNS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgZm9yIHNjaGVkdWxpbmcgdGhlc2UgY2FsbGJhY2tzIGFyZSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLCB3aGljaCBhcmUgZXhwb3NlZCBhcyBrZnVuY3MgdG8gQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsJiMzNDssCiAgICAmIzM0O2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1Mzo1Ni41MjI2NzU1ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTQ3MTI3NDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXCIsXG4gICAgXCJicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjUzOjU2LjUyMjY4MjI3NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjE5NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjkyZDA0M2RhMTQ2YTBmMmIxZDJjZTcxMGRhZTgwNjFmNWU3YTMyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXFxuaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDM4OCw3ICs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcXG4gXFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcXG4gXFx0dm9pZCAqbWFwX3ZhbDtcXG4gXFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcXG4tXFx0YnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuO1xcbitcXHRicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcXG4gXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4gfSBfX2FsaWduZWQoOCk7XFxuIFxcbkBAIC00NDcxLDcgKzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYilcXG4gXFx0a2V5ID0gKHZvaWQgKiltYXBfa2V5X2Zyb21fdmFsdWUoY3R4LVxcdTAwM2VtYXAsIGN0eC1cXHUwMDNlbWFwX3ZhbCwgXFx1MDAyNmlkeCk7XFxuIFxcbiBcXHRtaWdyYXRlX2Rpc2FibGUoKTtcXG4tXFx0Y3R4LVxcdTAwM2VjYWxsYmFja19mbihjdHgtXFx1MDAzZW1hcCwga2V5LCBjdHgtXFx1MDAzZW1hcF92YWwpO1xcbitcXHRjdHgtXFx1MDAzZWNhbGxiYWNrX2ZuKCh1NjQpKGxvbmcpY3R4LVxcdTAwM2VtYXAsICh1NjQpKGxvbmcpa2V5LFxcbitcXHRcXHRcXHQgKHU2NCkobG9uZyljdHgtXFx1MDAzZW1hcF92YWwsIDAsIDApO1xcbiBcXHRtaWdyYXRlX2VuYWJsZSgpO1xcbiBcXG4gXFx0YnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTtcXG5AQCAtNDU5NCw3ICs0NTk1LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGFza193b3JrX2N0eCAqYnBmX3Rhc2tfd29ya19hY3F1aXJlX2N0eChzdHJ1Y3QgYnBmX3Rhc2tfd29ya1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmNhbGxiYWNrX2ZuLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCwgZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7XFxuQEAgLTQ2MTksNyArNDYyMCw3IEBAIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrXFxuIFxcdH1cXG4gXFxuIFxcdGN0eC1cXHUwMDNldGFzayA9IHRhc2s7XFxuLVxcdGN0eC1cXHUwMDNlY2FsbGJhY2tfZm4gPSBjYWxsYmFja19mbjtcXG4rXFx0Y3R4LVxcdTAwM2VjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjtcXG4gXFx0Y3R4LVxcdTAwM2Vwcm9nID0gcHJvZztcXG4gXFx0Y3R4LVxcdTAwM2Vtb2RlID0gbW9kZTtcXG4gXFx0Y3R4LVxcdTAwM2VtYXAgPSBtYXA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjUzOjU3LjA2OTU1NjQ0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI4OTI0Mzg0NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjkyZDA0M2RhMTQ2YTBmMmIxZDJjZTcxMGRhZTgwNjFmNWU3YTMyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIxOjUzOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDM4OCw3ICs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG4gXHR2b2lkICptYXBfdmFsO1xuIFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcbi1cdGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbitcdGJwZl9jYWxsYmFja190IGNhbGxiYWNrX2ZuO1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiB9IF9fYWxpZ25lZCg4KTtcbiBcbkBAIC00NDcxLDcgKzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYilcbiBcdGtleSA9ICh2b2lkICopbWFwX2tleV9mcm9tX3ZhbHVlKGN0eC1cdTAwM2VtYXAsIGN0eC1cdTAwM2VtYXBfdmFsLCBcdTAwMjZpZHgpO1xuIFxuIFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4tXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oY3R4LVx1MDAzZW1hcCwga2V5LCBjdHgtXHUwMDNlbWFwX3ZhbCk7XG4rXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwLCAodTY0KShsb25nKWtleSxcbitcdFx0XHQgKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwX3ZhbCwgMCwgMCk7XG4gXHRtaWdyYXRlX2VuYWJsZSgpO1xuIFxuIFx0YnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTtcbkBAIC00NTk0LDcgKzQ1OTUsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrXG4gfVxuIFxuIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi1cdFx0XHRcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4LCBlbnVtIHRhc2tfd29ya19ub3RpZnlfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbkBAIC00NjE5LDcgKzQ2MjAsNyBAQCBzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29ya1xuIFx0fVxuIFxuIFx0Y3R4LVx1MDAzZXRhc2sgPSB0YXNrO1xuLVx0Y3R4LVx1MDAzZWNhbGxiYWNrX2ZuID0gY2FsbGJhY2tfZm47XG4rXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4gPSAoYnBmX2NhbGxiYWNrX3QpY2FsbGJhY2tfZm47XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4gXHRjdHgtXHUwMDNlbW9kZSA9IG1vZGU7XG4gXHRjdHgtXHUwMDNlbWFwID0gbWFwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTM6NTcuMDY5NTU3NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxNzk0MjAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgRnVuY3Rpb24gU2lnbmF0dXJlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiDigJMgYW55dGhpbmcgaW4gdGhlIEJQRiBoZWxwZXIgc3BhY2Ugd2FycmFudHMgY2FyZWZ1bCBleGFtaW5hdGlvbi4gSSBzZWUgdGhlIGNvcmUgY2hhbmdlIGlzIGEgc3VidGxlIGJ1dCBzaWduaWZpY2FudCBhZGp1c3RtZW50IHRvIGhvdyB0aGUgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdGAgaXMgZGVmaW5lZC4gSXQncyBub3cgZ29pbmcgYnkgdGhlIG5hbWUgYGJwZl9jYWxsYmFja190YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHhgLiBUaGF0J3MgdGhlIGZpcnN0IGNsdWUgc29tZXRoaW5n4oCZcyBzaGlmdGluZyBpbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBzaWduYXR1cmVzLlxuXG5UaGUgcmVhbCBtZWF0IG9mIGl0IGlzIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIGJlaW5nIHVwZGF0ZWQgdG8gcGFzcyAqZml2ZSogYXJndW1lbnRzIHRvIHRoZSBgY3R4LVx1MDAzZWNhbGxiYWNrX2ZuYCBpbnN0ZWFkIG9mIHRoZSBvbGQgdGhyZWUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3Igb2YgYSBmdW5jdGlvbmFsIGNoYW5nZTsgYSBtb2RpZmljYXRpb24gaW4gaG93IEJQRiBjYWxsYmFja3MgYXJlIGhhbmRsZWQuIFRoZSBmdW5jdGlvbiBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIG5vdyBhY2NlcHQgYHZvaWQgKmNhbGxiYWNrX2ZuYCwgY2FzdGluZyBpdCB0byBgYnBmX2NhbGxiYWNrX3RgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgbW9yZSBnZW5lcmljLCBmbGV4aWJsZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgYmVpbmcgaW1wbGVtZW50ZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlYCwgYXMgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBhcHBlYXIgdG8gYmUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyBleGlzdGluZyBCUEYgcHJvZ3JhbXMgdGhhdCBtaWdodCBiZSB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgYWxsIGxvb2tzIHZlcnkgbXVjaCByZWxhdGVkIHRvIEJQRiB0YXNrIHdvcmsgYW5kIG5vdyBzZWVtcyBsaWtlIGl0IGhhcyBwb3RlbnRpYWxseSB3aWRlciBpbXBsaWNhdGlvbnMuXG5cblNpbmNlIHRoaXMgZGVhbHMgd2l0aCBCUEYsIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIGlzIGxpa2VseSBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCdzIGVuYWJsZWQgYW5kIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGFueSBzeXN0ZW1zIEknbSBjb25jZXJuZWQgd2l0aC4gQmVzdCB0byBzdGFydCBieSBsb29raW5nIGNsb3NlbHkgYXQgYGtlcm5lbC9icGYvaGVscGVycy5jYCB0byBzZWUgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDowMS45ODc1MDIyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4OTU2MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuYz00NTUyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHggKmJwZl90YXNrX3dvcmtfYWNxdWlyZV9jdHgoc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDU5Ni1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NTk3OnN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqY2FsbGJhY2tfZm4sXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NDI6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTEtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1NS17XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1NjpcXHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9TSUdOQUwpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTctfVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1OS0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjYwOiAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfUkVTVU1FXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY2MS0gKiBtb2RlXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjY5LSAqL1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzA6X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzMte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzQ6XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00Njc1LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2ODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjAyLjA0OTQwMjA2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDYzNjY4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBBbmFseXNpcyBvZiBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgIGFyZSBib3RoIGtmdW5jcyDigJMga2VybmVsIGZ1bmN0aW9ucywgdGhhdCBpcywgZXhwb3NlZCBmb3IgdXNlIHdpdGhpbiBCUEYgcHJvZ3JhbXMuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugd29yaywgYW5kIEkgbmVlZCB0byBzb2xpZGlmeSB0aGF0IHVuZGVyc3RhbmRpbmcuXG5cblRoZSBrZXkgaXMgdGhhdCBzb21lIGNhbGxiYWNrLCBwcmVzdW1hYmx5IGRlZmluZWQgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSAob3IgcGVyaGFwcyBpbiBrZXJuZWwgc3BhY2UgYW5kIGFjY2Vzc2VkKSwgZ2V0cyBleGVjdXRlZCB3aGVuIG9uZSBvZiB0aG9zZSBzY2hlZHVsaW5nIGtmdW5jcyBpcyBjYWxsZWQuIE5vdyB0aGUgbWlsbGlvbiBkb2xsYXIgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgdGhhdCBhY3R1YWxseSBoYXBwZW4/IEFjY29yZGluZyB0byB3aGF0IEkgaGF2ZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNhbGxiYWNrIGV4ZWN1dGlvbiBoYXBwZW5zIHZpYSBhIGZ1bmN0aW9uLCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIG1lY2hhbmlzbSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgZGV0YWlscyBvZiBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjYWxsYmFjayBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MDUuNDk1NzcyNjI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODM0NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90YXNrX3dvcmtfY2FsbGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDMxNj1fX2JwZl9rZnVuYyBpbnQgYnBmX3ZlcmlmeV9wa2NzN19zaWduYXR1cmUoY29uc3Qgc3RydWN0IGJwZl9keW5wdHIgKmRhdGFfcCxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQzNjAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDM2MTp0eXBlZGVmIGludCAoKmJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDM2Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ0Mzg9c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYW5jZWwoc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpjdHgpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NDQ5LVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ0NTA6c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYWxsYmFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqY2IpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDQ1MS17XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NTk3PXN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MjctXFx0Y3R4LVxcdTAwM2VtYXBfdmFsID0gKHZvaWQgKil0dyAtIG1hcC1cXHUwMDNlcmVjb3JkLVxcdTAwM2V0YXNrX3dvcmtfb2ZmO1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2Mjg6XFx0aW5pdF90YXNrX3dvcmsoXFx1MDAyNmN0eC1cXHUwMDNld29yaywgYnBmX3Rhc2tfd29ya19jYWxsYmFjayk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYyOS1cXHRpbml0X2lycV93b3JrKFxcdTAwMjZjdHgtXFx1MDAzZWlycV93b3JrLCBicGZfdGFza193b3JrX2lycSk7XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjUyPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjUzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1NC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjcwPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjcxOlxcdFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY3Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjA1LjU1NDYxMTg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MjY5OTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gQlBGIFRhc2sgV29yayBTY2hlZHVsaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMgaW4gdGhpcyBCUEYgdGFzayB3b3JrIG1lY2hhbmlzbTogYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCwgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgYW5kIGxldCdzIG5vdCBmb3JnZXQgdGhlIGFzeW5jaHJvbm91cyBjYWxsYmFjayBmdW5jdGlvbiwgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcGxheWVycyBoZXJlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgc2NoZWR1bGluZyBhbmQgcmVzdW1wdGlvbiBhcmUgaW1wbGVtZW50ZWQsIGFuZCBob3cgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGZpdHMgaW50byB0aGUgcGljdHVyZSBnaXZlbiBpdHMgYXN5bmNocm9ub3VzIG5hdHVyZS4gVGhlIGFzeW5jIGNhbGxiYWNrIGlzLCBhcyBhbHdheXMsIHdoZXJlIHRoZSBmdW4gaXMuXG5cbkJlZm9yZSBJIGdvIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIHRoaW5rIGl0J3Mgd2lzZSB0byByZXZpZXcgdGhlIGNvbmZpZ3MuIFRoYXQgd2lsbCBzZXQgdGhlIGNvbnRleHQgZm9yIHRoZSBiZWhhdmlvciBhbmQgdGhlIGNvbnN0cmFpbnRzIHRoYXQgdGhlIEJQRiBwcm9ncmFtIHdpbGwgb3BlcmF0ZSB1bmRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBpbmZsdWVuY2luZyB0aGUgYmVoYXZpb3IuIE5vIHNlbnNlIGluIHNwaW5uaW5nIG15IHdoZWVscyB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3MgdGVsbCBtZSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjA4LjkwNzMxNDI4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA2ODIyODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZz0xNz1pZiBSQ19DT1JFXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZzoxOTpjb25maWcgQlBGX0xJUkNfTU9ERTJcXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgZUJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBsaXJjIGRldmljZXNcXFwiXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcz0yNDI9Y29uZmlnIFFVRVVFRF9TUElOTE9DS1NcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0NS1cXG5rZXJuZWwvS2NvbmZpZy5sb2NrczoyNDY6Y29uZmlnIEJQRl9BUkNIX1NQSU5MT0NLXFxua2VybmVsL0tjb25maWcubG9ja3MtMjQ3LVxcdGJvb2xcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy0zLSMgQlBGIGludGVycHJldGVyIHRoYXQsIGZvciBleGFtcGxlLCBjbGFzc2ljIHNvY2tldCBmaWx0ZXJzIGRlcGVuZCBvbi5cXG5rZXJuZWwvYnBmL0tjb25maWc6NDpjb25maWcgQlBGXFxua2VybmVsL2JwZi9LY29uZmlnLTUtXFx0Ym9vbFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy03Mi1cXG5rZXJuZWwvYnBmL0tjb25maWc6NzM6Y29uZmlnIEJQRl9VTlBSSVZfREVGQVVMVF9PRkZcXG5rZXJuZWwvYnBmL0tjb25maWctNzQtXFx0Ym9vbCBcXFwiRGlzYWJsZSB1bnByaXZpbGVnZWQgQlBGIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9OTA9c291cmNlIFxcXCJrZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZ1xcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctOTEtXFxua2VybmVsL2JwZi9LY29uZmlnOjkyOmNvbmZpZyBCUEZfTFNNXFxua2VybmVsL2JwZi9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblxcXCJcXG4tLVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MjptZW51Y29uZmlnIEJQRl9QUkVMT0FEXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMy1cXHRib29sIFxcXCJQcmVsb2FkIEJQRiBmaWxlIHN5c3RlbSB3aXRoIGtlcm5lbCBzcGVjaWZpYyBwcm9ncmFtIGFuZCBtYXAgaXRlcmF0b3JzXFxcIlxcbi0tXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc9MTQ9aWYgQlBGX1BSRUxPQURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoxNTpjb25maWcgQlBGX1BSRUxPQURfVU1EXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcImJwZl9wcmVsb2FkIGtlcm5lbCBtb2R1bGVcXFwiXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9ODY1PWNvbmZpZyBQUk9CRV9FVkVOVFNcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2Ny1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Njg6Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjktXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cXFwiXFxuLS1cXG5uZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxcbi0tXFxubmV0L0tjb25maWctMzYwLVxcbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZy0zNjItXFx0Ym9vbCBcXFwiZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDoxMS43MTQxNDI1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA2NjU0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgQlBGIEhlbHBlciBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBwYXRjaCBpcyBhcHBhcmVudGx5IG5lc3RsZWQgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIE15IGluaXRpYWwgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGZpbGUuIFVuZGVyc3RhbmRpbmcgdGhlIHJlcXVpcmVkIGJ1aWxkIGZsYWdzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gQlBGIGZ1bmN0aW9uYWxpdHksIGlzIGNydWNpYWwgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50IGhhcyBhbGwgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQgdG8gcHJvcGVybHkgYW5hbHl6ZSBhbmQgdW5kZXJzdGFuZCB0aGUgcGF0Y2gncyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgQlBGIGVjb3N5c3RlbS4gVGhpcyB3aWxsIHN0cmVhbWxpbmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBwdXJwb3NlIGFuZCBpdHMgZXhwZWN0ZWQgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjA3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MTQuNTIwNzk5MDg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg0OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoZWxwZXJzXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDoxNC41ODA2NTQ5MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1ODM3OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgQlBGIFRhc2sgU2NoZWR1bGluZyBhbmQgU3lzdGVtIENhbGxzKipcblxuQWxyaWdodCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgaGVyZSBpcyBkZWZpbml0ZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgYSBnaXZlbi4gTm93LCBJJ20gemVyb2luZyBpbiBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBUaG9zZSBhcmUgdGhlIHdvcmtob3JzZXMgaW4gdGhpcyBhcmVhLCBzbyB0aGV5IG5lZWQgYSBjbG9zZSBsb29rLiBKdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgbWlzcyBhbnl0aGluZyBzdWJ0bGUsIGxldCdzIHF1aWNrbHkgc2NhbiB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5IG9yIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjE3LjQ1NjQ5NTA2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2NTc3MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDU5Nz1zdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NDI6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTEtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Nj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MTcuNTE1MTU3NjI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjAyMDMwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmUsIHVzaW5nIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFpbWluZyBmb3IgYSBmdWxzb21lIHJlbmRlcmluZzpcblxuKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb251bmRydW1zKipcblxuQWxyaWdodCwgSSdtIHRha2luZyBhIGxvb2sgYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGdvZXMgdG8gcG90ZW50aWFsIGVkZ2UgY2FzZXMuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVzZSBmdW5jdGlvbnMgcG9zc2libHkgd3JhcHBlZCBpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXM/IEkgbWVhbiwgaXQncyBwcmV0dHkgY29tbW9uLCBlc3BlY2lhbGx5IGluIGNvZGViYXNlcyB0aGF0IHN1cHBvcnQgZGlmZmVyZW50IHBsYXRmb3JtcyBvciBoYXZlIGNvbmRpdGlvbmFsIGZlYXR1cmUgc2V0cy4gSWYgdGhleSAqYXJlKiBjb25kaXRpb25hbCwgdGhhdCBjaGFuZ2VzIHRoZSBlbnRpcmUgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXZlbiAqY29tcGlsZWQqIGluIHRoZSBmaXJzdCBwbGFjZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbXMsIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGNlcnRhaW4gYnVpbGRzIG9yIGVudmlyb25tZW50cy4gVGhhdCBhZmZlY3RzIGV2ZXJ5dGhpbmcgZnJvbSB0ZXN0aW5nIHN0cmF0ZWdpZXMgdG8gaW50ZWdyYXRpb24gd2l0aCBvdGhlciBtb2R1bGVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb3IgaW4vZXhjbHVzaXZpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUgaG93IHRvIHByb2NlZWQgd2l0aCBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTg1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjAuNzc1MzYyOTA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0NjQwOlxcdFxcbjQ2NDE6XFx0LyoqXFxuNDY0MjpcXHQgKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1NJR05BTFxcbjQ2NDM6XFx0ICogbW9kZVxcbjQ2NDQ6XFx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXFxuNDY0NTpcXHQgKiBAdHc6IFBvaW50ZXIgdG8gc3RydWN0IGJwZl90YXNrX3dvcmsgaW4gQlBGIG1hcCB2YWx1ZSBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmdcXG40NjQ2OlxcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXFxuNDY0NzpcXHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxcbjQ2NDg6XFx0ICogQGF1eDogcG9pbnRlciB0byBicGZfcHJvZ19hdXggb2YgdGhlIGNhbGxlciBCUEYgcHJvZ3JhbSwgaW1wbGljaXRseSBzZXQgYnkgdGhlIHZlcmlmaWVyXFxuNDY0OTpcXHQgKlxcbjQ2NTA6XFx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxcbjQ2NTE6XFx0ICovXFxuNDY1MjpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuNDY1MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbjQ2NTQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbjQ2NTU6XFx0e1xcbjQ2NTY6XFx0XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfU0lHTkFMKTtcXG40NjU3OlxcdH1cXG40NjU4OlxcdFxcbjQ2NTk6XFx0LyoqXFxuNDY2MDpcXHQgKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1JFU1VNRVxcbjQ2NjE6XFx0ICogbW9kZVxcbjQ2NjI6XFx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXFxuNDY2MzpcXHQgKiBAdHc6IFBvaW50ZXIgdG8gc3RydWN0IGJwZl90YXNrX3dvcmsgaW4gQlBGIG1hcCB2YWx1ZSBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmdcXG40NjY0OlxcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXFxuNDY2NTpcXHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxcbjQ2NjY6XFx0ICogQGF1eDogcG9pbnRlciB0byBicGZfcHJvZ19hdXggb2YgdGhlIGNhbGxlciBCUEYgcHJvZ3JhbSwgaW1wbGljaXRseSBzZXQgYnkgdGhlIHZlcmlmaWVyXFxuNDY2NzpcXHQgKlxcbjQ2Njg6XFx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxcbjQ2Njk6XFx0ICovXFxuNDY3MDpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuNDY3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbjQ2NzI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbjQ2NzM6XFx0e1xcbjQ2NzQ6XFx0XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcXG40Njc1OlxcdH1cXG40Njc2OlxcdFxcbjQ2Nzc6XFx0c3RhdGljIGludCBtYWtlX2ZpbGVfZHlucHRyKHN0cnVjdCBmaWxlICpmaWxlLCB1MzIgZmxhZ3MsIGJvb2wgbWF5X3NsZWVwLFxcbjQ2Nzg6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfZHlucHRyX2tlcm4gKnB0cilcXG40Njc5OlxcdHtcXG40NjgwOlxcdFxcdHN0cnVjdCBicGZfZHlucHRyX2ZpbGVfaW1wbCAqc3RhdGU7XFxuNDY4MTpcXHRcXG40NjgyOlxcdFxcdC8qIGZsYWdzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCAqL1xcbjQ2ODM6XFx0XFx0aWYgKGZsYWdzKSB7XFxuNDY4NDpcXHRcXHRcXHRicGZfZHlucHRyX3NldF9udWxsKHB0cik7XFxuNDY4NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40Njg2OlxcdFxcdH1cXG40Njg3OlxcdFxcbjQ2ODg6XFx0XFx0c3RhdGUgPSBrbWFsbG9jX25vbG9jayhzaXplb2YoKnN0YXRlKSwgMCwgTlVNQV9OT19OT0RFKTtcXG40Njg5OlxcdFxcdGlmICghc3RhdGUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjAuNzc1NTU3OTI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDA0MjQwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBCUEYgdGFzayB3b3JrIHNjaGVkdWxpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGxpa2UgYCNpZmRlZmAgc3Vycm91bmRpbmcgdGhlIGtleSBmdW5jdGlvbnMuIFRoYXQncyBnb29kLCBrZWVwcyB0aGluZ3MgY2xlYW5lci4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LlxuXG5UaGUgcGF0Y2ggYXBwZWFycyB0byBiZSBmdW5jdGlvbmFsOyBpdCdzIG1vZGlmeWluZyB0aGUgQlBGIHRhc2sgd29yayBzY2hlZHVsaW5nIGltcGxlbWVudGF0aW9uLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpa2VseSByZXNpZGVzLCBhcmUgZGVmaW5pdGVseSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBJIG5vdGVkIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIHN0YXRpYzsgdGhlcmVmb3JlLCBpdOKAmXMgbm90IGFuIGVudHJ5IHBvaW50IEkgbmVlZCB0byBleGFtaW5lIGRpcmVjdGx5LiBIb3dldmVyLCBpdCdzIHZlcnkgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIHR3byBmdW5jdGlvbnMgdG8gd2hpY2ggSSBhbSBnaXZpbmcgc3BlY2lhbCBhdHRlbnRpb24gdG8uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIEkndmUgbWlzc2VkLiBOb3BlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSBzdWZmaWNpZW50LCBhcyBJIG9yaWdpbmFsbHkgdGhvdWdodC5cblxuQWxyaWdodCwgdGhhdCdzIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cuIEkgY2FuIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODUsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjUuOTE1OTg0MTYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NTMxODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXCIsXG4gICAgXCJicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 21:35:33 +0000 UTC FinishedAt: 2026-07-25 21:54:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "59f92fa9-28e3-4b7a-91f1-36f5b22e1162" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_task_work_schedule_signal", "bpf_task_work_schedule_resume" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwmIzM0OywKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI5MmQwNDNkYTE0NmEwZjJiMWQyY2U3MTBkYWU4MDYxZjVlN2EzMjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5pbmRleCBjMThmMWUxNmVkZWU0Yy4uODhiMzhkYjQ3ZGU5MmYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oZWxwZXJzLmNcbkBAIC00Mzg4LDcgJiM0Mzs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG4gXHR2b2lkICptYXBfdmFsO1xuIFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcbi1cdGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbiYjNDM7XHRicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbiBcdHN0cnVjdCByY3VfaGVhZCByY3U7XG4gfSBfX2FsaWduZWQoOCk7XG4gXG5AQCAtNDQ3MSw3ICYjNDM7NDQ3MSw4IEBAIHN0YXRpYyB2b2lkIGJwZl90YXNrX3dvcmtfY2FsbGJhY2soc3RydWN0IGNhbGxiYWNrX2hlYWQgKmNiKVxuIFx0a2V5ID0gKHZvaWQgKiltYXBfa2V5X2Zyb21fdmFsdWUoY3R4LVx1MDAzZW1hcCwgY3R4LVx1MDAzZW1hcF92YWwsIFx1MDAyNmlkeCk7XG4gXG4gXHRtaWdyYXRlX2Rpc2FibGUoKTtcbi1cdGN0eC1cdTAwM2VjYWxsYmFja19mbihjdHgtXHUwMDNlbWFwLCBrZXksIGN0eC1cdTAwM2VtYXBfdmFsKTtcbiYjNDM7XHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwLCAodTY0KShsb25nKWtleSxcbiYjNDM7XHRcdFx0ICh1NjQpKGxvbmcpY3R4LVx1MDAzZW1hcF92YWwsIDAsIDApO1xuIFx0bWlncmF0ZV9lbmFibGUoKTtcbiBcbiBcdGJwZl90YXNrX3dvcmtfY3R4X3Jlc2V0KGN0eCk7XG5AQCAtNDU5NCw3ICYjNDM7NDU5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHggKmJwZl90YXNrX3dvcmtfYWNxdWlyZV9jdHgoc3RydWN0IGJwZl90YXNrX3dvcmtcbiB9XG4gXG4gc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxuLVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2tfZm4sXG4mIzQzO1x0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4LCBlbnVtIHRhc2tfd29ya19ub3RpZnlfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbkBAIC00NjE5LDcgJiM0Mzs0NjIwLDcgQEAgc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmtcbiBcdH1cbiBcbiBcdGN0eC1cdTAwM2V0YXNrID0gdGFzaztcbi1cdGN0eC1cdTAwM2VjYWxsYmFja19mbiA9IGNhbGxiYWNrX2ZuO1xuJiM0MztcdGN0eC1cdTAwM2VjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjtcbiBcdGN0eC1cdTAwM2Vwcm9nID0gcHJvZztcbiBcdGN0eC1cdTAwM2Vtb2RlID0gbW9kZTtcbiBcdGN0eC1cdTAwM2VtYXAgPSBtYXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwmIzM0OywKICAgICYjMzQ7YnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI5MmQwNDNkYTE0NmEwZjJiMWQyY2U3MTBkYWU4MDYxZjVlN2EzMjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGVscGVycy5jIGIva2VybmVsL2JwZi9oZWxwZXJzLmMKaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2hlbHBlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hlbHBlcnMuYwpAQCAtNDM4OCw3ICYjNDM7NDM4OCw3IEBAIHN0cnVjdCBicGZfdGFza193b3JrX2N0eCB7CiAJc3RydWN0IGJwZl9tYXAgKm1hcDsKIAl2b2lkICptYXBfdmFsOwogCWVudW0gdGFza193b3JrX25vdGlmeV9tb2RlIG1vZGU7Ci0JYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuOwomIzQzOwlicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjsKIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwogfSBfX2FsaWduZWQoOCk7CiAKQEAgLTQ0NzEsNyAmIzQzOzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYikKIAlrZXkgPSAodm9pZCAqKW1hcF9rZXlfZnJvbV92YWx1ZShjdHgtJmd0O21hcCwgY3R4LSZndDttYXBfdmFsLCAmYW1wO2lkeCk7CiAKIAltaWdyYXRlX2Rpc2FibGUoKTsKLQljdHgtJmd0O2NhbGxiYWNrX2ZuKGN0eC0mZ3Q7bWFwLCBrZXksIGN0eC0mZ3Q7bWFwX3ZhbCk7CiYjNDM7CWN0eC0mZ3Q7Y2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtJmd0O21hcCwgKHU2NCkobG9uZylrZXksCiYjNDM7CQkJICh1NjQpKGxvbmcpY3R4LSZndDttYXBfdmFsLCAwLCAwKTsKIAltaWdyYXRlX2VuYWJsZSgpOwogCiAJYnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTsKQEAgLTQ1OTQsNyAmIzQzOzQ1OTUsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrCiB9CiAKIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dywKLQkJCQkgIHN0cnVjdCBicGZfbWFwICptYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbiwKJiM0MzsJCQkJICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbiwKIAkJCQkgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCwgZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZSkKIHsKIAlzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7CkBAIC00NjE5LDcgJiM0Mzs0NjIwLDcgQEAgc3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsKIAl9CiAKIAljdHgtJmd0O3Rhc2sgPSB0YXNrOwotCWN0eC0mZ3Q7Y2FsbGJhY2tfZm4gPSBjYWxsYmFja19mbjsKJiM0MzsJY3R4LSZndDtjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjsKIAljdHgtJmd0O3Byb2cgPSBwcm9nOwogCWN0eC0mZ3Q7bW9kZSA9IG1vZGU7CiAJY3R4LSZndDttYXAgPSBtYXA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIEZ1bmN0aW9uIFNpZ25hdHVyZSBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGtlcm5lbC9icGYvaGVscGVycy5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgbXkgYXR0ZW50aW9uIOKAkyBhbnl0aGluZyBpbiB0aGUgQlBGIGhlbHBlciBzcGFjZSB3YXJyYW50cyBjYXJlZnVsIGV4YW1pbmF0aW9uLiBJIHNlZSB0aGUgY29yZSBjaGFuZ2UgaXMgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGFkanVzdG1lbnQgdG8gaG93IHRoZSBgYnBmX3Rhc2tfd29ya19jYWxsYmFja190YCBpcyBkZWZpbmVkLiBJdCYjMzk7cyBub3cgZ29pbmcgYnkgdGhlIG5hbWUgYGJwZl9jYWxsYmFja190YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHhgLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjbHVlIHNvbWV0aGluZ+KAmXMgc2hpZnRpbmcgaW4gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gc2lnbmF0dXJlcy4KClRoZSByZWFsIG1lYXQgb2YgaXQgaXMgdGhhdCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgaXMgYmVpbmcgdXBkYXRlZCB0byBwYXNzICpmaXZlKiBhcmd1bWVudHMgdG8gdGhlIGBjdHgtJmd0O2NhbGxiYWNrX2ZuYCBpbnN0ZWFkIG9mIHRoZSBvbGQgdGhyZWUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3Igb2YgYSBmdW5jdGlvbmFsIGNoYW5nZTsgYSBtb2RpZmljYXRpb24gaW4gaG93IEJQRiBjYWxsYmFja3MgYXJlIGhhbmRsZWQuIFRoZSBmdW5jdGlvbiBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIG5vdyBhY2NlcHQgYHZvaWQgKmNhbGxiYWNrX2ZuYCwgY2FzdGluZyBpdCB0byBgYnBmX2NhbGxiYWNrX3RgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgbW9yZSBnZW5lcmljLCBmbGV4aWJsZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgYmVpbmcgaW1wbGVtZW50ZWQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAsIGFzIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgYXBwZWFyIHRvIGJlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY2hhbmdlIGltcGFjdHMgZXhpc3RpbmcgQlBGIHByb2dyYW1zIHRoYXQgbWlnaHQgYmUgdXNpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LiBUaGlzIGFsbCBsb29rcyB2ZXJ5IG11Y2ggcmVsYXRlZCB0byBCUEYgdGFzayB3b3JrIGFuZCBub3cgc2VlbXMgbGlrZSBpdCBoYXMgcG90ZW50aWFsbHkgd2lkZXIgaW1wbGljYXRpb25zLgoKU2luY2UgdGhpcyBkZWFscyB3aXRoIEJQRiwgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgaXMgbGlrZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgIOKAkyBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCYjMzk7cyBlbmFibGVkIGFuZCBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIHdpdGhpbiBhbnkgc3lzdGVtcyBJJiMzOTttIGNvbmNlcm5lZCB3aXRoLiBCZXN0IHRvIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCBga2VybmVsL2JwZi9oZWxwZXJzLmNgIHRvIHNlZSB0aGUgZnVsbCBzY29wZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmM9NDU1Mj1zdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk2LVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDU5NzpzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk4LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY0MjogKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1NJR05BTFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY0My0gKiBtb2RlXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1MS0gKi9cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NTI6X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjU1LXtcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NTY6XHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9TSUdOQUwpO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1Ny19XG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1OS0vKipcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NjA6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9SRVNVTUVcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NjEtICogbW9kZVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NjktICovXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjcwOl9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzEtXHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY3My17XG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0Njc0Olx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzUtfVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipNeSBBbmFseXNpcyBvZiBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKgoKQWxyaWdodCwgc28gYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCBhcmUgYm90aCBrZnVuY3Mg4oCTIGtlcm5lbCBmdW5jdGlvbnMsIHRoYXQgaXMsIGV4cG9zZWQgZm9yIHVzZSB3aXRoaW4gQlBGIHByb2dyYW1zLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSB3b3JrLCBhbmQgSSBuZWVkIHRvIHNvbGlkaWZ5IHRoYXQgdW5kZXJzdGFuZGluZy4KClRoZSBrZXkgaXMgdGhhdCBzb21lIGNhbGxiYWNrLCBwcmVzdW1hYmx5IGRlZmluZWQgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSAob3IgcGVyaGFwcyBpbiBrZXJuZWwgc3BhY2UgYW5kIGFjY2Vzc2VkKSwgZ2V0cyBleGVjdXRlZCB3aGVuIG9uZSBvZiB0aG9zZSBzY2hlZHVsaW5nIGtmdW5jcyBpcyBjYWxsZWQuIE5vdyB0aGUgbWlsbGlvbiBkb2xsYXIgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgdGhhdCBhY3R1YWxseSBoYXBwZW4/IEFjY29yZGluZyB0byB3aGF0IEkgaGF2ZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNhbGxiYWNrIGV4ZWN1dGlvbiBoYXBwZW5zIHZpYSBhIGZ1bmN0aW9uLCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIG1lY2hhbmlzbSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgZGV0YWlscyBvZiBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4gSSBuZWVkIHRvIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gZG9lcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY2FsbGJhY2sgaXMgaW52b2tlZC4gVGltZSB0byBkaXZlIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX2NhbGxiYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oZWxwZXJzLmM9NDMxNj1fX2JwZl9rZnVuYyBpbnQgYnBmX3ZlcmlmeV9wa2NzN19zaWduYXR1cmUoY29uc3Qgc3RydWN0IGJwZl9keW5wdHIgKmRhdGFfcCxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00MzYwLVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDM2MTp0eXBlZGVmIGludCAoKmJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00MzYyLVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ0Mzg9c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYW5jZWwoc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpjdHgpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDQ0OS1cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ0NTA6c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYWxsYmFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqY2IpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NDUxLXtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NTk3PXN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjI3LVx0Y3R4LVx1MDAzZW1hcF92YWwgPSAodm9pZCAqKXR3IC0gbWFwLVx1MDAzZXJlY29yZC1cdTAwM2V0YXNrX3dvcmtfb2ZmO1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDYyODpcdGluaXRfdGFza193b3JrKFx1MDAyNmN0eC1cdTAwM2V3b3JrLCBicGZfdGFza193b3JrX2NhbGxiYWNrKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MjktXHRpbml0X2lycV93b3JrKFx1MDAyNmN0eC1cdTAwM2VpcnFfd29yaywgYnBmX3Rhc2tfd29ya19pcnEpO1xuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ2NTI9X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MzpcdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTQtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjcwPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzE6XHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjcyLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMgaW4gdGhpcyBCUEYgdGFzayB3b3JrIG1lY2hhbmlzbTogYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCwgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgYW5kIGxldCYjMzk7cyBub3QgZm9yZ2V0IHRoZSBhc3luY2hyb25vdXMgY2FsbGJhY2sgZnVuY3Rpb24sIGBicGZfdGFza193b3JrX2NhbGxiYWNrYC4gVGhlc2UgYXJlIHRoZSBjb3JlIHBsYXllcnMgaGVyZS4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsaW5nIGFuZCByZXN1bXB0aW9uIGFyZSBpbXBsZW1lbnRlZCwgYW5kIGhvdyBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlIGdpdmVuIGl0cyBhc3luY2hyb25vdXMgbmF0dXJlLiBUaGUgYXN5bmMgY2FsbGJhY2sgaXMsIGFzIGFsd2F5cywgd2hlcmUgdGhlIGZ1biBpcy4KCkJlZm9yZSBJIGdvIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIHRoaW5rIGl0JiMzOTtzIHdpc2UgdG8gcmV2aWV3IHRoZSBjb25maWdzLiBUaGF0IHdpbGwgc2V0IHRoZSBjb250ZXh0IGZvciB0aGUgYmVoYXZpb3IgYW5kIHRoZSBjb25zdHJhaW50cyB0aGF0IHRoZSBCUEYgcHJvZ3JhbSB3aWxsIG9wZXJhdGUgdW5kZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCB3aGF0IHBhcmFtZXRlcnMgYXJlIGluZmx1ZW5jaW5nIHRoZSBiZWhhdmlvci4gTm8gc2Vuc2UgaW4gc3Bpbm5pbmcgbXkgd2hlZWxzIHdpdGhvdXQgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWdzIHRlbGwgbWUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL21lZGlhL3JjL0tjb25maWc9MTc9aWYgUkNfQ09SRVxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTE4LVxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnOjE5OmNvbmZpZyBCUEZfTElSQ19NT0RFMlxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTIwLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBlQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGxpcmMgZGV2aWNlc1wmIzM0O1xuLS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzPTI0Mj1jb25maWcgUVVFVUVEX1NQSU5MT0NLU1xuLS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0NS1cbmtlcm5lbC9LY29uZmlnLmxvY2tzOjI0Njpjb25maWcgQlBGX0FSQ0hfU1BJTkxPQ0tcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0Ny1cdGJvb2xcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctMy0jIEJQRiBpbnRlcnByZXRlciB0aGF0LCBmb3IgZXhhbXBsZSwgY2xhc3NpYyBzb2NrZXQgZmlsdGVycyBkZXBlbmQgb24uXG5rZXJuZWwvYnBmL0tjb25maWc6NDpjb25maWcgQlBGXG5rZXJuZWwvYnBmL0tjb25maWctNS1cdGJvb2xcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy03Mi1cbmtlcm5lbC9icGYvS2NvbmZpZzo3Mzpjb25maWcgQlBGX1VOUFJJVl9ERUZBVUxUX09GRlxua2VybmVsL2JwZi9LY29uZmlnLTc0LVx0Ym9vbCBcJiMzNDtEaXNhYmxlIHVucHJpdmlsZWdlZCBCUEYgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZz05MD1zb3VyY2UgXCYjMzQ7a2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWdcJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy05MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo5Mjpjb25maWcgQlBGX0xTTVxua2VybmVsL2JwZi9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIExTTSBJbnN0cnVtZW50YXRpb25cJiMzNDtcbi0tXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MjptZW51Y29uZmlnIEJQRl9QUkVMT0FEXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtQcmVsb2FkIEJQRiBmaWxlIHN5c3RlbSB3aXRoIGtlcm5lbCBzcGVjaWZpYyBwcm9ncmFtIGFuZCBtYXAgaXRlcmF0b3JzXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc9MTQ9aWYgQlBGX1BSRUxPQURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjE1OmNvbmZpZyBCUEZfUFJFTE9BRF9VTURcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTE2LVx0dHJpc3RhdGUgXCYjMzQ7YnBmX3ByZWxvYWQga2VybmVsIG1vZHVsZVwmIzM0O1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnPTg2NT1jb25maWcgUFJPQkVfRVZFTlRTXG4tLVxua2VybmVsL3RyYWNlL0tjb25maWctODY3LVxua2VybmVsL3RyYWNlL0tjb25maWc6ODY4OmNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjktXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXCYjMzQ7XG4tLVxubmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcbi0tXG5uZXQvS2NvbmZpZy0zNjAtXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZy0zNjItXHRib29sIFwmIzM0O2VuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgQlBGIEhlbHBlciBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCB0aGUgcGF0Y2ggaXMgYXBwYXJlbnRseSBuZXN0bGVkIHdpdGhpbiBga2VybmVsL2JwZi9oZWxwZXJzLmNgLiBNeSBpbml0aWFsIHN0ZXAgd2lsbCBiZSB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmaWxlLiBVbmRlcnN0YW5kaW5nIHRoZSByZXF1aXJlZCBidWlsZCBmbGFncywgZXNwZWNpYWxseSB0aG9zZSByZWxhdGVkIHRvIEJQRiBmdW5jdGlvbmFsaXR5LCBpcyBjcnVjaWFsIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBoYXMgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBlbmFibGVkIHRvIHByb3Blcmx5IGFuYWx5emUgYW5kIHVuZGVyc3RhbmQgdGhlIHBhdGNoJiMzOTtzIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBUaGlzIHdpbGwgc3RyZWFtbGluZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwYXRjaCYjMzk7cyBwdXJwb3NlIGFuZCBpdHMgZXhwZWN0ZWQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZWxwZXJzXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRXhhbWluaW5nIEJQRiBUYXNrIFNjaGVkdWxpbmcgYW5kIFN5c3RlbSBDYWxscyoqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBoZXJlIGlzIGRlZmluaXRlbHkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgYSBnaXZlbi4gTm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhvc2UgdHdvIGZ1bmN0aW9ucywgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYC4gVGhvc2UgYXJlIHRoZSB3b3JraG9yc2VzIGluIHRoaXMgYXJlYSwgc28gdGhleSBuZWVkIGEgY2xvc2UgbG9vay4gSnVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbm90IG1pc3MgYW55dGhpbmcgc3VidGxlLCBsZXQmIzM5O3MgcXVpY2tseSBzY2FuIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGluIHBsYXkgb3IgcG90ZW50aWFsbHkgaW5mbHVlbmNlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYmVoYXZlLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTQ1OTc9c3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NDEtLyoqXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjQyOiAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfU0lHTkFMXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjUxLSAqL1xua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjUzLVx0XHRcdFx0XHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTg1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZSwgdXNpbmcgdGhlIGZpcnN0IHBlcnNvbiBhbmQgYWltaW5nIGZvciBhIGZ1bHNvbWUgcmVuZGVyaW5nOgoKKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb251bmRydW1zKioKCkFscmlnaHQsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIGltbWVkaWF0ZWx5IG15IG1pbmQgZ29lcyB0byBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gTXkgZmlyc3QgdGhvdWdodCBpczogYXJlIHRoZXNlIGZ1bmN0aW9ucyBwb3NzaWJseSB3cmFwcGVkIGluIGFueSBgI2lmZGVmYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcz8gSSBtZWFuLCBpdCYjMzk7cyBwcmV0dHkgY29tbW9uLCBlc3BlY2lhbGx5IGluIGNvZGViYXNlcyB0aGF0IHN1cHBvcnQgZGlmZmVyZW50IHBsYXRmb3JtcyBvciBoYXZlIGNvbmRpdGlvbmFsIGZlYXR1cmUgc2V0cy4gSWYgdGhleSAqYXJlKiBjb25kaXRpb25hbCwgdGhhdCBjaGFuZ2VzIHRoZSBlbnRpcmUgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXZlbiAqY29tcGlsZWQqIGluIHRoZSBmaXJzdCBwbGFjZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbXMsIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGNlcnRhaW4gYnVpbGRzIG9yIGVudmlyb25tZW50cy4gVGhhdCBhZmZlY3RzIGV2ZXJ5dGhpbmcgZnJvbSB0ZXN0aW5nIHN0cmF0ZWdpZXMgdG8gaW50ZWdyYXRpb24gd2l0aCBvdGhlciBtb2R1bGVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb3IgaW4vZXhjbHVzaXZpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUgaG93IHRvIHByb2NlZWQgd2l0aCBteSB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDY0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NjQwOlx0XG40NjQxOlx0LyoqXG40NjQyOlx0ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcbjQ2NDM6XHQgKiBtb2RlXG40NjQ0Olx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXG40NjQ1Olx0ICogQHR3OiBQb2ludGVyIHRvIHN0cnVjdCBicGZfdGFza193b3JrIGluIEJQRiBtYXAgdmFsdWUgZm9yIGludGVybmFsIGJvb2trZWVwaW5nXG40NjQ2Olx0ICogQG1hcF9fbWFwOiBicGZfbWFwIHRoYXQgZW1iZWRzIHN0cnVjdCBicGZfdGFza193b3JrIGluIHRoZSB2YWx1ZXNcbjQ2NDc6XHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxuNDY0ODpcdCAqIEBhdXg6IHBvaW50ZXIgdG8gYnBmX3Byb2dfYXV4IG9mIHRoZSBjYWxsZXIgQlBGIHByb2dyYW0sIGltcGxpY2l0bHkgc2V0IGJ5IHRoZSB2ZXJpZmllclxuNDY0OTpcdCAqXG40NjUwOlx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxuNDY1MTpcdCAqL1xuNDY1MjpcdF9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbjQ2NTM6XHRcdFx0XHRcdFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcbjQ2NTQ6XHRcdFx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxuNDY1NTpcdHtcbjQ2NTY6XHRcdHJldHVybiBicGZfdGFza193b3JrX3NjaGVkdWxlKHRhc2ssIHR3LCBtYXBfX21hcCwgY2FsbGJhY2ssIGF1eCwgVFdBX1NJR05BTCk7XG40NjU3Olx0fVxuNDY1ODpcdFxuNDY1OTpcdC8qKlxuNDY2MDpcdCAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfUkVTVU1FXG40NjYxOlx0ICogbW9kZVxuNDY2MjpcdCAqIEB0YXNrOiBUYXNrIHN0cnVjdCBmb3Igd2hpY2ggY2FsbGJhY2sgc2hvdWxkIGJlIHNjaGVkdWxlZFxuNDY2MzpcdCAqIEB0dzogUG9pbnRlciB0byBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiBCUEYgbWFwIHZhbHVlIGZvciBpbnRlcm5hbCBib29ra2VlcGluZ1xuNDY2NDpcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXG40NjY1Olx0ICogQGNhbGxiYWNrOiBwb2ludGVyIHRvIEJQRiBzdWJwcm9ncmFtIHRvIGNhbGxcbjQ2NjY6XHQgKiBAYXV4OiBwb2ludGVyIHRvIGJwZl9wcm9nX2F1eCBvZiB0aGUgY2FsbGVyIEJQRiBwcm9ncmFtLCBpbXBsaWNpdGx5IHNldCBieSB0aGUgdmVyaWZpZXJcbjQ2Njc6XHQgKlxuNDY2ODpcdCAqIFJldHVybjogMCBpZiB0YXNrIHdvcmsgaGFzIGJlZW4gc2NoZWR1bGVkIHN1Y2Nlc3NmdWxseSwgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2VcbjQ2Njk6XHQgKi9cbjQ2NzA6XHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG40NjcxOlx0XHRcdFx0XHRcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXG40NjcyOlx0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbjQ2NzM6XHR7XG40Njc0Olx0XHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9SRVNVTUUpO1xuNDY3NTpcdH1cbjQ2NzY6XHRcbjQ2Nzc6XHRzdGF0aWMgaW50IG1ha2VfZmlsZV9keW5wdHIoc3RydWN0IGZpbGUgKmZpbGUsIHUzMiBmbGFncywgYm9vbCBtYXlfc2xlZXAsXG40Njc4Olx0XHRcdFx0ICAgIHN0cnVjdCBicGZfZHlucHRyX2tlcm4gKnB0cilcbjQ2Nzk6XHR7XG40NjgwOlx0XHRzdHJ1Y3QgYnBmX2R5bnB0cl9maWxlX2ltcGwgKnN0YXRlO1xuNDY4MTpcdFxuNDY4MjpcdFx0LyogZmxhZ3MgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkICovXG40NjgzOlx0XHRpZiAoZmxhZ3MpIHtcbjQ2ODQ6XHRcdFx0YnBmX2R5bnB0cl9zZXRfbnVsbChwdHIpO1xuNDY4NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjQ2ODY6XHRcdH1cbjQ2ODc6XHRcbjQ2ODg6XHRcdHN0YXRlID0ga21hbGxvY19ub2xvY2soc2l6ZW9mKCpzdGF0ZSksIDAsIE5VTUFfTk9fTk9ERSk7XG40Njg5Olx0XHRpZiAoIXN0YXRlKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODUKCQkJCQkJCW91dHB1dDogMTUzCgkJCQkJCQl0aG91Z2h0czogMTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFRhc2sgV29yayBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBCUEYgdGFzayB3b3JrIHNjaGVkdWxpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGxpa2UgYCNpZmRlZmAgc3Vycm91bmRpbmcgdGhlIGtleSBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwga2VlcHMgdGhpbmdzIGNsZWFuZXIuIEl0IGxvb2tzIGxpa2UgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseS4KClRoZSBwYXRjaCBhcHBlYXJzIHRvIGJlIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgQlBGIHRhc2sgd29yayBzY2hlZHVsaW5nIGltcGxlbWVudGF0aW9uLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpa2VseSByZXNpZGVzLCBhcmUgZGVmaW5pdGVseSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBJIG5vdGVkIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIHN0YXRpYzsgdGhlcmVmb3JlLCBpdOKAmXMgbm90IGFuIGVudHJ5IHBvaW50IEkgbmVlZCB0byBleGFtaW5lIGRpcmVjdGx5LiBIb3dldmVyLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSBjYWxsZWQgd2l0aGluIHRoZSB0d28gZnVuY3Rpb25zIHRvIHdoaWNoIEkgYW0gZ2l2aW5nIHNwZWNpYWwgYXR0ZW50aW9uIHRvLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IGhpZGRlbiBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBJJiMzOTt2ZSBtaXNzZWQuIE5vcGUsIGBDT05GSUdfQlBGX1NZU0NBTExgIHNlZW1zIHRvIGJlIHN1ZmZpY2llbnQsIGFzIEkgb3JpZ2luYWxseSB0aG91Z2h0LgoKQWxyaWdodCwgdGhhdCYjMzk7cyBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93LiBJIGNhbiBwcm9jZWVkIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgZmluYWxpemUgdGhlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCYjMzQ7LAogICAgJiMzNDticGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBleGVjdXRpb24gb2YgdGhlIEJQRiB0YXNrIHdvcmsgY2FsbGJhY2suIEl0IGNoYW5nZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmcm9tIDMgdG8gNS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgZm9yIHNjaGVkdWxpbmcgdGhlc2UgY2FsbGJhY2tzIGFyZSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLCB3aGljaCBhcmUgZXhwb3NlZCBhcyBrZnVuY3MgdG8gQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsJiMzNDssCiAgICAmIzM0O2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1Mzo1Ni41MjI2NzU1ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTQ3MTI3NDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXCIsXG4gICAgXCJicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjUzOjU2LjUyMjY4MjI3NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ2MjE5NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjkyZDA0M2RhMTQ2YTBmMmIxZDJjZTcxMGRhZTgwNjFmNWU3YTMyNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAyMTo1Mzo1NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hlbHBlcnMuYyBiL2tlcm5lbC9icGYvaGVscGVycy5jXFxuaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGVscGVycy5jXFxuKysrIGIva2VybmVsL2JwZi9oZWxwZXJzLmNcXG5AQCAtNDM4OCw3ICs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcXG4gXFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcXG4gXFx0dm9pZCAqbWFwX3ZhbDtcXG4gXFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcXG4tXFx0YnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuO1xcbitcXHRicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcXG4gXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4gfSBfX2FsaWduZWQoOCk7XFxuIFxcbkBAIC00NDcxLDcgKzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYilcXG4gXFx0a2V5ID0gKHZvaWQgKiltYXBfa2V5X2Zyb21fdmFsdWUoY3R4LVxcdTAwM2VtYXAsIGN0eC1cXHUwMDNlbWFwX3ZhbCwgXFx1MDAyNmlkeCk7XFxuIFxcbiBcXHRtaWdyYXRlX2Rpc2FibGUoKTtcXG4tXFx0Y3R4LVxcdTAwM2VjYWxsYmFja19mbihjdHgtXFx1MDAzZW1hcCwga2V5LCBjdHgtXFx1MDAzZW1hcF92YWwpO1xcbitcXHRjdHgtXFx1MDAzZWNhbGxiYWNrX2ZuKCh1NjQpKGxvbmcpY3R4LVxcdTAwM2VtYXAsICh1NjQpKGxvbmcpa2V5LFxcbitcXHRcXHRcXHQgKHU2NCkobG9uZyljdHgtXFx1MDAzZW1hcF92YWwsIDAsIDApO1xcbiBcXHRtaWdyYXRlX2VuYWJsZSgpO1xcbiBcXG4gXFx0YnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTtcXG5AQCAtNDU5NCw3ICs0NTk1LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGFza193b3JrX2N0eCAqYnBmX3Rhc2tfd29ya19hY3F1aXJlX2N0eChzdHJ1Y3QgYnBmX3Rhc2tfd29ya1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuLVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmNhbGxiYWNrX2ZuLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eCwgZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7XFxuQEAgLTQ2MTksNyArNDYyMCw3IEBAIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrXFxuIFxcdH1cXG4gXFxuIFxcdGN0eC1cXHUwMDNldGFzayA9IHRhc2s7XFxuLVxcdGN0eC1cXHUwMDNlY2FsbGJhY2tfZm4gPSBjYWxsYmFja19mbjtcXG4rXFx0Y3R4LVxcdTAwM2VjYWxsYmFja19mbiA9IChicGZfY2FsbGJhY2tfdCljYWxsYmFja19mbjtcXG4gXFx0Y3R4LVxcdTAwM2Vwcm9nID0gcHJvZztcXG4gXFx0Y3R4LVxcdTAwM2Vtb2RlID0gbW9kZTtcXG4gXFx0Y3R4LVxcdTAwM2VtYXAgPSBtYXA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjUzOjU3LjA2OTU1NjQ0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI4OTI0Mzg0NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjkyZDA0M2RhMTQ2YTBmMmIxZDJjZTcxMGRhZTgwNjFmNWU3YTMyNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIxOjUzOjU1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oZWxwZXJzLmMgYi9rZXJuZWwvYnBmL2hlbHBlcnMuY1xuaW5kZXggYzE4ZjFlMTZlZGVlNGMuLjg4YjM4ZGI0N2RlOTJmIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9oZWxwZXJzLmNcbisrKyBiL2tlcm5lbC9icGYvaGVscGVycy5jXG5AQCAtNDM4OCw3ICs0Mzg4LDcgQEAgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4IHtcbiBcdHN0cnVjdCBicGZfbWFwICptYXA7XG4gXHR2b2lkICptYXBfdmFsO1xuIFx0ZW51bSB0YXNrX3dvcmtfbm90aWZ5X21vZGUgbW9kZTtcbi1cdGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFja19mbjtcbitcdGJwZl9jYWxsYmFja190IGNhbGxiYWNrX2ZuO1xuIFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbiB9IF9fYWxpZ25lZCg4KTtcbiBcbkBAIC00NDcxLDcgKzQ0NzEsOCBAQCBzdGF0aWMgdm9pZCBicGZfdGFza193b3JrX2NhbGxiYWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpjYilcbiBcdGtleSA9ICh2b2lkICopbWFwX2tleV9mcm9tX3ZhbHVlKGN0eC1cdTAwM2VtYXAsIGN0eC1cdTAwM2VtYXBfdmFsLCBcdTAwMjZpZHgpO1xuIFxuIFx0bWlncmF0ZV9kaXNhYmxlKCk7XG4tXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oY3R4LVx1MDAzZW1hcCwga2V5LCBjdHgtXHUwMDNlbWFwX3ZhbCk7XG4rXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4oKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwLCAodTY0KShsb25nKWtleSxcbitcdFx0XHQgKHU2NCkobG9uZyljdHgtXHUwMDNlbWFwX3ZhbCwgMCwgMCk7XG4gXHRtaWdyYXRlX2VuYWJsZSgpO1xuIFxuIFx0YnBmX3Rhc2tfd29ya19jdHhfcmVzZXQoY3R4KTtcbkBAIC00NTk0LDcgKzQ1OTUsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpicGZfdGFza193b3JrX2FjcXVpcmVfY3R4KHN0cnVjdCBicGZfdGFza193b3JrXG4gfVxuIFxuIHN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcbi1cdFx0XHRcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxuK1x0XHRcdFx0ICBzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICpjYWxsYmFja19mbixcbiBcdFx0XHRcdCAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4LCBlbnVtIHRhc2tfd29ya19ub3RpZnlfbW9kZSBtb2RlKVxuIHtcbiBcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbkBAIC00NjE5LDcgKzQ2MjAsNyBAQCBzdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29ya1xuIFx0fVxuIFxuIFx0Y3R4LVx1MDAzZXRhc2sgPSB0YXNrO1xuLVx0Y3R4LVx1MDAzZWNhbGxiYWNrX2ZuID0gY2FsbGJhY2tfZm47XG4rXHRjdHgtXHUwMDNlY2FsbGJhY2tfZm4gPSAoYnBmX2NhbGxiYWNrX3QpY2FsbGJhY2tfZm47XG4gXHRjdHgtXHUwMDNlcHJvZyA9IHByb2c7XG4gXHRjdHgtXHUwMDNlbW9kZSA9IG1vZGU7XG4gXHRjdHgtXHUwMDNlbWFwID0gbWFwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTM6NTcuMDY5NTU3NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxNzk0MjAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgRnVuY3Rpb24gU2lnbmF0dXJlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbiDigJMgYW55dGhpbmcgaW4gdGhlIEJQRiBoZWxwZXIgc3BhY2Ugd2FycmFudHMgY2FyZWZ1bCBleGFtaW5hdGlvbi4gSSBzZWUgdGhlIGNvcmUgY2hhbmdlIGlzIGEgc3VidGxlIGJ1dCBzaWduaWZpY2FudCBhZGp1c3RtZW50IHRvIGhvdyB0aGUgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdGAgaXMgZGVmaW5lZC4gSXQncyBub3cgZ29pbmcgYnkgdGhlIG5hbWUgYGJwZl9jYWxsYmFja190YCB3aXRoaW4gdGhlIGBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHhgLiBUaGF0J3MgdGhlIGZpcnN0IGNsdWUgc29tZXRoaW5n4oCZcyBzaGlmdGluZyBpbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBzaWduYXR1cmVzLlxuXG5UaGUgcmVhbCBtZWF0IG9mIGl0IGlzIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIGJlaW5nIHVwZGF0ZWQgdG8gcGFzcyAqZml2ZSogYXJndW1lbnRzIHRvIHRoZSBgY3R4LVx1MDAzZWNhbGxiYWNrX2ZuYCBpbnN0ZWFkIG9mIHRoZSBvbGQgdGhyZWUuIFRoaXMgaXMgYSBjbGVhciBpbmRpY2F0b3Igb2YgYSBmdW5jdGlvbmFsIGNoYW5nZTsgYSBtb2RpZmljYXRpb24gaW4gaG93IEJQRiBjYWxsYmFja3MgYXJlIGhhbmRsZWQuIFRoZSBmdW5jdGlvbiBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZWAgaXMgYWxzbyBiZWluZyB1cGRhdGVkIHRvIG5vdyBhY2NlcHQgYHZvaWQgKmNhbGxiYWNrX2ZuYCwgY2FzdGluZyBpdCB0byBgYnBmX2NhbGxiYWNrX3RgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgbW9yZSBnZW5lcmljLCBmbGV4aWJsZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgYmVpbmcgaW1wbGVtZW50ZWQuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlYCwgYXMgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBhcHBlYXIgdG8gYmUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyBleGlzdGluZyBCUEYgcHJvZ3JhbXMgdGhhdCBtaWdodCBiZSB1c2luZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoaXMgYWxsIGxvb2tzIHZlcnkgbXVjaCByZWxhdGVkIHRvIEJQRiB0YXNrIHdvcmsgYW5kIG5vdyBzZWVtcyBsaWtlIGl0IGhhcyBwb3RlbnRpYWxseSB3aWRlciBpbXBsaWNhdGlvbnMuXG5cblNpbmNlIHRoaXMgZGVhbHMgd2l0aCBCUEYsIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIGlzIGxpa2VseSBgQ09ORklHX0JQRl9TWVNDQUxMYCDigJMgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCdzIGVuYWJsZWQgYW5kIGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGFueSBzeXN0ZW1zIEknbSBjb25jZXJuZWQgd2l0aC4gQmVzdCB0byBzdGFydCBieSBsb29raW5nIGNsb3NlbHkgYXQgYGtlcm5lbC9icGYvaGVscGVycy5jYCB0byBzZWUgdGhlIGZ1bGwgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDowMS45ODc1MDIyMDZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE4OTU2MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuYz00NTUyPXN0YXRpYyBzdHJ1Y3QgYnBmX3Rhc2tfd29ya19jdHggKmJwZl90YXNrX3dvcmtfYWNxdWlyZV9jdHgoc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDU5Ni1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NTk3OnN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NTk4LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqY2FsbGJhY2tfZm4sXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NDI6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTEtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1NS17XFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1NjpcXHRyZXR1cm4gYnBmX3Rhc2tfd29ya19zY2hlZHVsZSh0YXNrLCB0dywgbWFwX19tYXAsIGNhbGxiYWNrLCBhdXgsIFRXQV9TSUdOQUwpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTctfVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1OS0vKipcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjYwOiAqIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lIC0gU2NoZWR1bGUgQlBGIGNhbGxiYWNrIHVzaW5nIHRhc2tfd29ya19hZGQgd2l0aCBUV0FfUkVTVU1FXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY2MS0gKiBtb2RlXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjY5LSAqL1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzA6X19icGZfa2Z1bmMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdm9pZCAqbWFwX19tYXAsIGJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCBjYWxsYmFjayxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NzMte1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NzQ6XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00Njc1LX1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5NjY9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2ODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2R5bnB0cl9mcm9tX2ZpbGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjAyLjA0OTQwMjA2OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDYzNjY4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipNeSBBbmFseXNpcyBvZiBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcqKlxuXG5BbHJpZ2h0LCBzbyBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgIGFyZSBib3RoIGtmdW5jcyDigJMga2VybmVsIGZ1bmN0aW9ucywgdGhhdCBpcywgZXhwb3NlZCBmb3IgdXNlIHdpdGhpbiBCUEYgcHJvZ3JhbXMuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIFRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugd29yaywgYW5kIEkgbmVlZCB0byBzb2xpZGlmeSB0aGF0IHVuZGVyc3RhbmRpbmcuXG5cblRoZSBrZXkgaXMgdGhhdCBzb21lIGNhbGxiYWNrLCBwcmVzdW1hYmx5IGRlZmluZWQgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSAob3IgcGVyaGFwcyBpbiBrZXJuZWwgc3BhY2UgYW5kIGFjY2Vzc2VkKSwgZ2V0cyBleGVjdXRlZCB3aGVuIG9uZSBvZiB0aG9zZSBzY2hlZHVsaW5nIGtmdW5jcyBpcyBjYWxsZWQuIE5vdyB0aGUgbWlsbGlvbiBkb2xsYXIgcXVlc3Rpb24gaXMsIHdoZXJlIGRvZXMgdGhhdCBhY3R1YWxseSBoYXBwZW4/IEFjY29yZGluZyB0byB3aGF0IEkgaGF2ZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNhbGxiYWNrIGV4ZWN1dGlvbiBoYXBwZW5zIHZpYSBhIGZ1bmN0aW9uLCBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFNvLCB0byByZWFsbHkgdW5kZXJzdGFuZCB0aGlzIG1lY2hhbmlzbSwgSSBuZWVkIHRvIGNoZWNrIG91dCB0aGUgZGV0YWlscyBvZiBgYnBmX3Rhc2tfd29ya19jYWxsYmFja2AuIFRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJIG5lZWQgdG8gc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBkb2VzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBjYWxsYmFjayBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MDUuNDk1NzcyNjI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODM0NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90YXNrX3dvcmtfY2FsbGJhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDMxNj1fX2JwZl9rZnVuYyBpbnQgYnBmX3ZlcmlmeV9wa2NzN19zaWduYXR1cmUoY29uc3Qgc3RydWN0IGJwZl9keW5wdHIgKmRhdGFfcCxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQzNjAtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDM2MTp0eXBlZGVmIGludCAoKmJwZl90YXNrX3dvcmtfY2FsbGJhY2tfdCkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDM2Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ0Mzg9c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYW5jZWwoc3RydWN0IGJwZl90YXNrX3dvcmtfY3R4ICpjdHgpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NDQ5LVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ0NTA6c3RhdGljIHZvaWQgYnBmX3Rhc2tfd29ya19jYWxsYmFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqY2IpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDQ1MS17XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NTk3PXN0YXRpYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MjctXFx0Y3R4LVxcdTAwM2VtYXBfdmFsID0gKHZvaWQgKil0dyAtIG1hcC1cXHUwMDNlcmVjb3JkLVxcdTAwM2V0YXNrX3dvcmtfb2ZmO1xcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2Mjg6XFx0aW5pdF90YXNrX3dvcmsoXFx1MDAyNmN0eC1cXHUwMDNld29yaywgYnBmX3Rhc2tfd29ya19jYWxsYmFjayk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYyOS1cXHRpbml0X2lycV93b3JrKFxcdTAwMjZjdHgtXFx1MDAzZWlycV93b3JrLCBicGZfdGFza193b3JrX2lycSk7XFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjUyPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjUzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1NC1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00NjcwPV9fYnBmX2tmdW5jIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBicGZfdGFza193b3JrICp0dyxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjcxOlxcdFxcdFxcdFxcdFxcdCAgICAgIHZvaWQgKm1hcF9fbWFwLCBicGZfdGFza193b3JrX2NhbGxiYWNrX3QgY2FsbGJhY2ssXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY3Mi1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjA1LjU1NDYxMTg1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MjY5OTQ2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gQlBGIFRhc2sgV29yayBTY2hlZHVsaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMgaW4gdGhpcyBCUEYgdGFzayB3b3JrIG1lY2hhbmlzbTogYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCwgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgYW5kIGxldCdzIG5vdCBmb3JnZXQgdGhlIGFzeW5jaHJvbm91cyBjYWxsYmFjayBmdW5jdGlvbiwgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcGxheWVycyBoZXJlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgc2NoZWR1bGluZyBhbmQgcmVzdW1wdGlvbiBhcmUgaW1wbGVtZW50ZWQsIGFuZCBob3cgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGZpdHMgaW50byB0aGUgcGljdHVyZSBnaXZlbiBpdHMgYXN5bmNocm9ub3VzIG5hdHVyZS4gVGhlIGFzeW5jIGNhbGxiYWNrIGlzLCBhcyBhbHdheXMsIHdoZXJlIHRoZSBmdW4gaXMuXG5cbkJlZm9yZSBJIGdvIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBJIHRoaW5rIGl0J3Mgd2lzZSB0byByZXZpZXcgdGhlIGNvbmZpZ3MuIFRoYXQgd2lsbCBzZXQgdGhlIGNvbnRleHQgZm9yIHRoZSBiZWhhdmlvciBhbmQgdGhlIGNvbnN0cmFpbnRzIHRoYXQgdGhlIEJQRiBwcm9ncmFtIHdpbGwgb3BlcmF0ZSB1bmRlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGFyZSBpbmZsdWVuY2luZyB0aGUgYmVoYXZpb3IuIE5vIHNlbnNlIGluIHNwaW5uaW5nIG15IHdoZWVscyB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZ3MgdGVsbCBtZSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjA4LjkwNzMxNDI4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA2ODIyODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZz0xNz1pZiBSQ19DT1JFXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZzoxOTpjb25maWcgQlBGX0xJUkNfTU9ERTJcXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgZUJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBsaXJjIGRldmljZXNcXFwiXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcz0yNDI9Y29uZmlnIFFVRVVFRF9TUElOTE9DS1NcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0NS1cXG5rZXJuZWwvS2NvbmZpZy5sb2NrczoyNDY6Y29uZmlnIEJQRl9BUkNIX1NQSU5MT0NLXFxua2VybmVsL0tjb25maWcubG9ja3MtMjQ3LVxcdGJvb2xcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy0zLSMgQlBGIGludGVycHJldGVyIHRoYXQsIGZvciBleGFtcGxlLCBjbGFzc2ljIHNvY2tldCBmaWx0ZXJzIGRlcGVuZCBvbi5cXG5rZXJuZWwvYnBmL0tjb25maWc6NDpjb25maWcgQlBGXFxua2VybmVsL2JwZi9LY29uZmlnLTUtXFx0Ym9vbFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIlBlcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy03Mi1cXG5rZXJuZWwvYnBmL0tjb25maWc6NzM6Y29uZmlnIEJQRl9VTlBSSVZfREVGQVVMVF9PRkZcXG5rZXJuZWwvYnBmL0tjb25maWctNzQtXFx0Ym9vbCBcXFwiRGlzYWJsZSB1bnByaXZpbGVnZWQgQlBGIGJ5IGRlZmF1bHRcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9OTA9c291cmNlIFxcXCJrZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZ1xcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctOTEtXFxua2VybmVsL2JwZi9LY29uZmlnOjkyOmNvbmZpZyBCUEZfTFNNXFxua2VybmVsL2JwZi9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblxcXCJcXG4tLVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MjptZW51Y29uZmlnIEJQRl9QUkVMT0FEXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMy1cXHRib29sIFxcXCJQcmVsb2FkIEJQRiBmaWxlIHN5c3RlbSB3aXRoIGtlcm5lbCBzcGVjaWZpYyBwcm9ncmFtIGFuZCBtYXAgaXRlcmF0b3JzXFxcIlxcbi0tXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc9MTQ9aWYgQlBGX1BSRUxPQURcXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoxNTpjb25maWcgQlBGX1BSRUxPQURfVU1EXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMTYtXFx0dHJpc3RhdGUgXFxcImJwZl9wcmVsb2FkIGtlcm5lbCBtb2R1bGVcXFwiXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTQtXFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9ODY1PWNvbmZpZyBQUk9CRV9FVkVOVFNcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2Ny1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4Njg6Y29uZmlnIEJQRl9LUFJPQkVfT1ZFUlJJREVcXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjktXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBwcm9ncmFtcyB0byBvdmVycmlkZSBhIGtwcm9iZWQgZnVuY3Rpb25cXFwiXFxuLS1cXG5uZXQvS2NvbmZpZz0zNTQ9Y29uZmlnIEJRTFxcbi0tXFxubmV0L0tjb25maWctMzYwLVxcbm5ldC9LY29uZmlnOjM2MTpjb25maWcgQlBGX1NUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZy0zNjItXFx0Ym9vbCBcXFwiZW5hYmxlIEJQRiBTVFJFQU1fUEFSU0VSXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDoxMS43MTQxNDI1NzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA2NjU0NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgQlBGIEhlbHBlciBGdW5jdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBwYXRjaCBpcyBhcHBhcmVudGx5IG5lc3RsZWQgd2l0aGluIGBrZXJuZWwvYnBmL2hlbHBlcnMuY2AuIE15IGluaXRpYWwgc3RlcCB3aWxsIGJlIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBuZWNlc3Nhcnkga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGZpbGUuIFVuZGVyc3RhbmRpbmcgdGhlIHJlcXVpcmVkIGJ1aWxkIGZsYWdzLCBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gQlBGIGZ1bmN0aW9uYWxpdHksIGlzIGNydWNpYWwgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSBuZWVkIHRvIGVuc3VyZSB0aGUgdGFyZ2V0IGVudmlyb25tZW50IGhhcyBhbGwgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGVuYWJsZWQgdG8gcHJvcGVybHkgYW5hbHl6ZSBhbmQgdW5kZXJzdGFuZCB0aGUgcGF0Y2gncyBpbnRlZ3JhdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgQlBGIGVjb3N5c3RlbS4gVGhpcyB3aWxsIHN0cmVhbWxpbmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcGF0Y2gncyBwdXJwb3NlIGFuZCBpdHMgZXhwZWN0ZWQgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjA3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MTQuNTIwNzk5MDg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg0OTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoZWxwZXJzXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMTo1NDoxNC41ODA2NTQ5MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1ODM3OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgQlBGIFRhc2sgU2NoZWR1bGluZyBhbmQgU3lzdGVtIENhbGxzKipcblxuQWxyaWdodCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgaGVyZSBpcyBkZWZpbml0ZWx5IGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgYSBnaXZlbi4gTm93LCBJJ20gemVyb2luZyBpbiBvbiB0aG9zZSB0d28gZnVuY3Rpb25zLCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBUaG9zZSBhcmUgdGhlIHdvcmtob3JzZXMgaW4gdGhpcyBhcmVhLCBzbyB0aGV5IG5lZWQgYSBjbG9zZSBsb29rLiBKdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBub3QgbWlzcyBhbnl0aGluZyBzdWJ0bGUsIGxldCdzIHF1aWNrbHkgc2NhbiB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSBpbiBwbGF5IG9yIHBvdGVudGlhbGx5IGluZmx1ZW5jZSBob3cgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIxOjU0OjE3LjQ1NjQ5NTA2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2NTc3MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDU5Nz1zdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQxLS8qKlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2NDI6ICogYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwgLSBTY2hlZHVsZSBCUEYgY2FsbGJhY2sgdXNpbmcgdGFza193b3JrX2FkZCB3aXRoIFRXQV9TSUdOQUxcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00NjQzLSAqIG1vZGVcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2NTEtICovXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDY1MjpfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDY1My1cXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Nj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MTcuNTE1MTU3NjI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjAyMDMwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRob3NlIHRob3VnaHRzIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmUsIHVzaW5nIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFpbWluZyBmb3IgYSBmdWxzb21lIHJlbmRlcmluZzpcblxuKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb251bmRydW1zKipcblxuQWxyaWdodCwgSSdtIHRha2luZyBhIGxvb2sgYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCBpbW1lZGlhdGVseSBteSBtaW5kIGdvZXMgdG8gcG90ZW50aWFsIGVkZ2UgY2FzZXMuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVzZSBmdW5jdGlvbnMgcG9zc2libHkgd3JhcHBlZCBpbiBhbnkgYCNpZmRlZmAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXM/IEkgbWVhbiwgaXQncyBwcmV0dHkgY29tbW9uLCBlc3BlY2lhbGx5IGluIGNvZGViYXNlcyB0aGF0IHN1cHBvcnQgZGlmZmVyZW50IHBsYXRmb3JtcyBvciBoYXZlIGNvbmRpdGlvbmFsIGZlYXR1cmUgc2V0cy4gSWYgdGhleSAqYXJlKiBjb25kaXRpb25hbCwgdGhhdCBjaGFuZ2VzIHRoZSBlbnRpcmUgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXZlbiAqY29tcGlsZWQqIGluIHRoZSBmaXJzdCBwbGFjZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50IGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbXMsIG9yIHBlcmhhcHMgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMgYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZD8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIGNlcnRhaW4gYnVpbGRzIG9yIGVudmlyb25tZW50cy4gVGhhdCBhZmZlY3RzIGV2ZXJ5dGhpbmcgZnJvbSB0ZXN0aW5nIHN0cmF0ZWdpZXMgdG8gaW50ZWdyYXRpb24gd2l0aCBvdGhlciBtb2R1bGVzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb3IgaW4vZXhjbHVzaXZpdHkgb2YgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGVyZWZvcmUgaG93IHRvIHByb2NlZWQgd2l0aCBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTg1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjAuNzc1MzYyOTA5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hlbHBlcnMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NjQwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0NjQwOlxcdFxcbjQ2NDE6XFx0LyoqXFxuNDY0MjpcXHQgKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1NJR05BTFxcbjQ2NDM6XFx0ICogbW9kZVxcbjQ2NDQ6XFx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXFxuNDY0NTpcXHQgKiBAdHc6IFBvaW50ZXIgdG8gc3RydWN0IGJwZl90YXNrX3dvcmsgaW4gQlBGIG1hcCB2YWx1ZSBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmdcXG40NjQ2OlxcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXFxuNDY0NzpcXHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxcbjQ2NDg6XFx0ICogQGF1eDogcG9pbnRlciB0byBicGZfcHJvZ19hdXggb2YgdGhlIGNhbGxlciBCUEYgcHJvZ3JhbSwgaW1wbGljaXRseSBzZXQgYnkgdGhlIHZlcmlmaWVyXFxuNDY0OTpcXHQgKlxcbjQ2NTA6XFx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxcbjQ2NTE6XFx0ICovXFxuNDY1MjpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuNDY1MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbjQ2NTQ6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbjQ2NTU6XFx0e1xcbjQ2NTY6XFx0XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfU0lHTkFMKTtcXG40NjU3OlxcdH1cXG40NjU4OlxcdFxcbjQ2NTk6XFx0LyoqXFxuNDY2MDpcXHQgKiBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSAtIFNjaGVkdWxlIEJQRiBjYWxsYmFjayB1c2luZyB0YXNrX3dvcmtfYWRkIHdpdGggVFdBX1JFU1VNRVxcbjQ2NjE6XFx0ICogbW9kZVxcbjQ2NjI6XFx0ICogQHRhc2s6IFRhc2sgc3RydWN0IGZvciB3aGljaCBjYWxsYmFjayBzaG91bGQgYmUgc2NoZWR1bGVkXFxuNDY2MzpcXHQgKiBAdHc6IFBvaW50ZXIgdG8gc3RydWN0IGJwZl90YXNrX3dvcmsgaW4gQlBGIG1hcCB2YWx1ZSBmb3IgaW50ZXJuYWwgYm9va2tlZXBpbmdcXG40NjY0OlxcdCAqIEBtYXBfX21hcDogYnBmX21hcCB0aGF0IGVtYmVkcyBzdHJ1Y3QgYnBmX3Rhc2tfd29yayBpbiB0aGUgdmFsdWVzXFxuNDY2NTpcXHQgKiBAY2FsbGJhY2s6IHBvaW50ZXIgdG8gQlBGIHN1YnByb2dyYW0gdG8gY2FsbFxcbjQ2NjY6XFx0ICogQGF1eDogcG9pbnRlciB0byBicGZfcHJvZ19hdXggb2YgdGhlIGNhbGxlciBCUEYgcHJvZ3JhbSwgaW1wbGljaXRseSBzZXQgYnkgdGhlIHZlcmlmaWVyXFxuNDY2NzpcXHQgKlxcbjQ2Njg6XFx0ICogUmV0dXJuOiAwIGlmIHRhc2sgd29yayBoYXMgYmVlbiBzY2hlZHVsZWQgc3VjY2Vzc2Z1bGx5LCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZVxcbjQ2Njk6XFx0ICovXFxuNDY3MDpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXFxuNDY3MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB2b2lkICptYXBfX21hcCwgYnBmX3Rhc2tfd29ya19jYWxsYmFja190IGNhbGxiYWNrLFxcbjQ2NzI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbjQ2NzM6XFx0e1xcbjQ2NzQ6XFx0XFx0cmV0dXJuIGJwZl90YXNrX3dvcmtfc2NoZWR1bGUodGFzaywgdHcsIG1hcF9fbWFwLCBjYWxsYmFjaywgYXV4LCBUV0FfUkVTVU1FKTtcXG40Njc1OlxcdH1cXG40Njc2OlxcdFxcbjQ2Nzc6XFx0c3RhdGljIGludCBtYWtlX2ZpbGVfZHlucHRyKHN0cnVjdCBmaWxlICpmaWxlLCB1MzIgZmxhZ3MsIGJvb2wgbWF5X3NsZWVwLFxcbjQ2Nzg6XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfZHlucHRyX2tlcm4gKnB0cilcXG40Njc5OlxcdHtcXG40NjgwOlxcdFxcdHN0cnVjdCBicGZfZHlucHRyX2ZpbGVfaW1wbCAqc3RhdGU7XFxuNDY4MTpcXHRcXG40NjgyOlxcdFxcdC8qIGZsYWdzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCAqL1xcbjQ2ODM6XFx0XFx0aWYgKGZsYWdzKSB7XFxuNDY4NDpcXHRcXHRcXHRicGZfZHlucHRyX3NldF9udWxsKHB0cik7XFxuNDY4NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG40Njg2OlxcdFxcdH1cXG40Njg3OlxcdFxcbjQ2ODg6XFx0XFx0c3RhdGUgPSBrbWFsbG9jX25vbG9jayhzaXplb2YoKnN0YXRlKSwgMCwgTlVNQV9OT19OT0RFKTtcXG40Njg5OlxcdFxcdGlmICghc3RhdGUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjAuNzc1NTU3OTI4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNDA0MjQwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVGFzayBXb3JrIFNjaGVkdWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBCUEYgdGFzayB3b3JrIHNjaGVkdWxpbmcuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSBubyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGxpa2UgYCNpZmRlZmAgc3Vycm91bmRpbmcgdGhlIGtleSBmdW5jdGlvbnMuIFRoYXQncyBnb29kLCBrZWVwcyB0aGluZ3MgY2xlYW5lci4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LlxuXG5UaGUgcGF0Y2ggYXBwZWFycyB0byBiZSBmdW5jdGlvbmFsOyBpdCdzIG1vZGlmeWluZyB0aGUgQlBGIHRhc2sgd29yayBzY2hlZHVsaW5nIGltcGxlbWVudGF0aW9uLiBUaGUgY3JpdGljYWwgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIGxpa2VseSByZXNpZGVzLCBhcmUgZGVmaW5pdGVseSBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxgIGFuZCBgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWVgLiBJIG5vdGVkIHRoYXQgYGJwZl90YXNrX3dvcmtfY2FsbGJhY2tgIGlzIHN0YXRpYzsgdGhlcmVmb3JlLCBpdOKAmXMgbm90IGFuIGVudHJ5IHBvaW50IEkgbmVlZCB0byBleGFtaW5lIGRpcmVjdGx5LiBIb3dldmVyLCBpdCdzIHZlcnkgbGlrZWx5IGNhbGxlZCB3aXRoaW4gdGhlIHR3byBmdW5jdGlvbnMgdG8gd2hpY2ggSSBhbSBnaXZpbmcgc3BlY2lhbCBhdHRlbnRpb24gdG8uXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGJhc2UgdG8gY29uZmlybSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgaGlkZGVuIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIEkndmUgbWlzc2VkLiBOb3BlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBzZWVtcyB0byBiZSBzdWZmaWNpZW50LCBhcyBJIG9yaWdpbmFsbHkgdGhvdWdodC5cblxuQWxyaWdodCwgdGhhdCdzIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGtub3cuIEkgY2FuIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIGFuZCBmaW5hbGl6ZSB0aGUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODUsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjE6NTQ6MjUuOTE1OTg0MTYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NTMxODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxcIixcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgZXhlY3V0aW9uIG9mIHRoZSBCUEYgdGFzayB3b3JrIGNhbGxiYWNrLiBJdCBjaGFuZ2VzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZnJvbSAzIHRvIDUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtLiBUaGUgZW50cnkgcG9pbnRzIGZvciBzY2hlZHVsaW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsYCBhbmQgYGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lYCwgd2hpY2ggYXJlIGV4cG9zZWQgYXMga2Z1bmNzIHRvIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXCIsXG4gICAgXCJicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGV4ZWN1dGlvbiBvZiB0aGUgQlBGIHRhc2sgd29yayBjYWxsYmFjay4gSXQgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gMyB0byA1LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbS4gVGhlIGVudHJ5IHBvaW50cyBmb3Igc2NoZWR1bGluZyB0aGVzZSBjYWxsYmFja3MgYXJlIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbGAgYW5kIGBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZWAsIHdoaWNoIGFyZSBleHBvc2VkIGFzIGtmdW5jcyB0byBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[1] Phase: Succeeded StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-25 21:57:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-25 21:57:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2] Phase: Succeeded StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-25 22:00:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 21:57:04 +0000 UTC FinishedAt: 2026-07-25 21:57:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl89sv/series-workflowl89sv-convert-artifact-4186785283/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 22:00:05 +0000 UTC FinishedAt: 2026-07-25 22:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 22:00:05 +0000 UTC FinishedAt: 2026-07-25 22:50:11 +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:*b786ee2e-54ef-42a2-8e93-d0e05f57ae0b,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-workflowl89sv/series-workflowl89sv-convert-artifact-4186785283/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": "c268e40d-0c4a-4bec-98eb-26c2281dac36", "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-workflowl89sv/series-workflowl89sv-build-action-2277504625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 22:00:05 +0000 UTC FinishedAt: 2026-07-25 22:49:45 +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:*b786ee2e-54ef-42a2-8e93-d0e05f57ae0b,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-workflowl89sv/series-workflowl89sv-convert-artifact-4186785283/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": "c268e40d-0c4a-4bec-98eb-26c2281dac36", "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-workflowl89sv/series-workflowl89sv-build-action-2277504625/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 22:50:11 +0000 UTC FinishedAt: 2026-07-25 22:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 22:50:11 +0000 UTC FinishedAt: 2026-07-25 22:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 22:50:11 +0000 UTC FinishedAt: 2026-07-25 22:50:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 22:50:11 +0000 UTC FinishedAt: 2026-07-25 22:50:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowl89sv/series-workflowl89sv-convert-artifact-629230778/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 22:50:32 +0000 UTC FinishedAt: 2026-07-25 22:52:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 22:50:32 +0000 UTC FinishedAt: 2026-07-25 22:52:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c268e40d-0c4a-4bec-98eb-26c2281dac36,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-workflowl89sv/series-workflowl89sv-build-action-2277504625/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-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 22:52:37 +0000 UTC FinishedAt: 2026-07-25 22:52:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 22:52:37 +0000 UTC FinishedAt: 2026-07-25 22:52:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 22:52:37 +0000 UTC FinishedAt: 2026-07-25 23:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 22:52:37 +0000 UTC FinishedAt: 2026-07-25 23:29:06 +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:*b786ee2e-54ef-42a2-8e93-d0e05f57ae0b,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-workflowl89sv/series-workflowl89sv-convert-artifact-629230778/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": "dd901e75-d76e-43f4-bee4-9eb6d5c277f9", "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-workflowl89sv/series-workflowl89sv-build-action-3098540830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 22:52:37 +0000 UTC FinishedAt: 2026-07-25 23:28:56 +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:*b786ee2e-54ef-42a2-8e93-d0e05f57ae0b,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-workflowl89sv/series-workflowl89sv-convert-artifact-629230778/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": "dd901e75-d76e-43f4-bee4-9eb6d5c277f9", "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-workflowl89sv/series-workflowl89sv-build-action-3098540830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 23:29:06 +0000 UTC FinishedAt: 2026-07-25 23:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 23:29:06 +0000 UTC FinishedAt: 2026-07-25 23:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 23:29:06 +0000 UTC FinishedAt: 2026-07-25 23:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 23:29:06 +0000 UTC FinishedAt: 2026-07-25 23:30:58 +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:*dd901e75-d76e-43f4-bee4-9eb6d5c277f9,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-workflowl89sv/series-workflowl89sv-build-action-3098540830/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-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"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:*c268e40d-0c4a-4bec-98eb-26c2281dac36,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd901e75-d76e-43f4-bee4-9eb6d5c277f9,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-workflowl89sv/series-workflowl89sv-build-action-2277504625/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-workflowl89sv/series-workflowl89sv-build-action-3098540830/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-25 23:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-25 23:31:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"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-workflowl89sv/series-workflowl89sv-convert-artifact-4228257519/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-25 23:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-25 23:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 23:31:08 +0000 UTC FinishedAt: 2026-07-25 23:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 23:31:18 +0000 UTC FinishedAt: 2026-07-26 02:32:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl89sv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_task_work_schedule_signal","bpf_task_work_schedule_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"59f92fa9-28e3-4b7a-91f1-36f5b22e1162","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 23:31:18 +0000 UTC FinishedAt: 2026-07-26 02:32:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c268e40d-0c4a-4bec-98eb-26c2281dac36,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd901e75-d76e-43f4-bee4-9eb6d5c277f9,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-workflowl89sv/series-workflowl89sv-build-action-2277504625/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-workflowl89sv/series-workflowl89sv-build-action-3098540830/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-workflowl89sv/series-workflowl89sv-convert-artifact-4228257519/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,}