Name: series-workflow8pddt Phase: Succeeded StartedAt: 2026-08-04 11:48:55 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[0] Phase: Succeeded StartedAt: 2026-08-04 11:48:55 +0000 UTC FinishedAt: 2026-08-04 12:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 11:48:55 +0000 UTC FinishedAt: 2026-08-04 12:16:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "974d0be0cb8e48d63b9d413a2e1a8fba16cd2583", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "974d0be0cb8e48d63b9d413a2e1a8fba16cd2583", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "7b906041-0d7c-46b2-babf-cb64ec558a94" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_mark_iloc_dirty", "ext4_fc_replay", "ext4_fc_replay_inode", "ext4_fc_replay_create", "ext4_fc_replay_link", "ext4_fc_replay_unlink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X21hcmtfaWxvY19kaXJ0eSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9pbm9kZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfbGluayYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDEyOjE1OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggN2ExZjk2MWNkMTFjZS4uMTJmZjg0YWI1NzQxZCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNjQwOCw5ICYjNDM7NjQwOCwxMCBAQCBpbnQgZXh0NF9jaHVua190cmFuc19ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKVxuIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxuIFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdGludCBlcnIgPSAwO1xuIFxuLVx0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpO1xuIFx0aWYgKHVubGlrZWx5KGVycikpIHtcbiBcdFx0cHV0X2JoKGlsb2MtXHUwMDNlYmgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuQEAgLTY0MjUsOSAmIzQzOzY0MjYsMTMgQEAgaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG4gXHRwdXRfYmgoaWxvYy1cdTAwM2ViaCk7XG4gXHQvKlxuIFx0ICogTWFyayB0aGF0IHRoZXJlJiMzOTtzIG1ldGFkYXRhIHdyaXRlb3V0IHBlbmRpbmcgZm9yIHRoZSBpbm9kZSBzbyB0aGF0IGl0XG4tXHQgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuXG4mIzQzO1x0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLiBXZSBkb24mIzM5O3QgYm90aGVyIGZvclxuJiM0MztcdCAqIGZhc3Rjb21taXQgcmVwbGF5IGFzIHRoYXQgZmx1c2hlcyB0aGUgd2hvbGUgYmRldiBhZnRlcndhcmRzIGFueXdheS5cbiYjNDM7XHQgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaFxuJiM0MztcdCAqIGFyZW4mIzM5O3QgZnVsbHkgaW5pdGlhbGl6ZWQgeWV0LlxuIFx0ICovXG4tXHRpZiAoIUVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19qb3VybmFsKSB7XG4mIzQzO1x0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhKEVYVDRfU0Ioc2IpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xuIFx0XHQvKlxuIFx0XHQgKiBJbm9kZSBkaWRuJiMzOTt0IG5lZWQgdG8gZ28gdGhyb3VnaCBkaXJ0eWluZywgbWFrZSBzdXJlIGl0IGlzXG4gXHRcdCAqIGF0dGFjaGVkIHRvIHdiIHNvIHRoYXQgd3JpdGViYWNrIGNhbiBoYW5kbGUgaXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X21hcmtfaWxvY19kaXJ0eSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9pbm9kZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfbGluayYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDEyOjE1OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IDdhMWY5NjFjZDExY2UuLjEyZmY4NGFiNTc0MWQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTY0MDgsOSAmIzQzOzY0MDgsMTAgQEAgaW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcykKIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLAogCQkJIHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpCiB7CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAlpbnQgZXJyID0gMDsKIAotCWVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKGlub2RlLSZndDtpX3NiKTsKJiM0MzsJZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpOwogCWlmICh1bmxpa2VseShlcnIpKSB7CiAJCXB1dF9iaChpbG9jLSZndDtiaCk7CiAJCXJldHVybiBlcnI7CkBAIC02NDI1LDkgJiM0Mzs2NDI2LDEzIEBAIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLAogCXB1dF9iaChpbG9jLSZndDtiaCk7CiAJLyoKIAkgKiBNYXJrIHRoYXQgdGhlcmUmIzM5O3MgbWV0YWRhdGEgd3JpdGVvdXQgcGVuZGluZyBmb3IgdGhlIGlub2RlIHNvIHRoYXQgaXQKLQkgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuCiYjNDM7CSAqIGdldHMgcHJvcGVybHkgZmx1c2hlZCBvbiBmc3luYygyKSBhbmQgc2ltaWxhci4gV2UgZG9uJiMzOTt0IGJvdGhlciBmb3IKJiM0MzsJICogZmFzdGNvbW1pdCByZXBsYXkgYXMgdGhhdCBmbHVzaGVzIHRoZSB3aG9sZSBiZGV2IGFmdGVyd2FyZHMgYW55d2F5LgomIzQzOwkgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaAomIzQzOwkgKiBhcmVuJiMzOTt0IGZ1bGx5IGluaXRpYWxpemVkIHlldC4KIAkgKi8KLQlpZiAoIUVYVDRfU0IoaW5vZGUtJmd0O2lfc2IpLSZndDtzX2pvdXJuYWwpIHsKJiM0MzsJaWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpICZhbXA7JmFtcDsKJiM0MzsJICAgICEoRVhUNF9TQihzYiktJmd0O3NfbW91bnRfc3RhdGUgJmFtcDsgRVhUNF9GQ19SRVBMQVkpKSB7CiAJCS8qCiAJCSAqIElub2RlIGRpZG4mIzM5O3QgbmVlZCB0byBnbyB0aHJvdWdoIGRpcnR5aW5nLCBtYWtlIHN1cmUgaXQgaXMKIAkJICogYXR0YWNoZWQgdG8gd2Igc28gdGhhdCB3cml0ZWJhY2sgY2FuIGhhbmRsZSBpdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV4dDQgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2V4dDQvaW5vZGUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBmdW5jdGlvbi4gVGhlIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQuIFRoZSBpbml0aWFsIGBpbm9kZS0mZ3Q7aV9zYmAgY2FsbCBpcyBjaGFuZ2VkIHRvIGBzYmAgdXNpbmcgdGhlIGBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtJmd0O2lfc2I7YCBkZWZpbml0aW9uIGFuZCB0aGUgam91cm5hbCBjaGVjayBoYXMgY2hhbmdlZCBmcm9tIGAhRVhUNF9TQihpbm9kZS0mZ3Q7aV9zYiktJmd0O3Nfam91cm5hbGAgdG8gYCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpICZhbXA7JmFtcDsgIShFWFQ0X1NCKHNiKS0mZ3Q7c19tb3VudF9zdGF0ZSAmYW1wOyBFWFQ0X0ZDX1JFUExBWSlgLiBUaGlzIG1vZGlmaWNhdGlvbiBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIG1ldGFkYXRhIHdyaXRlb3V0IHBhdGgsIHNwZWNpZmljYWxseSBhdm9pZGluZyB0aGUgd3JpdGViYWNrIGF0dGFjaG1lbnQgaW4gZmFzdCBjb21taXQgcmVwbGF5IHNjZW5hcmlvcy4gSXQgaXMgZmFzdGVyIHRoaXMgd2F5IGFuZCB3ZSBhdm9pZCBlbnRlcmluZyBmcyB3cml0ZWJhY2sgcGF0aHMgd2hpY2ggYXJlbiYjMzk7dCBmdWxseSBpbml0aWFsaXplZCB5ZXQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGNvcmUgZXh0NCBmdW5jdGlvbiB3aXRoaW4gdGhlIGlub2RlIGhhbmRsaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSB0YXJnZXQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyB0byBlbnN1cmUgdGhlIGV4dDQgZmlsZXN5c3RlbSBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgYENPTkZJR19FWFQ0X0ZTYC4gTm93IEkgY2FuIGZvY3VzIG9uIHRoaXMgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbC4gSSYjMzk7bGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBhcm91bmQgYGZzL2V4dDQvaW5vZGUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9tYXJrX2lsb2NfZGlydHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2V4dDRfamJkMi5oPTEyNT1pbnRcbmZzL2V4dDQvZXh0NF9qYmQyLmg6MTI2OmV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L2V4dDRfamJkMi5oLTEyNy1cdFx0ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MjY3PXN0YXRpYyBpbnQgZXh0NF9jcmVhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTMyOC1cdGdldF9iaChpcy5pbG9jLmJoKTtcbmZzL2V4dDQvaW5saW5lLmM6MzI5Olx0ZXJyb3IgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpcy5pbG9jKTtcbmZzL2V4dDQvaW5saW5lLmMtMzMwLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MzM2PXN0YXRpYyBpbnQgZXh0NF91cGRhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTM5OC1cdGdldF9iaChpcy5pbG9jLmJoKTtcbmZzL2V4dDQvaW5saW5lLmM6Mzk5Olx0ZXJyb3IgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpcy5pbG9jKTtcbmZzL2V4dDQvaW5saW5lLmMtNDAwLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9NDM2PXN0YXRpYyBpbnQgZXh0NF9kZXN0cm95X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmMtNDg5LVx0Z2V0X2JoKGlzLmlsb2MuYmgpO1xuZnMvZXh0NC9pbmxpbmUuYzo0OTA6XHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlzLmlsb2MpO1xuZnMvZXh0NC9pbmxpbmUuYy00OTEtXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTYzOTk9aW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcylcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjQwNy0gKi9cbmZzL2V4dDQvaW5vZGUuYzo2NDA4OmludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxuZnMvZXh0NC9pbm9kZS5jLTY0MDktXHRcdFx0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY1NzU9aW50IGV4dDRfZXhwYW5kX2V4dHJhX2lzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTY2MDgtXG5mcy9leHQ0L2lub2RlLmM6NjYwOTpcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgaWxvYyk7XG5mcy9leHQ0L2lub2RlLmMtNjYxMC1cdGlmICghZXJyb3IpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY2MzI9aW50IF9fZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTY2NDgtXG5mcy9leHQ0L2lub2RlLmM6NjY0OTpcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuZnMvZXh0NC9pbm9kZS5jLTY2NTAtb3V0OlxuLS1cbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTY4Mi1cbmZzL2V4dDQvaW9jdGwuYzo2ODM6XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvaW9jdGwuYy02ODQtZmxhZ3NfZXJyOlxuLS1cbmZzL2V4dDQvaW9jdGwuYz03MTY9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldHByb2plY3Qoc3RydWN0IGlub2RlICppbm9kZSwgX191MzIgcHJvamlkKVxuLS1cbmZzL2V4dDQvaW9jdGwuYy03OTMtb3V0X2RpcnR5OlxuZnMvZXh0NC9pb2N0bC5jOjc5NDpcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lvY3RsLmMtNzk1LVx0aWYgKCFlcnIpXG4tLVxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5mcy9leHQ0L2lvY3RsLmMtMTU4Ni1cdFx0XHRpbm9kZS1cdTAwM2VpX2dlbmVyYXRpb24gPSBnZW5lcmF0aW9uO1xuZnMvZXh0NC9pb2N0bC5jOjE1ODc6XHRcdFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lvY3RsLmMtMTU4OC1cdFx0fVxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9MTAxPWludCBleHQ0X29ycGhhbl9hZGQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTE2NS1cdFx0ZXJyID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBOVUxMLCBzYmktXHUwMDNlc19zYmgpO1xuZnMvZXh0NC9vcnBoYW4uYzoxNjY6XHRcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L29ycGhhbi5jLTE2Ny1cdFx0aWYgKCFlcnIpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYz0yMjU9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjk0LVx0XHRORVhUX09SUEhBTihpX3ByZXYpID0gaW5vX25leHQ7XG5mcy9leHQ0L29ycGhhbi5jOjI5NTpcdFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpX3ByZXYsIFx1MDAyNmlsb2MyKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMzAwLVx0TkVYVF9PUlBIQU4oaW5vZGUpID0gMDtcbmZzL2V4dDQvb3JwaGFuLmM6MzAxOlx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L29ycGhhbi5jLTMwMi1vdXRfZXJyOlxuLS1cbmZzL2V4dDQvcmVzaXplLmM9ODE5PXN0YXRpYyBpbnQgYWRkX25ld19nZGIoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3Jlc2l6ZS5jLTkxMy1cdFx0XHQgICAoOSAtIEVYVDRfU0Ioc2IpLVx1MDAzZXNfY2x1c3Rlcl9iaXRzKTtcbmZzL2V4dDQvcmVzaXplLmM6OTE0Olx0ZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L3Jlc2l6ZS5jLTkxNS1cdG1lbXNldChnZGJfYmgtXHUwMDNlYl9kYXRhLCAwLCBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSk7XG4tLVxuZnMvZXh0NC9yZXNpemUuYz0xMDE4PXN0YXRpYyBpbnQgcmVzZXJ2ZV9iYWNrdXBfZ2RiKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9yZXNpemUuYy0xMTAwLVx0aW5vZGUtXHUwMDNlaV9ibG9ja3MgJiM0Mzs9IHJlc2VydmVkX2dkYiAqIHNiLVx1MDAzZXNfYmxvY2tzaXplIFx1MDAzZVx1MDAzZSAoOSAtIGNsdXN0ZXJfYml0cyk7XG5mcy9leHQ0L3Jlc2l6ZS5jOjExMDE6XHRleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvcmVzaXplLmMtMTEwMi1cbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTE5MT1zdGF0aWMgaW50IGV4dDRfZW5kX2VuYWJsZV92ZXJpdHkoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IHZvaWQgKmRlc2MsXG4tLVxuZnMvZXh0NC92ZXJpdHkuYy0yNDUtXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xuZnMvZXh0NC92ZXJpdHkuYzoyNDY6XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvdmVyaXR5LmMtMjQ3LVx0aWYgKGVycilcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MTAyMj1zdGF0aWMgaW50IGV4dDRfeGF0dHJfaW5vZGVfdXBkYXRlX3JlZihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmVhX2lub2RlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xMDY1LVxuZnMvZXh0NC94YXR0ci5jOjEwNjY6XHRyZXQgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGVhX2lub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQveGF0dHIuYy0xMDY3LVx0aWYgKHJldClcbmZzL2V4dDQveGF0dHIuYy0xMDY4LVx0XHRleHQ0X3dhcm5pbmdfaW5vZGUoZWFfaW5vZGUsXG5mcy9leHQ0L3hhdHRyLmM6MTA2OTpcdFx0XHRcdCAgIFwmIzM0O2V4dDRfbWFya19pbG9jX2RpcnR5KCkgZmFpbGVkIHJldD0lZFwmIzM0OywgcmV0KTtcbmZzL2V4dDQveGF0dHIuYy0xMDcwLW91dDpcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MjM0OT1leHQ0X3hhdHRyX3NldF9oYW5kbGUoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5hbWVfaW5kZXgsXG4tLVxuZnMvZXh0NC94YXR0ci5jLTI0ODItXHRcdFx0bm9fZXhwYW5kID0gMDtcbmZzL2V4dDQveGF0dHIuYzoyNDgzOlx0XHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlzLmlsb2MpO1xuZnMvZXh0NC94YXR0ci5jLTI0ODQtXHRcdC8qXG5mcy9leHQ0L3hhdHRyLmM6MjQ4NTpcdFx0ICogVGhlIGJoIGlzIGNvbnN1bWVkIGJ5IGV4dDRfbWFya19pbG9jX2RpcnR5LCBldmVuIHdpdGhcbmZzL2V4dDQveGF0dHIuYy0yNDg2LVx0XHQgKiBlcnJvciAhPSAwLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBpbiB0aGUgQ29udGV4dCBvZiBGYXN0IENvbW1pdCBSZXBsYXkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIOKAkyBpdCYjMzk7cyBhIHdvcmtob3JzZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBnZXR0aW5nIHRvbnMgb2YgdXNlLiBUaGUgY29yZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyBob3cgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFRoZSBjb25kaXRpb24sIGFzIEkgdW5kZXJzdGFuZCBpdCwgaGluZ2VzIG9uIGBFWFQ0X0ZDX1JFUExBWWAgYmVpbmcgc2V0IHdpdGhpbiBgc19tb3VudF9zdGF0ZWAuIFRoaXMgaGFzIG15IGltbWVkaWF0ZSBhdHRlbnRpb24gYmVjYXVzZSBgRVhUNF9GQ19SRVBMQVlgIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gZmFzdCBjb21taXQgcmVwbGF5LgoKTm93LCBteSBrZXkgcXVlc3Rpb24gYmVjb21lczogaXMgYEVYVDRfRkNfUkVQTEFZYCB0cnVseSBzZXQgd2l0aGluIGBzX21vdW50X3N0YXRlYCBkdXJpbmcgdGhlIHBoYXNlcyBvZiBmYXN0IGNvbW1pdCByZXBsYXkgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2U/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGFzc3VtcHRpb24gaG9sZHMsIGFuZCB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUgdW5kZXIgdGhvc2UgY2lyY3Vtc3RhbmNlcy4gSWYgdGhpcyBjaGVjayBpc24mIzM5O3QgaW4gcGxhY2UgSSBjb3VsZCBzZWUgc29tZSBiaWcgcHJvYmxlbXMgZG93biB0aGUgcm9hZC4gSSBuZWVkIHRvIGRpZyBpbiBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIG1lY2hhbmlzbXMgYW5kIGVuc3VyZSB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2Ugc29tZSBjcml0aWNhbCBkYXRhIGNvcnJ1cHRpb24gcmlzay4gVGhpcyBpcyBhIHN1YnRsZSBvcHRpbWl6YXRpb24gYW5kIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIGNvbmRpdGlvbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gaGFuZGxlIGFyZSBwcmVjaXNlbHkgdGhvc2UgaXQgYWRkcmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYVDRfRkNfUkVQTEFZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9iYWxsb2MuYz0zOTk9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2Jsb2NrX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvYmFsbG9jLmMtNDA2LVxuZnMvZXh0NC9iYWxsb2MuYzo0MDc6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2JhbGxvYy5jLTQwOC1cdFx0cmV0dXJuIDA7XG4tLVxuZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjM3LSNkZWZpbmVcdEVYVDRfT1JQSEFOX0ZTXHRcdFx0MHgwMDA0XHQvKiBPcnBoYW5zIGJlaW5nIHJlY292ZXJlZCAqL1xuZnMvZXh0NC9leHQ0Lmg6MTIzODojZGVmaW5lIEVYVDRfRkNfUkVQTEFZXHRcdFx0MHgwMDIwXHQvKiBGYXN0IGNvbW1pdCByZXBsYXkgb25nb2luZyAqL1xuZnMvZXh0NC9leHQ0LmgtMTIzOS1cbi0tXG5mcy9leHQ0L2V4dDRfamJkMi5jPTkyPWhhbmRsZV90ICpfX2V4dDRfam91cm5hbF9zdGFydF9zYihzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvZXh0NF9qYmQyLmMtMTExLVx0am91cm5hbCA9IEVYVDRfU0Ioc2IpLVx1MDAzZXNfam91cm5hbDtcbmZzL2V4dDQvZXh0NF9qYmQyLmM6MTEyOlx0aWYgKCFqb3VybmFsIHx8IChFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpXG5mcy9leHQ0L2V4dDRfamJkMi5jLTExMy1cdFx0cmV0dXJuIGV4dDRfZ2V0X25vam91cm5hbCgpO1xuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYz0zNjM9dm9pZCBleHQ0X2VzX2ZpbmRfZXh0ZW50X3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTM2OS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzozNzA6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0zNzEtXHRcdHJldHVybjtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDE3PWJvb2wgZXh0NF9lc19zY2FuX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQyMi1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzo0MjM6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00MjQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDYzPWJvb2wgZXh0NF9lc19zY2FuX2NsdShzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00NjgtXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6NDY5Olx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtNDcwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTkwNT12b2lkIGV4dDRfZXNfaW5zZXJ0X2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy05MTgtXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6OTE5Olx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtOTIwLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwMjQ9dm9pZCBleHQ0X2VzX2NhY2hlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMDMzLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjEwMzQ6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMDM1LVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwOTI9aW50IGV4dDRfZXNfbG9va3VwX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMTAxLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjExMDI6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMTAzLVx0XHRyZXR1cm4gMDtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9MTYyMz12b2lkIGV4dDRfZXNfcmVtb3ZlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xNjMwLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjE2MzE6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xNjMyLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTIyMDE9dm9pZCBleHQ0X2VzX2luc2VydF9kZWxheWVkX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0yMjEzLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjIyMTQ6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0yMjE1LVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0Ni1cdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDc6XHRcdChFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0OC19XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTE5MTU9c3RhdGljIGludCBleHQ0X2ZjX3JlY29yZF9tb2RpZmllZF9pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgaW5vKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTI4LVx0XHRcdFx0c2l6ZW9mKGludCkgKiAoc3RhdGUtXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgJiM0MztcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTI5Olx0XHRcdFx0RVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlQpLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5MzAtXHRcdFx0XHRHRlBfS0VSTkVMKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkzNC1cdFx0c3RhdGUtXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgJiM0Mzs9XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTkzNTpcdFx0XHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM2LVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yMTA4PWludCBleHQ0X2ZjX3JlY29yZF9yZWdpb25zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8sXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxMjYtXHRcdFx0XHQgICAgICAoc3RhdGUtXHUwMDNlZmNfcmVnaW9uc19zaXplICYjNDM7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEyNzpcdFx0XHRcdCAgICAgICBFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVCksXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyOC1cdFx0XHRcdCAgICAgIEdGUF9LRVJORUwpO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMxLVx0XHRzdGF0ZS1cdTAwM2VmY19yZWdpb25zX3NpemUgJiM0Mzs9XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEzMjpcdFx0XHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMzLVx0XHRzdGF0ZS1cdTAwM2VmY19yZWdpb25zID0gZmNfcmVnaW9ucztcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQwNT12b2lkIGV4dDRfZmNfcmVwbGF5X2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQwOC1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDA5Olx0c2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2PSB+RVhUNF9GQ19SRVBMQVk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQxMC1cdGtmcmVlKHNiaS1cdTAwM2VzX2ZjX3JlcGxheV9zdGF0ZS5mY19yZWdpb25zKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjU4MT1zdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5OC1cdFx0c3RhdGUtXHUwMDNlZmNfY3VycmVudF9wYXNzID0gcGFzcztcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNTk5Olx0XHRzYmktXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X0ZDX1JFUExBWTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjAwLVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMjA9c3RydWN0IGV4dDRfZmNfc3RhdHMge1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaC0xMjktXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTMwOiNkZWZpbmUgRVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlRcdDRcbmZzL2V4dDQvZmFzdF9jb21taXQuaC0xMzEtXG4tLVxuZnMvZXh0NC9pYWxsb2MuYz04MT1zdGF0aWMgaW50IGV4dDRfdmFsaWRhdGVfaW5vZGVfYml0bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9pYWxsb2MuYy04OC1cbmZzL2V4dDQvaWFsbG9jLmM6ODk6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lhbGxvYy5jLTkwLVx0XHRyZXR1cm4gMDtcbi0tXG5mcy9leHQ0L2lhbGxvYy5jPTIzNz12b2lkIGV4dDRfZnJlZV9pbm9kZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMjk1LVx0fVxuZnMvZXh0NC9pYWxsb2MuYzoyOTY6XHRpZiAoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lhbGxvYy5jLTI5Ny1cdFx0Z3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgYmxvY2tfZ3JvdXApO1xuLS1cbmZzL2V4dDQvaWFsbG9jLmM9OTMzPXN0cnVjdCBpbm9kZSAqX19leHQ0X25ld19pbm9kZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9leHQ0L2lhbGxvYy5jLTEwNTMtXG5mcy9leHQ0L2lhbGxvYy5jOjEwNTQ6XHRcdGlmICghKHNiaS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpIHtcbmZzL2V4dDQvaWFsbG9jLmMtMTA1NS1cdFx0XHRncnAgPSBleHQ0X2dldF9ncm91cF9pbmZvKHNiLCBncm91cCk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYy0xMDcwLVx0XHR9XG5mcy9leHQ0L2lhbGxvYy5jOjEwNzE6XHRcdGlmICghKHNiaS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L2lhbGxvYy5jLTEwNzItXHRcdCAgICBFWFQ0X01CX0dSUF9JQklUTUFQX0NPUlJVUFQoZ3JwKSlcbi0tXG5mcy9leHQ0L2lhbGxvYy5jLTEwODYtXG5mcy9leHQ0L2lhbGxvYy5jOjEwODc6XHRcdGlmICgoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSBcdTAwMjZcdTAwMjYgIWhhbmRsZSkge1xuZnMvZXh0NC9pYWxsb2MuYy0xMDg4LVx0XHRcdEJVR19PTihuYmxvY2tzIFx1MDAzYz0gMCk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYy0xMTkyLVxuZnMvZXh0NC9pYWxsb2MuYzoxMTkzOlx0XHRpZiAoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lhbGxvYy5jLTExOTQtXHRcdFx0Z3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgZ3JvdXApO1xuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMTIxOC1cdFx0XHRcdFx0KEVYVDRfSU5PREVTX1BFUl9HUk9VUChzYikgLSBpbm8pKTtcbmZzL2V4dDQvaWFsbG9jLmM6MTIxOTpcdFx0aWYgKCEoc2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSlcbmZzL2V4dDQvaWFsbG9jLmMtMTIyMC1cdFx0XHR1cF9yZWFkKFx1MDAyNmdycC1cdTAwM2VhbGxvY19zZW0pO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz00NDA9dm9pZCBleHQ0X2NoZWNrX21hcF9leHRlbnRzX2VudihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuZnMvZXh0NC9pbm9kZS5jLTQ0MS17XG5mcy9leHQ0L2lub2RlLmM6NDQyOlx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lub2RlLmMtNDQzLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9pbm9kZS5jPTk3OT1zdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfZ2V0YmxrKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTk4Ny1cbmZzL2V4dDQvaW5vZGUuYzo5ODg6XHRBU1NFUlQoKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lub2RlLmMtOTg5LVx0XHQgICAgfHwgaGFuZGxlICE9IE5VTEwgfHwgY3JlYXRlID09IDApO1xuLS1cbmZzL2V4dDQvaW5vZGUuYy0xMDE1LVx0XHRBU1NFUlQoY3JlYXRlICE9IDApO1xuZnMvZXh0NC9pbm9kZS5jOjEwMTY6XHRcdEFTU0VSVCgoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvaW5vZGUuYy0xMDE3LVx0XHRcdCAgICB8fCAoaGFuZGxlICE9IE5VTEwpKTtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTI3Nz1zdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuLS1cbmZzL2V4dDQvaW5vZGUuYy01MzU5LVx0ICAgIGV4dDRfc2ltdWxhdGVfZmFpbChzYiwgRVhUNF9TSU1fSU5PREVfQ1JDKSkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L2lub2RlLmM6NTM2MDpcdCAgICAgKCEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSkge1xuZnMvZXh0NC9pbm9kZS5jLTUzNjEtXHRcdGV4dDRfZXJyb3JfaW5vZGVfZXJyKGlub2RlLCBmdW5jdGlvbiwgbGluZSwgMCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTUyOS1cdFx0LyogdmFsaWRhdGUgdGhlIGJsb2NrIHJlZmVyZW5jZXMgaW4gdGhlIGlub2RlICovXG5mcy9leHQ0L2lub2RlLmM6NTUzMDpcdFx0aWYgKCEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuZnMvZXh0NC9pbm9kZS5jLTU1MzEtXHRcdFx0KFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSB8fCBTX0lTRElSKGlub2RlLVx1MDAzZWlfbW9kZSkgfHxcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjQwOD1pbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjQzNC1cdGlmICghZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKSBcdTAwMjZcdTAwMjZcbmZzL2V4dDQvaW5vZGUuYzo2NDM1Olx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lub2RlLmMtNjQzNi1cdFx0Lypcbi0tXG5mcy9leHQ0L21iYWxsb2MuYz0yMDAwPXN0YXRpYyB2b2lkIG1iX2ZyZWVfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2J1ZGR5ICplNGIsXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtMjAzNi1cdFx0ICovXG5mcy9leHQ0L21iYWxsb2MuYzoyMDM3Olx0XHRpZiAoc2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSB7XG5mcy9leHQ0L21iYWxsb2MuYy0yMDM4LVx0XHRcdG1iX3JlZ2VuZXJhdGVfYnVkZHkoZTRiKTtcbi0tXG5mcy9leHQ0L21iYWxsb2MuYz01NjA3PXZvaWQgZXh0NF9kaXNjYXJkX3ByZWFsbG9jYXRpb25zKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtNTYyMS1cbmZzL2V4dDQvbWJhbGxvYy5jOjU2MjI6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L21iYWxsb2MuYy01NjIzLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjIyOT1leHQ0X2ZzYmxrX3QgZXh0NF9tYl9uZXdfYmxvY2tzKGhhbmRsZV90ICpoYW5kbGUsXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtNjI0NS1cdHRyYWNlX2V4dDRfcmVxdWVzdF9ibG9ja3MoYXIpO1xuZnMvZXh0NC9tYmFsbG9jLmM6NjI0NjpcdGlmIChzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L21iYWxsb2MuYy02MjQ3LVx0XHRyZXR1cm4gZXh0NF9tYl9uZXdfYmxvY2tzX3NpbXBsZShhciwgZXJycCk7XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjY5MT12b2lkIGV4dDRfZnJlZV9ibG9ja3MoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L21iYWxsb2MuYy02NzA3LVxuZnMvZXh0NC9tYmFsbG9jLmM6NjcwODpcdGlmIChzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIHtcbmZzL2V4dDQvbWJhbGxvYy5jLTY3MDktXHRcdGV4dDRfZnJlZV9ibG9ja3Nfc2ltcGxlKGlub2RlLCBibG9jaywgRVhUNF9OVU1fQjJDKHNiaSwgY291bnQpKTtcbi0tXG5mcy9leHQ0L25hbWVpLmM9MzIyNj1pbnQgX19leHQ0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKmRfbmFtZSxcbi0tXG5mcy9leHQ0L25hbWVpLmMtMzI1Mi1cdFx0ICovXG5mcy9leHQ0L25hbWVpLmM6MzI1MzpcdFx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L25hbWVpLmMtMzI1NC1cdFx0XHRza2lwX3JlbW92ZV9kZW50cnkgPSAxO1xuLS1cbmZzL2V4dDQvbmFtZWkuYz0zNzk3PXN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2Rpcixcbi0tXG5mcy9leHQ0L25hbWVpLmMtNDAwOC1cdFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L25hbWVpLmM6NDAwOTpcdFx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuZnMvZXh0NC9uYW1laS5jLTQwMTAtXHRcdCAgICAhKGV4dDRfdGVzdF9tb3VudF9mbGFnKHNiLCBFWFQ0X01GX0ZDX0lORUxJR0lCTEUpKSkge1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01Mjg1PXN0YXRpYyBpbnQgZXh0NF9ibG9ja19ncm91cF9tZXRhX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHNpbGVudClcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTMyNi1cdHNiaS1cdTAwM2VzX2Rlc2NfcGVyX2Jsb2NrID0gc2ItXHUwMDNlc19ibG9ja3NpemUgLyBFWFQ0X0RFU0NfU0laRShzYik7XG5mcy9leHQ0L3N1cGVyLmM6NTMyNzpcdHNiaS1cdTAwM2VzX21vdW50X3N0YXRlID0gbGUxNl90b19jcHUoZXMtXHUwMDNlc19zdGF0ZSkgXHUwMDI2IH5FWFQ0X0ZDX1JFUExBWTtcbmZzL2V4dDQvc3VwZXIuYy01MzI4LVx0c2JpLVx1MDAzZXNfYWRkcl9wZXJfYmxvY2tfYml0cyA9IGlsb2cyKEVYVDRfQUREUl9QRVJfQkxPQ0soc2IpKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjU2Nj1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjc3Ny1cdFx0XHRzYmktXHUwMDNlc19tb3VudF9zdGF0ZSA9IChsZTE2X3RvX2NwdShlcy1cdTAwM2VzX3N0YXRlKSBcdTAwMjZcbmZzL2V4dDQvc3VwZXIuYzo2Nzc4Olx0XHRcdFx0XHQgICAgICB+RVhUNF9GQ19SRVBMQVkpO1xuZnMvZXh0NC9zdXBlci5jLTY3NzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MTYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmFzdCBDb21taXQgUmVwbGF5IEJ1ZyBGaXggaW4gZXh0NCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggZmFzdCBjb21taXQgcmVwbGF5LiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGluYXBwcm9wcmlhdGVseSBhdHRhY2hpbmcgaW5vZGVzIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5LCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBjYW4gbGVhZCB0byBuYXN0eSBpbmNvbnNpc3RlbmNpZXMgYmVjYXVzZSB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgbWVjaGFuaXNtcyBhcmVuJiMzOTt0IGZ1bGx5IHNldCB1cCB5ZXQgZHVyaW5nIHJlcGxheS4KClRoZSBmaXggaXRzZWxmIGlzIGludHJpZ3VpbmcuIFRoZXkmIzM5O3ZlIHJlcGxhY2VkIHRoZSBqb3VybmFsIGNoZWNrIGAhRVhUNF9TQihpbm9kZS0mZ3Q7aV9zYiktJmd0O3Nfam91cm5hbGAgd2l0aCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkgJmFtcDsmYW1wOyAhKEVYVDRfU0Ioc2IpLSZndDtzX21vdW50X3N0YXRlICZhbXA7IEVYVDRfRkNfUkVQTEFZKWAuIEluaXRpYWxseSwgSSB3YXMgYSBiaXQgdGhyb3duIGJ5IHRoZSBgZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKWAgcGFydC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgY2hlY2tpbmcgaWYgYSB0cmFuc2FjdGlvbiBoYW5kbGUgaXMgdmFsaWQsIHJpZ2h0PyBUaGVuLCBJIHJlbWVtYmVyZWQgdGhhdCBgZXh0NF9oYW5kbGVfdmFsaWRgIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgcG9pbnRlciBjaGVjazogYW55dGhpbmcgYmVsb3cgYEVYVDRfTk9KT1VSTkFMX01BWF9SRUZfQ09VTlRgIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KClNvLCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSlgIGltcGxpZXMgdGhhdCBqb3VybmFsaW5nIGlzbiYjMzk7dCBlbmFibGVkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiwgb3IgdGhlIGhhbmRsZSBpcyBpbiBub2pvdXJuYWwgbW9kZS4gVGhpcyBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhdm9pZGluZyB3cml0ZWJhY2sgZHVyaW5nIGZhc3QgY29tbWl0IHJlcGxheS4gVGhleSBhZGRlZCBhIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gRkMgcmVwbGF5LCBzbyB0aGF0IHRoaXMgY2hlY2sgd29ya3MgZXZlbiBpZiBqb3VybmFsaW5nIGlzIGVuYWJsZWQuIFNvLCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGx5IGF2b2lkaW5nIHdyaXRlYmFjayBhdHRhY2htZW50IHdoZW4gZWl0aGVyIHRoZSB0cmFuc2FjdGlvbiBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGpvdXJuYWxlZCBvciB0aGUgZmlsZXN5c3RlbSBpcyB1bmRlcmdvaW5nIHJlcGxheS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIHRoaXMgYXJlYSBpcyByaXBlIGZvciBwb3RlbnRpYWwgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfZmNfcmVwbGF5YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGBleHQ0X2ZjX3JlcGxheWAgcHJvY2VzcyB0aGF0IGlzIGxpa2VseSB0byB0cmlnZ2VyIHRoaXMgYnVnIHNjZW5hcmlvLiBJIHNob3VsZCBhbHNvIGhhdmUgYW4gZXllIG91dCBmb3IgaG93IGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgYmVoYXZlcyB3aGVuIGRlYWxpbmcgd2l0aCBmYXN0IGNvbW1pdCByZXBsYXkuIEZ1bmN0aW9ucyBzdWNoIGFzIGBleHQ0X2ZjX3JlcGxheV9pbm9kZWAsIG9yIHNpbWlsYXIgZnVuY3Rpb24gY2FsbHMsIGFyZSBvZiBoaWdoIGludGVyZXN0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfZmNfcmVwbGF5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU4Nj1zdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xODYxLSNlbmRpZlxuZnMvZXh0NC9leHQ0Lmg6MTg2MjpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSBzX2ZjX3JlcGxheV9zdGF0ZTtcbmZzL2V4dDQvZXh0NC5oLTE4NjMtfTtcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMDc5PXZvaWQgZXh0NF9mY19kZWwoc3RydWN0IGlub2RlICppbm9kZSk7XG5mcy9leHQ0L2V4dDQuaDozMDgwOmJvb2wgZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190IGJsb2NrKTtcbmZzL2V4dDQvZXh0NC5oOjMwODE6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuZnMvZXh0NC9leHQ0LmgtMzA4Mi1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTgwND1zdGF0aWMgaW5saW5lIHZvaWQgZXh0NF9mY19nZXRfdGwoc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxMy0vKiBVbmxpbmsgcmVwbGF5IGZ1bmN0aW9uICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTgxNDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3VubGluayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4MTUtXHRcdFx0XHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgyMy1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODI0Olx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX1VOTElOSywgZGFyZy5pbm8sXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgyNS1cdFx0XHRkYXJnLnBhcmVudF9pbm8sIGRhcmcuZG5hbWVfbGVuKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg1Mi1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODUzOnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTQtXHRcdFx0XHRzdHJ1Y3QgZGVudHJ5X2luZm9fYXJncyAqZGFyZyxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg4OC0vKiBMaW5rIHJlcGxheSBmdW5jdGlvbiAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4ODk6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9saW5rKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg5MC1cdFx0XHQgICAgICAgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg5Ni1cdHRsX3RvX2RhcmcoXHUwMDI2ZGFyZywgdGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTg5NzpcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19MSU5LLCBkYXJnLmlubyxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODk4LVx0XHRcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTA1LVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MDY6XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHNiLCBcdTAwMjZkYXJnLCBpbm9kZSk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkwNy1cdGlwdXQoaW5vZGUpO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz0xOTE1PXN0YXRpYyBpbnQgZXh0NF9mY19yZWNvcmRfbW9kaWZpZWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubylcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTE2LXtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTE3Olx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTE4LVx0aW50IGk7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NDMtICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTk0NDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTk0NS1cdFx0XHRcdHN0cnVjdCBleHQ0X2ZjX3RsX21lbSAqdGwsIHU4ICp2YWwpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NTgtXHRpbm8gPSBsZTMyX3RvX2NwdShmY19pbm9kZS5mY19pbm8pO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5NTk6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgdGFnLCBpbm8sIDAsIDApO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NjAtXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNDktICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjA1MDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2NyZWF0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNTEtXHRcdFx0XHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA1OS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMDYwOlx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0NSRUFULCBkYXJnLmlubyxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDYxLVx0XHRcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDkyLVx0fVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwOTM6XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHNiLCBcdTAwMjZkYXJnLCBpbm9kZSk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5NC1cdGlmIChyZXQpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIxMDg9aW50IGV4dDRfZmNfcmVjb3JkX3JlZ2lvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubyxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjExMC17XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjExMTpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjExMi1cdHN0cnVjdCBleHQ0X2ZjX2FsbG9jX3JlZ2lvbiAqcmVnaW9uO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTQ3LS8qIFJlcGxheSBhZGQgcmFuZ2UgdGFnICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjE0ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1OCAqdmFsKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNDkte1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTYyLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIxNjM6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfQUREX1JBTkdFLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNjQtXHRcdGxlMzJfdG9fY3B1KGZjX2FkZF9leC5mY19pbm8pLCBsZTMyX3RvX2NwdShleC1cdTAwM2VlZV9ibG9jayksXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIyNjc9c3RhdGljIGludFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyNjg6ZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU4ICp2YWwpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI2OS17XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNzktXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjI4MDpcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19ERUxfUkFOR0UsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI4MS1cdFx0bGUzMl90b19jcHUobHJhbmdlLmZjX2lubyksIGN1ciwgcmVtYWluaW5nKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjMyOD1zdGF0aWMgdm9pZCBleHQ0X2ZjX3NldF9iaXRtYXBzX2FuZF9jb3VudGVycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzMjkte1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzMzA6XHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzMzEtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzg2LSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzODc6Ym9vbCBleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2ZzYmxrX3QgYmxrKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODgte1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODktXHRpbnQgaTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMzkwOlx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzkxLVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDA0LS8qIENsZWFudXAgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIHJlcGxheSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI0MDU6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQwNi17XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0MTQ9c3RhdGljIGJvb2wgZXh0NF9mY192YWx1ZV9sZW5faXN2YWxpZChzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0NTctICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ1ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3NjYW4oam91cm5hbF90ICpqb3VybmFsLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0NTktXHRcdFx0XHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgb2ZmLFxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDYzLVx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2NDpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2NS1cdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU3Mi1vdXRfZXJyOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1NzM6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheV9zY2FuKHNiLCByZXQsIG9mZik7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU3NC1cdHJldHVybiByZXQ7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1ODAtICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4MTpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTgyLVx0XHRcdFx0ZW51bSBwYXNzdHlwZSBwYXNzLCBpbnQgb2ZmLCB0aWRfdCBleHBlY3RlZF90aWQpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1ODgtXHRpbnQgcmV0ID0gSkJEMl9GQ19SRVBMQVlfQ09OVElOVUU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4OTpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGUgPSBcdTAwMjZzYmktXHUwMDNlc19mY19yZXBsYXlfc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5MC1cdHN0cnVjdCBleHQ0X2ZjX3RhaWwgdGFpbDtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5My1cdFx0c3RhdGUtXHUwMDNlZmNfY3VycmVudF9wYXNzID0gUEFTU19TQ0FOO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1OTQ6XHRcdHJldHVybiBleHQ0X2ZjX3JlcGxheV9zY2FuKGpvdXJuYWwsIGJoLCBvZmYsIGV4cGVjdGVkX3RpZCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5NS1cdH1cbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzMS1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19MSU5LOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2MzI6XHRcdFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGluayhzYiwgXHUwMDI2dGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzMy1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM0LVx0XHRjYXNlIEVYVDRfRkNfVEFHX1VOTElOSzpcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjM1Olx0XHRcdHJldCA9IGV4dDRfZmNfcmVwbGF5X3VubGluayhzYiwgXHUwMDI2dGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzNi1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM3LVx0XHRjYXNlIEVYVDRfRkNfVEFHX0FERF9SQU5HRTpcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjM4Olx0XHRcdHJldCA9IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzYiwgdmFsKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM5LVx0XHRcdGJyZWFrO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDAtXHRcdGNhc2UgRVhUNF9GQ19UQUdfQ1JFQVQ6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY0MTpcdFx0XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9jcmVhdGUoc2IsIFx1MDAyNnRsLCB2YWwpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDItXHRcdFx0YnJlYWs7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0My1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19ERUxfUkFOR0U6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY0NDpcdFx0XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9kZWxfcmFuZ2Uoc2IsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0NS1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ2LVx0XHRjYXNlIEVYVDRfRkNfVEFHX0lOT0RFOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDc6XHRcdFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfaW5vZGUoc2IsIFx1MDAyNnRsLCB2YWwpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDgtXHRcdFx0YnJlYWs7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OS1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19QQUQ6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1MDpcdFx0XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfUEFELCAwLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NTEtXHRcdFx0XHRcdCAgICAgdGwuZmNfbGVuLCAwKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1My1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19UQUlMOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NTQ6XHRcdFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX1RBSUwsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1NS1cdFx0XHRcdFx0ICAgICAwLCB0bC5mY19sZW4sIDApO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjYxLVx0XHRkZWZhdWx0OlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NjI6XHRcdFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIHRsLmZjX3RhZywgMCwgdGwuZmNfbGVuLCAwKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjYzLVx0XHRcdHJldCA9IC1FQ0FOQ0VMRUQ7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjc5LVx0ICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY4MDpcdGpvdXJuYWwtXHUwMDNlal9mY19yZXBsYXlfY2FsbGJhY2sgPSBleHQ0X2ZjX3JlcGxheTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjgxLVx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMzk9c3RydWN0IGV4dDRfZmNfYWxsb2NfcmVnaW9uIHtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmgtMTQ3LSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5oOjE0ODpzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUge1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0OS1cdGludCBmY19yZXBsYXlfbnVtX3RhZ3M7XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjE2Mj1leHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKHN0cnVjdCBleHQ0X2FsbG9jYXRpb25fcmVxdWVzdCAqYXIsIGludCAqZXJycClcbi0tXG5mcy9leHQ0L21iYWxsb2MuYy02MTkzLVx0XHRcdFx0YnJlYWs7XG5mcy9leHQ0L21iYWxsb2MuYzo2MTk0Olx0XHRcdGlmIChleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzYixcbmZzL2V4dDQvbWJhbGxvYy5jLTYxOTUtXHRcdFx0XHRleHQ0X2dyb3VwX2ZpcnN0X2Jsb2NrX25vKHNiLCBncm91cCkgJiM0Mztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM0Nj1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTY0NS1cdH1cbmZzL2V4dDQvc3VwZXIuYzo1NjQ2Olx0ZXh0NF9mY19yZXBsYXlfY2xlYW51cChzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTY0Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgxOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucy4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEZhc3QgQ29tbWl0IFJlcGxheSBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBmYXN0IGNvbW1pdCByZXBsYXkgc3R1ZmYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZ1bmN0aW9uczogYGV4dDRfZmNfcmVwbGF5YCwgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBgZXh0NF9mY19yZXBsYXlfdW5saW5rYCwgYGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZWAsIGBleHQ0X2ZjX3JlcGxheV9jcmVhdGVgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X2RlbF9yYW5nZWAuIFRoZXkmIzM5O3JlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5IG5hbWVzLCBhbmQgdGhvc2UgZnVuY3Rpb24gc3ltYm9scyBhcmUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gU2VlbXMgbGlrZSB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgYXNwZWN0cyBvZiByZXBsYXlpbmcgdGhlIGZhc3QgY29tbWl0IGRhdGEsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSBkZXBlbmRzIG9uLCBsZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcuCgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY29uZmlndXJlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKmZhc3QgY29tbWl0KiBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGp1c3QgZm9yIHRoZSBmYXN0IGNvbW1pdCBmZWF0dXJlPyBPciwgaXMgaXQganVzdCBpbXBsaWNpdGx5IGVuYWJsZWQvZGlzYWJsZWQgYXMgcGFydCBvZiB0aGUgYnJvYWRlciBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGFuc3dlciBsaWVzIGluIHVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIGZhc3QgY29tbWl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtKT1VSTkFMX0ZBU1RfQ09NTUlUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMzA4LVxuZnMvZXh0NC9leHQ0Lmg6MTMwOTojZGVmaW5lIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVRcdDB4MDAwMDAwMTAgLyogSm91cm5hbCBmYXN0IGNvbW1pdCAqL1xuZnMvZXh0NC9leHQ0LmgtMTMxMC0jZGVmaW5lIEVYVDRfTU9VTlQyX0RBWF9ORVZFUlx0XHQweDAwMDAwMDIwIC8qIERvIG5vdCBhbGxvdyBEaXJlY3QgQWNjZXNzICovXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1LXtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDY6XHRyZXR1cm4gKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpIHx8XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ3LVx0XHQoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTU4Nj1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xNTk1LVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE1OTY6XHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTU5Ny1cdFx0cmV0dXJuIGpiZDJfY29tcGxldGVfdHJhbnNhY3Rpb24oam91cm5hbCwgY29tbWl0X3RpZCk7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjgwLVx0am91cm5hbC1cdTAwM2VqX2ZjX3JlcGxheV9jYWxsYmFjayA9IGV4dDRfZmNfcmVwbGF5O1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2ODE6XHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY4Mi1cdFx0cmV0dXJuO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz0zNDU0PXN0YXRpYyBib29sIGV4dDRfaW5vZGVfZGF0YXN5bmNfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L2lub2RlLmMtMzQ2Mi1cdFx0XHRyZXR1cm4gZmFsc2U7XG5mcy9leHQ0L2lub2RlLmM6MzQ2MzpcdFx0aWYgKHRlc3Rfb3B0Mihpbm9kZS1cdTAwM2VpX3NiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSlcbmZzL2V4dDQvaW5vZGUuYy0zNDY0LVx0XHRcdHJldHVybiAhbGlzdF9lbXB0eShcdTAwMjZFWFQ0X0koaW5vZGUpLVx1MDAzZWlfZmNfbGlzdCk7XG4tLVxuZnMvZXh0NC9uYW1laS5jPTM3OTc9c3RhdGljIGludCBleHQ0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuLS1cbmZzL2V4dDQvbmFtZWkuYy00MDA3LVx0XHRcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgbmV3LmRlbnRyeSk7XG5mcy9leHQ0L25hbWVpLmM6NDAwODpcdFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L25hbWVpLmMtNDAwOS1cdFx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuLS1cbmZzL2V4dDQvc3VwZXIuYz0xODg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW91bnRfb3B0cyB7XG4tLVxuZnMvZXh0NC9zdXBlci5jLTE5NTQtI2lmZGVmIENPTkZJR19FWFQ0X0RFQlVHXG5mcy9leHQ0L3N1cGVyLmM6MTk1NTpcdHtPcHRfZmNfZGVidWdfZm9yY2UsIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVQsXG5mcy9leHQ0L3N1cGVyLmMtMTk1Ni1cdCBNT1BUX1NFVCB8IE1PUFRfMiB8IE1PUFRfRVhUNF9PTkxZfSxcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDM5Nj1zdGF0aWMgdm9pZCBleHQ0X3NldF9kZWZfb3B0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00NDE1LVx0aWYgKGV4dDRfaGFzX2ZlYXR1cmVfZmFzdF9jb21taXQoc2IpKVxuZnMvZXh0NC9zdXBlci5jOjQ0MTY6XHRcdHNldF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy00NDE3LVx0LyogZG9uJiMzOTt0IGZvcmdldCB0byBlbmFibGUgam91cm5hbF9jc3VtIHdoZW4gbWV0YWRhdGFfY3N1bSBpcyBlbmFibGVkLiAqL1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00OTY0PXN0YXRpYyBpbnQgZXh0NF9sb2FkX2FuZF9pbml0X2pvdXJuYWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDk4Ny1cbmZzL2V4dDQvc3VwZXIuYzo0OTg4Olx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L3N1cGVyLmMtNDk4OS1cdFx0IWpiZDJfam91cm5hbF9zZXRfZmVhdHVyZXMoRVhUNF9TQihzYiktXHUwMDNlc19qb3VybmFsLCAwLCAwLFxuLS1cbmZzL2V4dDQvc3VwZXIuYz01MDQ4PXN0YXRpYyBpbnQgZXh0NF9jaGVja19qb3VybmFsX2RhdGFfbW9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01MDU1LVx0XHRjbGVhcl9vcHQoc2IsIERJT1JFQURfTk9MT0NLKTtcbmZzL2V4dDQvc3VwZXIuYzo1MDU2Olx0XHRjbGVhcl9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy01MDU3LVx0XHRpZiAodGVzdF9vcHQyKHNiLCBFWFBMSUNJVF9ERUxBTExPQykpIHtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM0Nj1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTU0NC1cdFx0Y2xlYXJfb3B0KHNiLCBEQVRBX0ZMQUdTKTtcbmZzL2V4dDQvc3VwZXIuYzo1NTQ1Olx0XHRjbGVhcl9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy01NTQ2LVx0XHRzYmktXHUwMDNlc19qb3VybmFsID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NzYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGV4dDQmIzM5O3MgRmFzdCBDb21taXQgRmVhdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGV4dDQmIzM5O3MgJiMzNDtmYXN0IGNvbW1pdCYjMzQ7IGZlYXR1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBleHQ0IGZpbGVzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdCwgc3BlY2lmaWNhbGx5IHRob3NlIHRoYXQgaGF2ZSB0aGUgYGZhc3RfY29tbWl0YCBmbGFnIHNldC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGEgc2Vuc2libGUgZGVmYXVsdCBpcyBhbHdheXMgYXBwcmVjaWF0ZWQuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG5vdy4gSXMgdGhlcmUgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gY29udHJvbGxpbmcgZmFzdCBjb21taXQ/IExldCBtZSBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFNlZW1zIGxpa2UgdGhlcmUgaXNuJiMzOTt0IG9uZSBzcGVjaWZpY2FsbHkgZm9yIGZhc3QgY29tbWl0LCBhbmQgaXQmIzM5O3MgbGlrZWx5IGdvdmVybmVkIGJ5IHRoZSBtb3JlIGdlbmVyYWwgYENPTkZJR19FWFQ0X0ZTYCBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgZXh0NCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgaXQmIzM5O3MgYWN0aXZhdGVkIGFuZCBkZWFjdGl2YXRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYVDRfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuLS1cbmZzL2V4dDQvS2NvbmZpZy00NS1cbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbmZzL2V4dDQvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE1MgoJCQkJCQkJb3V0cHV0OiAxOTAKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIEVYVDQgRmFzdCBDb21taXQgUmVwbGF5IFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYEVYVDRfRlNgLiBMZXQmIzM5O3MgZGlnIGludG8gdGhpcyBwYXRjaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWFzb25pbmcgYmVoaW5kIGl0LiBJdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIGluIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBwcm9jZXNzLCB3aGVyZSB0aGUgY29kZSB3YXMgaW5hcHByb3ByaWF0ZWx5IGF0dGVtcHRpbmcgdG8gYXR0YWNoIGFuIGlub2RlIHRvIHdyaXRlYmFjayBiZWZvcmUgdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgd3JpdGViYWNrIHBhdGhzIGFyZSBmdWxseSBzZXQgdXAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBUaGUgZml4IGludm9sdmVzIGNvbmRpdGlvbmFsbHkgc2tpcHBpbmcgdGhpcyBpbm9kZSBhdHRhY2htZW50IGR1cmluZyByZXBsYXkgaWYgZWl0aGVyIGBFWFQ0X0ZDX1JFUExBWWAgaXMgc2V0IGluIGBzX21vdW50X3N0YXRlYCBvciB0aGUgaGFuZGxlIGl0c2VsZiBpc24mIzM5O3QgdmFsaWQuCgpUaGlzIGNoYW5nZSBpcyBzcXVhcmVseSBpbiB0aGUgY29yZSBleHQ0IGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhhdCBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gRnVuY3Rpb25hbGx5IHNwZWFraW5nLCBpdCYjMzk7cyBhIGNyaXRpY2FsIGZpeC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UmIzM5O2Qgd2FudCB0byBmdXp6IHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgcm9idXN0bHkuCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgYXJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAsIG9mIGNvdXJzZSwgYWxvbmcgd2l0aCB0aGUgcmVwbGF5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgZXh0NF9mY19yZXBsYXlgLCBgZXh0NF9mY19yZXBsYXlfaW5vZGVgLCBgZXh0NF9mY19yZXBsYXlfY3JlYXRlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X3VubGlua2AuCgpOb3csIHJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBvbmx5IGBFWFQ0X0ZTYCBpcyBpbnZvbHZlZCBoZXJlLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gTm8gb3RoZXIgcmVsYXRlZCBjb25maWdzLgoKU28sIGxldCBtZSBzb2xpZGlmeSB0aGUgcmVhc29uaW5nOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgdG8gcHJldmVudCBhdHRhY2hpbmcgYW4gaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApIGJlY2F1c2UgdGhvc2Ugd3JpdGViYWNrIHBhdGhzIGFyZW4mIzM5O3QgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoaXMgY2hhbmdlIGlzIGRpcmVjdGx5IGZ1bmN0aW9uYWwsIG1vZGlmeWluZyBleHQ0JiMzOTtzIGNvcmUgY29kZSBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgYmVoYXZpb3IuIEl0JiMzOTtzIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byB2ZXJpZnkgdGhhdCB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIG1hbmFnZXMgaW5vZGUgZGlydHlpbmcgZWZmZWN0aXZlbHkuIE9rYXksIEkgdGhpbmsgdGhhdCYjMzk7cyBhIGdvb2Qgc3VtbWFyeS4gSSYjMzk7bGwgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfbWFya19pbG9jX2RpcnR5JiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5JiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2lub2RlJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9saW5rJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9tYXJrX2lsb2NfZGlydHkmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXkmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfaW5vZGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfY3JlYXRlJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2xpbmsmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfdW5saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgdG8gYXZvaWQgYXR0YWNoaW5nIHRoZSBpbm9kZSB0byB3cml0ZWJhY2sgZHVyaW5nIGZhc3QgY29tbWl0IHJlcGxheSAoYEVYVDRfRkNfUkVQTEFZYCksIGFzIHRoZSBmaWxlc3lzdGVtIHdyaXRlYmFjayBwYXRocyBhcmUgbm90IGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoYXQgcG9pbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGNvZGUsIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBwYXRoLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgbG9naWMgaGFuZGxlcyBpbm9kZSBkaXJ0eWluZyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS41Mjg5OTcwMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg0NzIwNDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS41MjkwMDM4ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTI4ODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMjoxNToyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCA3YTFmOTYxY2QxMWNlLi4xMmZmODRhYjU3NDFkIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xcbisrKyBiL2ZzL2V4dDQvaW5vZGUuY1xcbkBAIC02NDA4LDkgKzY0MDgsMTAgQEAgaW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcylcXG4gaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxcbiB7XFxuK1xcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbi1cXHRlcnIgPSBleHQ0X2VtZXJnZW5jeV9zdGF0ZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKHNiKTtcXG4gXFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4gXFx0XFx0cHV0X2JoKGlsb2MtXFx1MDAzZWJoKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtNjQyNSw5ICs2NDI2LDEzIEBAIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHRwdXRfYmgoaWxvYy1cXHUwMDNlYmgpO1xcbiBcXHQvKlxcbiBcXHQgKiBNYXJrIHRoYXQgdGhlcmUncyBtZXRhZGF0YSB3cml0ZW91dCBwZW5kaW5nIGZvciB0aGUgaW5vZGUgc28gdGhhdCBpdFxcbi1cXHQgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuXFxuK1xcdCAqIGdldHMgcHJvcGVybHkgZmx1c2hlZCBvbiBmc3luYygyKSBhbmQgc2ltaWxhci4gV2UgZG9uJ3QgYm90aGVyIGZvclxcbitcXHQgKiBmYXN0Y29tbWl0IHJlcGxheSBhcyB0aGF0IGZsdXNoZXMgdGhlIHdob2xlIGJkZXYgYWZ0ZXJ3YXJkcyBhbnl3YXkuXFxuK1xcdCAqIEl0IGlzIGZhc3RlciB0aGlzIHdheSBhbmQgd2UgYXZvaWQgZW50ZXJpbmcgZnMgd3JpdGViYWNrIHBhdGhzIHdoaWNoXFxuK1xcdCAqIGFyZW4ndCBmdWxseSBpbml0aWFsaXplZCB5ZXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIUVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX2pvdXJuYWwpIHtcXG4rXFx0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIElub2RlIGRpZG4ndCBuZWVkIHRvIGdvIHRocm91Z2ggZGlydHlpbmcsIG1ha2Ugc3VyZSBpdCBpc1xcbiBcXHRcXHQgKiBhdHRhY2hlZCB0byB3YiBzbyB0aGF0IHdyaXRlYmFjayBjYW4gaGFuZGxlIGl0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS45NDEwMjI4MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NTQzNTE3MDU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkN2NjOGE5NzM5OTJlYjFmMTNlNzkyZDZlYzg0Njk3YWIwY2IyMmU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMjoxNToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggN2ExZjk2MWNkMTFjZS4uMTJmZjg0YWI1NzQxZCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNjQwOCw5ICs2NDA4LDEwIEBAIGludCBleHQ0X2NodW5rX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpXG4gaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG4gXHRcdFx0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXG4ge1xuK1x0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLVx1MDAzZWlfc2I7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKGlub2RlLVx1MDAzZWlfc2IpO1xuK1x0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpO1xuIFx0aWYgKHVubGlrZWx5KGVycikpIHtcbiBcdFx0cHV0X2JoKGlsb2MtXHUwMDNlYmgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuQEAgLTY0MjUsOSArNjQyNiwxMyBAQCBpbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcbiBcdHB1dF9iaChpbG9jLVx1MDAzZWJoKTtcbiBcdC8qXG4gXHQgKiBNYXJrIHRoYXQgdGhlcmUncyBtZXRhZGF0YSB3cml0ZW91dCBwZW5kaW5nIGZvciB0aGUgaW5vZGUgc28gdGhhdCBpdFxuLVx0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLlxuK1x0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLiBXZSBkb24ndCBib3RoZXIgZm9yXG4rXHQgKiBmYXN0Y29tbWl0IHJlcGxheSBhcyB0aGF0IGZsdXNoZXMgdGhlIHdob2xlIGJkZXYgYWZ0ZXJ3YXJkcyBhbnl3YXkuXG4rXHQgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaFxuK1x0ICogYXJlbid0IGZ1bGx5IGluaXRpYWxpemVkIHlldC5cbiBcdCAqL1xuLVx0aWYgKCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbCkge1xuK1x0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIElub2RlIGRpZG4ndCBuZWVkIHRvIGdvIHRocm91Z2ggZGlydHlpbmcsIG1ha2Ugc3VyZSBpdCBpc1xuIFx0XHQgKiBhdHRhY2hlZCB0byB3YiBzbyB0aGF0IHdyaXRlYmFjayBjYW4gaGFuZGxlIGl0LlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6MjEuOTQxMDI0MDE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTIwMzkwOTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGV4dDQgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9leHQ0L2lub2RlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgZnVuY3Rpb24uIFRoZSBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkLiBUaGUgaW5pdGlhbCBgaW5vZGUtXHUwMDNlaV9zYmAgY2FsbCBpcyBjaGFuZ2VkIHRvIGBzYmAgdXNpbmcgdGhlIGBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtgIGRlZmluaXRpb24gYW5kIHRoZSBqb3VybmFsIGNoZWNrIGhhcyBjaGFuZ2VkIGZyb20gYCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbGAgdG8gYCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNiAhKEVYVDRfU0Ioc2IpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKWAuIFRoaXMgbW9kaWZpY2F0aW9uIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgb3B0aW1pemluZyB0aGUgbWV0YWRhdGEgd3JpdGVvdXQgcGF0aCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHRoZSB3cml0ZWJhY2sgYXR0YWNobWVudCBpbiBmYXN0IGNvbW1pdCByZXBsYXkgc2NlbmFyaW9zLiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaCBhcmVuJ3QgZnVsbHkgaW5pdGlhbGl6ZWQgeWV0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCdzIGEgY29yZSBleHQ0IGZ1bmN0aW9uIHdpdGhpbiB0aGUgaW5vZGUgaGFuZGxpbmcsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGEgcHJpbWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyB0byBlbnN1cmUgdGhlIGV4dDQgZmlsZXN5c3RlbSBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgYENPTkZJR19FWFQ0X0ZTYC4gTm93IEkgY2FuIGZvY3VzIG9uIHRoaXMgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbC4gSSdsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFyb3VuZCBgZnMvZXh0NC9pbm9kZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjMxLjE0NDkzODk0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X21hcmtfaWxvY19kaXJ0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDRfamJkMi5oPTEyNT1pbnRcXG5mcy9leHQ0L2V4dDRfamJkMi5oOjEyNjpleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbmZzL2V4dDQvZXh0NF9qYmQyLmgtMTI3LVxcdFxcdCAgICAgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MjY3PXN0YXRpYyBpbnQgZXh0NF9jcmVhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMzI4LVxcdGdldF9iaChpcy5pbG9jLmJoKTtcXG5mcy9leHQ0L2lubGluZS5jOjMyOTpcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTMzMC1cXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MzM2PXN0YXRpYyBpbnQgZXh0NF91cGRhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMzk4LVxcdGdldF9iaChpcy5pbG9jLmJoKTtcXG5mcy9leHQ0L2lubGluZS5jOjM5OTpcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTQwMC1cXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9NDM2PXN0YXRpYyBpbnQgZXh0NF9kZXN0cm95X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy00ODktXFx0Z2V0X2JoKGlzLmlsb2MuYmgpO1xcbmZzL2V4dDQvaW5saW5lLmM6NDkwOlxcdGVycm9yID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlzLmlsb2MpO1xcbmZzL2V4dDQvaW5saW5lLmMtNDkxLVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTYzOTk9aW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcylcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NDA3LSAqL1xcbmZzL2V4dDQvaW5vZGUuYzo2NDA4OmludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbmZzL2V4dDQvaW5vZGUuYy02NDA5LVxcdFxcdFxcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTY1NzU9aW50IGV4dDRfZXhwYW5kX2V4dHJhX2lzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNjYwOC1cXG5mcy9leHQ0L2lub2RlLmM6NjYwOTpcXHRyYyA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIGlsb2MpO1xcbmZzL2V4dDQvaW5vZGUuYy02NjEwLVxcdGlmICghZXJyb3IpXFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjYzMj1pbnQgX19leHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NjQ4LVxcbmZzL2V4dDQvaW5vZGUuYzo2NjQ5OlxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lub2RlLmMtNjY1MC1vdXQ6XFxuLS1cXG5mcy9leHQ0L2lvY3RsLmM9NTkwPXN0YXRpYyBpbnQgZXh0NF9pb2N0bF9zZXRmbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jLTY4Mi1cXG5mcy9leHQ0L2lvY3RsLmM6NjgzOlxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtNjg0LWZsYWdzX2VycjpcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYz03MTY9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldHByb2plY3Qoc3RydWN0IGlub2RlICppbm9kZSwgX191MzIgcHJvamlkKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jLTc5My1vdXRfZGlydHk6XFxuZnMvZXh0NC9pb2N0bC5jOjc5NDpcXHRyYyA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtNzk1LVxcdGlmICghZXJyKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYy0xNTg2LVxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX2dlbmVyYXRpb24gPSBnZW5lcmF0aW9uO1xcbmZzL2V4dDQvaW9jdGwuYzoxNTg3OlxcdFxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtMTU4OC1cXHRcXHR9XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTEwMT1pbnQgZXh0NF9vcnBoYW5fYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTE2NS1cXHRcXHRlcnIgPSBleHQ0X2hhbmRsZV9kaXJ0eV9tZXRhZGF0YShoYW5kbGUsIE5VTEwsIHNiaS1cXHUwMDNlc19zYmgpO1xcbmZzL2V4dDQvb3JwaGFuLmM6MTY2OlxcdFxcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTY3LVxcdFxcdGlmICghZXJyKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0yMjU9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0yOTQtXFx0XFx0TkVYVF9PUlBIQU4oaV9wcmV2KSA9IGlub19uZXh0O1xcbmZzL2V4dDQvb3JwaGFuLmM6Mjk1OlxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaV9wcmV2LCBcXHUwMDI2aWxvYzIpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzAwLVxcdE5FWFRfT1JQSEFOKGlub2RlKSA9IDA7XFxuZnMvZXh0NC9vcnBoYW4uYzozMDE6XFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMzAyLW91dF9lcnI6XFxuLS1cXG5mcy9leHQ0L3Jlc2l6ZS5jPTgxOT1zdGF0aWMgaW50IGFkZF9uZXdfZ2RiKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L3Jlc2l6ZS5jLTkxMy1cXHRcXHRcXHQgICAoOSAtIEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2NsdXN0ZXJfYml0cyk7XFxuZnMvZXh0NC9yZXNpemUuYzo5MTQ6XFx0ZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvcmVzaXplLmMtOTE1LVxcdG1lbXNldChnZGJfYmgtXFx1MDAzZWJfZGF0YSwgMCwgc2ItXFx1MDAzZXNfYmxvY2tzaXplKTtcXG4tLVxcbmZzL2V4dDQvcmVzaXplLmM9MTAxOD1zdGF0aWMgaW50IHJlc2VydmVfYmFja3VwX2dkYihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9yZXNpemUuYy0xMTAwLVxcdGlub2RlLVxcdTAwM2VpX2Jsb2NrcyArPSByZXNlcnZlZF9nZGIgKiBzYi1cXHUwMDNlc19ibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgKDkgLSBjbHVzdGVyX2JpdHMpO1xcbmZzL2V4dDQvcmVzaXplLmM6MTEwMTpcXHRleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC9yZXNpemUuYy0xMTAyLVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYz0xOTE9c3RhdGljIGludCBleHQ0X2VuZF9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCB2b2lkICpkZXNjLFxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0yNDUtXFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG5mcy9leHQ0L3Zlcml0eS5jOjI0NjpcXHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC92ZXJpdHkuYy0yNDctXFx0aWYgKGVycilcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0xMDIyPXN0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV91cGRhdGVfcmVmKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqZWFfaW5vZGUsXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmMtMTA2NS1cXG5mcy9leHQ0L3hhdHRyLmM6MTA2NjpcXHRyZXQgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGVhX2lub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC94YXR0ci5jLTEwNjctXFx0aWYgKHJldClcXG5mcy9leHQ0L3hhdHRyLmMtMTA2OC1cXHRcXHRleHQ0X3dhcm5pbmdfaW5vZGUoZWFfaW5vZGUsXFxuZnMvZXh0NC94YXR0ci5jOjEwNjk6XFx0XFx0XFx0XFx0ICAgXFxcImV4dDRfbWFya19pbG9jX2RpcnR5KCkgZmFpbGVkIHJldD0lZFxcXCIsIHJldCk7XFxuZnMvZXh0NC94YXR0ci5jLTEwNzAtb3V0Olxcbi0tXFxuZnMvZXh0NC94YXR0ci5jPTIzNDk9ZXh0NF94YXR0cl9zZXRfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTI0ODItXFx0XFx0XFx0bm9fZXhwYW5kID0gMDtcXG5mcy9leHQ0L3hhdHRyLmM6MjQ4MzpcXHRcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L3hhdHRyLmMtMjQ4NC1cXHRcXHQvKlxcbmZzL2V4dDQveGF0dHIuYzoyNDg1OlxcdFxcdCAqIFRoZSBiaCBpcyBjb25zdW1lZCBieSBleHQ0X21hcmtfaWxvY19kaXJ0eSwgZXZlbiB3aXRoXFxuZnMvZXh0NC94YXR0ci5jLTI0ODYtXFx0XFx0ICogZXJyb3IgIT0gMC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6MzEuMTg5MDAzNzY0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzNjkxMTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBpbiB0aGUgQ29udGV4dCBvZiBGYXN0IENvbW1pdCBSZXBsYXkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBgZXh0NF9tYXJrX2lsb2NfZGlydHlgLiBJIGtub3cgdGhpcyBmdW5jdGlvbiDigJMgaXQncyBhIHdvcmtob3JzZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBnZXR0aW5nIHRvbnMgb2YgdXNlLiBUaGUgY29yZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCBpdCdzIGFsdGVyaW5nIGhvdyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGJlaGF2ZXMsIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlIGNvbmRpdGlvbiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBoaW5nZXMgb24gYEVYVDRfRkNfUkVQTEFZYCBiZWluZyBzZXQgd2l0aGluIGBzX21vdW50X3N0YXRlYC4gVGhpcyBoYXMgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBiZWNhdXNlIGBFWFQ0X0ZDX1JFUExBWWAgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBmYXN0IGNvbW1pdCByZXBsYXkuXG5cbk5vdywgbXkga2V5IHF1ZXN0aW9uIGJlY29tZXM6IGlzIGBFWFQ0X0ZDX1JFUExBWWAgdHJ1bHkgc2V0IHdpdGhpbiBgc19tb3VudF9zdGF0ZWAgZHVyaW5nIHRoZSBwaGFzZXMgb2YgZmFzdCBjb21taXQgcmVwbGF5IHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzLCBhbmQgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlIHVuZGVyIHRob3NlIGNpcmN1bXN0YW5jZXMuIElmIHRoaXMgY2hlY2sgaXNuJ3QgaW4gcGxhY2UgSSBjb3VsZCBzZWUgc29tZSBiaWcgcHJvYmxlbXMgZG93biB0aGUgcm9hZC4gSSBuZWVkIHRvIGRpZyBpbiBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIG1lY2hhbmlzbXMgYW5kIGVuc3VyZSB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2Ugc29tZSBjcml0aWNhbCBkYXRhIGNvcnJ1cHRpb24gcmlzay4gVGhpcyBpcyBhIHN1YnRsZSBvcHRpbWl6YXRpb24gYW5kIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIGNvbmRpdGlvbnMgaXQncyBkZXNpZ25lZCB0byBoYW5kbGUgYXJlIHByZWNpc2VseSB0aG9zZSBpdCBhZGRyZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTozNi43MjU5MTc0MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjc3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GQ19SRVBMQVlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9iYWxsb2MuYz0zOTk9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2Jsb2NrX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9iYWxsb2MuYy00MDYtXFxuZnMvZXh0NC9iYWxsb2MuYzo0MDc6XFx0aWYgKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9iYWxsb2MuYy00MDgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaD0xMDQ4PXN0cnVjdCBleHQ0X2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0NC9leHQ0LmgtMTIzNy0jZGVmaW5lXFx0RVhUNF9PUlBIQU5fRlNcXHRcXHRcXHQweDAwMDRcXHQvKiBPcnBoYW5zIGJlaW5nIHJlY292ZXJlZCAqL1xcbmZzL2V4dDQvZXh0NC5oOjEyMzg6I2RlZmluZSBFWFQ0X0ZDX1JFUExBWVxcdFxcdFxcdDB4MDAyMFxcdC8qIEZhc3QgY29tbWl0IHJlcGxheSBvbmdvaW5nICovXFxuZnMvZXh0NC9leHQ0LmgtMTIzOS1cXG4tLVxcbmZzL2V4dDQvZXh0NF9qYmQyLmM9OTI9aGFuZGxlX3QgKl9fZXh0NF9qb3VybmFsX3N0YXJ0X3NiKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dDRfamJkMi5jLTExMS1cXHRqb3VybmFsID0gRVhUNF9TQihzYiktXFx1MDAzZXNfam91cm5hbDtcXG5mcy9leHQ0L2V4dDRfamJkMi5jOjExMjpcXHRpZiAoIWpvdXJuYWwgfHwgKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKVxcbmZzL2V4dDQvZXh0NF9qYmQyLmMtMTEzLVxcdFxcdHJldHVybiBleHQ0X2dldF9ub2pvdXJuYWwoKTtcXG4tLVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYz0zNjM9dm9pZCBleHQ0X2VzX2ZpbmRfZXh0ZW50X3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtMzY5LVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzozNzA6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTM3MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDE3PWJvb2wgZXh0NF9lc19zY2FuX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtNDIyLVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzo0MjM6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQyNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDYzPWJvb2wgZXh0NF9lc19zY2FuX2NsdShzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQ2OC1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6NDY5OlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00NzAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTkwNT12b2lkIGV4dDRfZXNfaW5zZXJ0X2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTkxOC1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6OTE5OlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy05MjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwMjQ9dm9pZCBleHQ0X2VzX2NhY2hlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTEwMzMtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjEwMzQ6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTEwMzUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwOTI9aW50IGV4dDRfZXNfbG9va3VwX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTExMDEtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjExMDI6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTExMDMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9MTYyMz12b2lkIGV4dDRfZXNfcmVtb3ZlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTE2MzAtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjE2MzE6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTE2MzItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTIyMDE9dm9pZCBleHQ0X2VzX2luc2VydF9kZWxheWVkX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTIyMTMtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjIyMTQ6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTIyMTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2LVxcdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ3OlxcdFxcdChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0OC19XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTkxNT1zdGF0aWMgaW50IGV4dDRfZmNfcmVjb3JkX21vZGlmaWVkX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8pXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkyOC1cXHRcXHRcXHRcXHRzaXplb2YoaW50KSAqIChzdGF0ZS1cXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgK1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTI5OlxcdFxcdFxcdFxcdEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UKSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkzMC1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM0LVxcdFxcdHN0YXRlLVxcdTAwM2VmY19tb2RpZmllZF9pbm9kZXNfc2l6ZSArPVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTM1OlxcdFxcdFxcdEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM2LVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yMTA4PWludCBleHQ0X2ZjX3JlY29yZF9yZWdpb25zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8sXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyNi1cXHRcXHRcXHRcXHQgICAgICAoc3RhdGUtXFx1MDAzZWZjX3JlZ2lvbnNfc2l6ZSArXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIxMjc6XFx0XFx0XFx0XFx0ICAgICAgIEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UKSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyOC1cXHRcXHRcXHRcXHQgICAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMxLVxcdFxcdHN0YXRlLVxcdTAwM2VmY19yZWdpb25zX3NpemUgKz1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEzMjpcXHRcXHRcXHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEzMy1cXHRcXHRzdGF0ZS1cXHUwMDNlZmNfcmVnaW9ucyA9IGZjX3JlZ2lvbnM7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQwNT12b2lkIGV4dDRfZmNfcmVwbGF5X2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDA4LVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDA5OlxcdHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2PSB+RVhUNF9GQ19SRVBMQVk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MTAtXFx0a2ZyZWUoc2JpLVxcdTAwM2VzX2ZjX3JlcGxheV9zdGF0ZS5mY19yZWdpb25zKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yNTgxPXN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXkoam91cm5hbF90ICpqb3VybmFsLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTgtXFx0XFx0c3RhdGUtXFx1MDAzZWZjX2N1cnJlbnRfcGFzcyA9IHBhc3M7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1OTk6XFx0XFx0c2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIHw9IEVYVDRfRkNfUkVQTEFZO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjAwLVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMjA9c3RydWN0IGV4dDRfZmNfc3RhdHMge1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTEyOS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTMwOiNkZWZpbmUgRVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlRcXHQ0XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTEzMS1cXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmM9ODE9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2lub2RlX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy04OC1cXG5mcy9leHQ0L2lhbGxvYy5jOjg5OlxcdGlmIChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaWFsbG9jLmMtOTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jPTIzNz12b2lkIGV4dDRfZnJlZV9pbm9kZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy0yOTUtXFx0fVxcbmZzL2V4dDQvaWFsbG9jLmM6Mjk2OlxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xcbmZzL2V4dDQvaWFsbG9jLmMtMjk3LVxcdFxcdGdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGJsb2NrX2dyb3VwKTtcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmM9OTMzPXN0cnVjdCBpbm9kZSAqX19leHQ0X25ld19pbm9kZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmMtMTA1My1cXG5mcy9leHQ0L2lhbGxvYy5jOjEwNTQ6XFx0XFx0aWYgKCEoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuZnMvZXh0NC9pYWxsb2MuYy0xMDU1LVxcdFxcdFxcdGdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGdyb3VwKTtcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmMtMTA3MC1cXHRcXHR9XFxuZnMvZXh0NC9pYWxsb2MuYzoxMDcxOlxcdFxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaWFsbG9jLmMtMTA3Mi1cXHRcXHQgICAgRVhUNF9NQl9HUlBfSUJJVE1BUF9DT1JSVVBUKGdycCkpXFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTEwODYtXFxuZnMvZXh0NC9pYWxsb2MuYzoxMDg3OlxcdFxcdGlmICgoIShzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpIFxcdTAwMjZcXHUwMDI2ICFoYW5kbGUpIHtcXG5mcy9leHQ0L2lhbGxvYy5jLTEwODgtXFx0XFx0XFx0QlVHX09OKG5ibG9ja3MgXFx1MDAzYz0gMCk7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTExOTItXFxuZnMvZXh0NC9pYWxsb2MuYzoxMTkzOlxcdFxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xcbmZzL2V4dDQvaWFsbG9jLmMtMTE5NC1cXHRcXHRcXHRncnAgPSBleHQ0X2dldF9ncm91cF9pbmZvKHNiLCBncm91cCk7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTEyMTgtXFx0XFx0XFx0XFx0XFx0KEVYVDRfSU5PREVTX1BFUl9HUk9VUChzYikgLSBpbm8pKTtcXG5mcy9leHQ0L2lhbGxvYy5jOjEyMTk6XFx0XFx0aWYgKCEoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKVxcbmZzL2V4dDQvaWFsbG9jLmMtMTIyMC1cXHRcXHRcXHR1cF9yZWFkKFxcdTAwMjZncnAtXFx1MDAzZWFsbG9jX3NlbSk7XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NDQwPXZvaWQgZXh0NF9jaGVja19tYXBfZXh0ZW50c19lbnYoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9leHQ0L2lub2RlLmMtNDQxLXtcXG5mcy9leHQ0L2lub2RlLmM6NDQyOlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy00NDMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTk3OT1zdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfZ2V0YmxrKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtOTg3LVxcbmZzL2V4dDQvaW5vZGUuYzo5ODg6XFx0QVNTRVJUKChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy05ODktXFx0XFx0ICAgIHx8IGhhbmRsZSAhPSBOVUxMIHx8IGNyZWF0ZSA9PSAwKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy0xMDE1LVxcdFxcdEFTU0VSVChjcmVhdGUgIT0gMCk7XFxuZnMvZXh0NC9pbm9kZS5jOjEwMTY6XFx0XFx0QVNTRVJUKChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy0xMDE3LVxcdFxcdFxcdCAgICB8fCAoaGFuZGxlICE9IE5VTEwpKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01Mjc3PXN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNTM1OS1cXHQgICAgZXh0NF9zaW11bGF0ZV9mYWlsKHNiLCBFWFQ0X1NJTV9JTk9ERV9DUkMpKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaW5vZGUuYzo1MzYwOlxcdCAgICAgKCEoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTUzNjEtXFx0XFx0ZXh0NF9lcnJvcl9pbm9kZV9lcnIoaW5vZGUsIGZ1bmN0aW9uLCBsaW5lLCAwLFxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTU1MjktXFx0XFx0LyogdmFsaWRhdGUgdGhlIGJsb2NrIHJlZmVyZW5jZXMgaW4gdGhlIGlub2RlICovXFxuZnMvZXh0NC9pbm9kZS5jOjU1MzA6XFx0XFx0aWYgKCEoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L2lub2RlLmMtNTUzMS1cXHRcXHRcXHQoU19JU1JFRyhpbm9kZS1cXHUwMDNlaV9tb2RlKSB8fCBTX0lTRElSKGlub2RlLVxcdTAwM2VpX21vZGUpIHx8XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjQwOD1pbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NDM0LVxcdGlmICghZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaW5vZGUuYzo2NDM1OlxcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTY0MzYtXFx0XFx0LypcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTIwMDA9c3RhdGljIHZvaWQgbWJfZnJlZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGV4dDRfYnVkZHkgKmU0YixcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTIwMzYtXFx0XFx0ICovXFxuZnMvZXh0NC9tYmFsbG9jLmM6MjAzNzpcXHRcXHRpZiAoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIHtcXG5mcy9leHQ0L21iYWxsb2MuYy0yMDM4LVxcdFxcdFxcdG1iX3JlZ2VuZXJhdGVfYnVkZHkoZTRiKTtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTU2MDc9dm9pZCBleHQ0X2Rpc2NhcmRfcHJlYWxsb2NhdGlvbnMoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTU2MjEtXFxuZnMvZXh0NC9tYmFsbG9jLmM6NTYyMjpcXHRpZiAoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcXG5mcy9leHQ0L21iYWxsb2MuYy01NjIzLVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTYyMjk9ZXh0NF9mc2Jsa190IGV4dDRfbWJfbmV3X2Jsb2NrcyhoYW5kbGVfdCAqaGFuZGxlLFxcbi0tXFxuZnMvZXh0NC9tYmFsbG9jLmMtNjI0NS1cXHR0cmFjZV9leHQ0X3JlcXVlc3RfYmxvY2tzKGFyKTtcXG5mcy9leHQ0L21iYWxsb2MuYzo2MjQ2OlxcdGlmIChzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcXG5mcy9leHQ0L21iYWxsb2MuYy02MjQ3LVxcdFxcdHJldHVybiBleHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKGFyLCBlcnJwKTtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTY2OTE9dm9pZCBleHQ0X2ZyZWVfYmxvY2tzKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L21iYWxsb2MuYy02NzA3LVxcbmZzL2V4dDQvbWJhbGxvYy5jOjY3MDg6XFx0aWYgKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSB7XFxuZnMvZXh0NC9tYmFsbG9jLmMtNjcwOS1cXHRcXHRleHQ0X2ZyZWVfYmxvY2tzX3NpbXBsZShpbm9kZSwgYmxvY2ssIEVYVDRfTlVNX0IyQyhzYmksIGNvdW50KSk7XFxuLS1cXG5mcy9leHQ0L25hbWVpLmM9MzIyNj1pbnQgX19leHQ0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKmRfbmFtZSxcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYy0zMjUyLVxcdFxcdCAqL1xcbmZzL2V4dDQvbmFtZWkuYzozMjUzOlxcdFxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvbmFtZWkuYy0zMjU0LVxcdFxcdFxcdHNraXBfcmVtb3ZlX2RlbnRyeSA9IDE7XFxuLS1cXG5mcy9leHQ0L25hbWVpLmM9Mzc5Nz1zdGF0aWMgaW50IGV4dDRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuLS1cXG5mcy9leHQ0L25hbWVpLmMtNDAwOC1cXHRcXHRpZiAodGVzdF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvbmFtZWkuYzo0MDA5OlxcdFxcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFxcdTAwMjZcXHUwMDI2XFxuZnMvZXh0NC9uYW1laS5jLTQwMTAtXFx0XFx0ICAgICEoZXh0NF90ZXN0X21vdW50X2ZsYWcoc2IsIEVYVDRfTUZfRkNfSU5FTElHSUJMRSkpKSB7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTI4NT1zdGF0aWMgaW50IGV4dDRfYmxvY2tfZ3JvdXBfbWV0YV9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBzaWxlbnQpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTMyNi1cXHRzYmktXFx1MDAzZXNfZGVzY19wZXJfYmxvY2sgPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLyBFWFQ0X0RFU0NfU0laRShzYik7XFxuZnMvZXh0NC9zdXBlci5jOjUzMjc6XFx0c2JpLVxcdTAwM2VzX21vdW50X3N0YXRlID0gbGUxNl90b19jcHUoZXMtXFx1MDAzZXNfc3RhdGUpIFxcdTAwMjYgfkVYVDRfRkNfUkVQTEFZO1xcbmZzL2V4dDQvc3VwZXIuYy01MzI4LVxcdHNiaS1cXHUwMDNlc19hZGRyX3Blcl9ibG9ja19iaXRzID0gaWxvZzIoRVhUNF9BRERSX1BFUl9CTE9DSyhzYikpO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTY1NjY9c3RhdGljIGludCBfX2V4dDRfcmVtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjc3Ny1cXHRcXHRcXHRzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgPSAobGUxNl90b19jcHUoZXMtXFx1MDAzZXNfc3RhdGUpIFxcdTAwMjZcXG5mcy9leHQ0L3N1cGVyLmM6Njc3ODpcXHRcXHRcXHRcXHRcXHQgICAgICB+RVhUNF9GQ19SRVBMQVkpO1xcbmZzL2V4dDQvc3VwZXIuYy02Nzc5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTozNi43NzExOTA0MDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc1MzA5MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZhc3QgQ29tbWl0IFJlcGxheSBCdWcgRml4IGluIGV4dDQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBmYXN0IGNvbW1pdCByZXBsYXkuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgaW5hcHByb3ByaWF0ZWx5IGF0dGFjaGluZyBpbm9kZXMgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXksIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGNhbiBsZWFkIHRvIG5hc3R5IGluY29uc2lzdGVuY2llcyBiZWNhdXNlIHRoZSBmaWxlc3lzdGVtIHdyaXRlYmFjayBtZWNoYW5pc21zIGFyZW4ndCBmdWxseSBzZXQgdXAgeWV0IGR1cmluZyByZXBsYXkuXG5cblRoZSBmaXggaXRzZWxmIGlzIGludHJpZ3VpbmcuIFRoZXkndmUgcmVwbGFjZWQgdGhlIGpvdXJuYWwgY2hlY2sgYCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbGAgd2l0aCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkgXHUwMDI2XHUwMDI2ICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpYC4gSW5pdGlhbGx5LCBJIHdhcyBhIGJpdCB0aHJvd24gYnkgdGhlIGBleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpYCBwYXJ0LiBJdCdzIGVzc2VudGlhbGx5IGNoZWNraW5nIGlmIGEgdHJhbnNhY3Rpb24gaGFuZGxlIGlzIHZhbGlkLCByaWdodD8gVGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgYGV4dDRfaGFuZGxlX3ZhbGlkYCBpcyBkZWZpbmVkIGFzIGEgc2ltcGxlIHBvaW50ZXIgY2hlY2s6IGFueXRoaW5nIGJlbG93IGBFWFQ0X05PSk9VUk5BTF9NQVhfUkVGX0NPVU5UYCBpcyBjb25zaWRlcmVkIGludmFsaWQuXG5cblNvLCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSlgIGltcGxpZXMgdGhhdCBqb3VybmFsaW5nIGlzbid0IGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBvciB0aGUgaGFuZGxlIGlzIGluIG5vam91cm5hbCBtb2RlLiBUaGlzIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGF2b2lkaW5nIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5LiBUaGV5IGFkZGVkIGEgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBGQyByZXBsYXksIHNvIHRoYXQgdGhpcyBjaGVjayB3b3JrcyBldmVuIGlmIGpvdXJuYWxpbmcgaXMgZW5hYmxlZC4gU28sIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBjb3JyZWN0bHkgYXZvaWRpbmcgd3JpdGViYWNrIGF0dGFjaG1lbnQgd2hlbiBlaXRoZXIgdGhlIHRyYW5zYWN0aW9uIGRvZXNuJ3QgbmVlZCB0byBiZSBqb3VybmFsZWQgb3IgdGhlIGZpbGVzeXN0ZW0gaXMgdW5kZXJnb2luZyByZXBsYXkuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIHRoaXMgYXJlYSBpcyByaXBlIGZvciBwb3RlbnRpYWwgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfZmNfcmVwbGF5YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJlY2F1c2UgaXQncyB0aGUgYGV4dDRfZmNfcmVwbGF5YCBwcm9jZXNzIHRoYXQgaXMgbGlrZWx5IHRvIHRyaWdnZXIgdGhpcyBidWcgc2NlbmFyaW8uIEkgc2hvdWxkIGFsc28gaGF2ZSBhbiBleWUgb3V0IGZvciBob3cgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBiZWhhdmVzIHdoZW4gZGVhbGluZyB3aXRoIGZhc3QgY29tbWl0IHJlcGxheS4gRnVuY3Rpb25zIHN1Y2ggYXMgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgb3Igc2ltaWxhciBmdW5jdGlvbiBjYWxscywgYXJlIG9mIGhpZ2ggaW50ZXJlc3QuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6NDQuODQ2NTAxNzU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzUwMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZmNfcmVwbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1ODY9c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xODYxLSNlbmRpZlxcbmZzL2V4dDQvZXh0NC5oOjE4NjI6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlIHNfZmNfcmVwbGF5X3N0YXRlO1xcbmZzL2V4dDQvZXh0NC5oLTE4NjMtfTtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMwNzk9dm9pZCBleHQ0X2ZjX2RlbChzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcXG5mcy9leHQ0L2V4dDQuaDozMDgwOmJvb2wgZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190IGJsb2NrKTtcXG5mcy9leHQ0L2V4dDQuaDozMDgxOnZvaWQgZXh0NF9mY19yZXBsYXlfY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcXG5mcy9leHQ0L2V4dDQuaC0zMDgyLWludCBleHQ0X2ZjX2NvbW1pdChqb3VybmFsX3QgKmpvdXJuYWwsIHRpZF90IGNvbW1pdF90aWQpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTE4MDQ9c3RhdGljIGlubGluZSB2b2lkIGV4dDRfZmNfZ2V0X3RsKHN0cnVjdCBleHQ0X2ZjX3RsX21lbSAqdGwsIHU4ICp2YWwpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxMy0vKiBVbmxpbmsgcmVwbGF5IGZ1bmN0aW9uICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4MTQ6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV91bmxpbmsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxNS1cXHRcXHRcXHRcXHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODIzLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODI0OlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19VTkxJTkssIGRhcmcuaW5vLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODI1LVxcdFxcdFxcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTItXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4NTM6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTQtXFx0XFx0XFx0XFx0c3RydWN0IGRlbnRyeV9pbmZvX2FyZ3MgKmRhcmcsXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg4OC0vKiBMaW5rIHJlcGxheSBmdW5jdGlvbiAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODg5OnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfbGluayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODkwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXh0NF9mY190bF9tZW0gKnRsLCB1OCAqdmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4OTYtXFx0dGxfdG9fZGFyZyhcXHUwMDI2ZGFyZywgdGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4OTc6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0xJTkssIGRhcmcuaW5vLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODk4LVxcdFxcdFxcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5MDUtXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MDY6XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzYiwgXFx1MDAyNmRhcmcsIGlub2RlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkwNy1cXHRpcHV0KGlub2RlKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0xOTE1PXN0YXRpYyBpbnQgZXh0NF9mY19yZWNvcmRfbW9kaWZpZWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubylcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkxNi17XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MTc6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkxOC1cXHRpbnQgaTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTQzLSAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTQ0OnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTk0NS1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXh0NF9mY190bF9tZW0gKnRsLCB1OCAqdmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NTgtXFx0aW5vID0gbGUzMl90b19jcHUoZmNfaW5vZGUuZmNfaW5vKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTk1OTpcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgdGFnLCBpbm8sIDAsIDApO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTYwLVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNDktICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwNTA6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9jcmVhdGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA1MS1cXHRcXHRcXHRcXHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDU5LVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMDYwOlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19DUkVBVCwgZGFyZy5pbm8sXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNjEtXFx0XFx0XFx0ZGFyZy5wYXJlbnRfaW5vLCBkYXJnLmRuYW1lX2xlbik7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5Mi1cXHR9XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwOTM6XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzYiwgXFx1MDAyNmRhcmcsIGlub2RlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5NC1cXHRpZiAocmV0KVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIxMDg9aW50IGV4dDRfZmNfcmVjb3JkX3JlZ2lvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubyxcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTEwLXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjExMTpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTEyLVxcdHN0cnVjdCBleHQ0X2ZjX2FsbG9jX3JlZ2lvbiAqcmVnaW9uO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNDctLyogUmVwbGF5IGFkZCByYW5nZSB0YWcgKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjE0ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1OCAqdmFsKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTQ5LXtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTYyLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMTYzOlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19BRERfUkFOR0UsXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNjQtXFx0XFx0bGUzMl90b19jcHUoZmNfYWRkX2V4LmZjX2lubyksIGxlMzJfdG9fY3B1KGV4LVxcdTAwM2VlZV9ibG9jayksXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjI2Nz1zdGF0aWMgaW50XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyNjg6ZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU4ICp2YWwpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNjkte1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNzktXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyODA6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0RFTF9SQU5HRSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI4MS1cXHRcXHRsZTMyX3RvX2NwdShscmFuZ2UuZmNfaW5vKSwgY3VyLCByZW1haW5pbmcpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIzMjg9c3RhdGljIHZvaWQgZXh0NF9mY19zZXRfYml0bWFwc19hbmRfY291bnRlcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjMyOS17XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzMzA6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjMzMS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODYtICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzODc6Ym9vbCBleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2ZzYmxrX3QgYmxrKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzg4LXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjM4OS1cXHRpbnQgaTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjM5MDpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzkxLVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MDQtLyogQ2xlYW51cCBmdW5jdGlvbiBjYWxsZWQgYWZ0ZXIgcmVwbGF5ICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI0MDU6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MDYte1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0MTQ9c3RhdGljIGJvb2wgZXh0NF9mY192YWx1ZV9sZW5faXN2YWxpZChzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1Ny0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ1ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3NjYW4oam91cm5hbF90ICpqb3VybmFsLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDU5LVxcdFxcdFxcdFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBvZmYsXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2My1cXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2NDpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDY1LVxcdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTcyLW91dF9lcnI6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1NzM6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXlfc2NhbihzYiwgcmV0LCBvZmYpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU4MC0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4MTpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU4Mi1cXHRcXHRcXHRcXHRlbnVtIHBhc3N0eXBlIHBhc3MsIGludCBvZmYsIHRpZF90IGV4cGVjdGVkX3RpZClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTg4LVxcdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4OTpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlID0gXFx1MDAyNnNiaS1cXHUwMDNlc19mY19yZXBsYXlfc3RhdGU7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTAtXFx0c3RydWN0IGV4dDRfZmNfdGFpbCB0YWlsO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTMtXFx0XFx0c3RhdGUtXFx1MDAzZWZjX2N1cnJlbnRfcGFzcyA9IFBBU1NfU0NBTjtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU5NDpcXHRcXHRyZXR1cm4gZXh0NF9mY19yZXBsYXlfc2Nhbihqb3VybmFsLCBiaCwgb2ZmLCBleHBlY3RlZF90aWQpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTk1LVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjMxLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfTElOSzpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjYzMjpcXHRcXHRcXHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzMtXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzQtXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19VTkxJTks6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2MzU6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfdW5saW5rKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzYtXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzctXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19BRERfUkFOR0U6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2Mzg6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfYWRkX3JhbmdlKHNiLCB2YWwpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM5LVxcdFxcdFxcdGJyZWFrO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQwLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfQ1JFQVQ6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDE6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfY3JlYXRlKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDItXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDMtXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19ERUxfUkFOR0U6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDQ6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHNiLCB2YWwpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ1LVxcdFxcdFxcdGJyZWFrO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ2LVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfSU5PREU6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDc6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfaW5vZGUoc2IsIFxcdTAwMjZ0bCwgdmFsKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OC1cXHRcXHRcXHRicmVhaztcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OS1cXHRcXHRjYXNlIEVYVDRfRkNfVEFHX1BBRDpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1MDpcXHRcXHRcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfUEFELCAwLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjUxLVxcdFxcdFxcdFxcdFxcdCAgICAgdGwuZmNfbGVuLCAwKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjUzLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfVEFJTDpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1NDpcXHRcXHRcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfVEFJTCxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1NS1cXHRcXHRcXHRcXHRcXHQgICAgIDAsIHRsLmZjX2xlbiwgMCk7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY2MS1cXHRcXHRkZWZhdWx0OlxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjYyOlxcdFxcdFxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCB0bC5mY190YWcsIDAsIHRsLmZjX2xlbiwgMCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NjMtXFx0XFx0XFx0cmV0ID0gLUVDQU5DRUxFRDtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yNjczPXZvaWQgZXh0NF9mY19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjc5LVxcdCAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjgwOlxcdGpvdXJuYWwtXFx1MDAzZWpfZmNfcmVwbGF5X2NhbGxiYWNrID0gZXh0NF9mY19yZXBsYXk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODEtXFx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oPTEzOT1zdHJ1Y3QgZXh0NF9mY19hbGxvY19yZWdpb24ge1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0Ny0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTQ4OnN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSB7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0OS1cXHRpbnQgZmNfcmVwbGF5X251bV90YWdzO1xcbi0tXFxuZnMvZXh0NC9tYmFsbG9jLmM9NjE2Mj1leHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKHN0cnVjdCBleHQ0X2FsbG9jYXRpb25fcmVxdWVzdCAqYXIsIGludCAqZXJycClcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTYxOTMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9tYmFsbG9jLmM6NjE5NDpcXHRcXHRcXHRpZiAoZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc2IsXFxuZnMvZXh0NC9tYmFsbG9jLmMtNjE5NS1cXHRcXHRcXHRcXHRleHQ0X2dyb3VwX2ZpcnN0X2Jsb2NrX25vKHNiLCBncm91cCkgK1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNDY9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTY0NS1cXHR9XFxuZnMvZXh0NC9zdXBlci5jOjU2NDY6XFx0ZXh0NF9mY19yZXBsYXlfY2xlYW51cChzYik7XFxuZnMvZXh0NC9zdXBlci5jLTU2NDctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjQ0Ljg5NDI1NTc1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NjIxMzk5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRmFzdCBDb21taXQgUmVwbGF5IEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBmYXN0IGNvbW1pdCByZXBsYXkgc3R1ZmYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZ1bmN0aW9uczogYGV4dDRfZmNfcmVwbGF5YCwgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBgZXh0NF9mY19yZXBsYXlfdW5saW5rYCwgYGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZWAsIGBleHQ0X2ZjX3JlcGxheV9jcmVhdGVgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X2RlbF9yYW5nZWAuIFRoZXkncmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnkgbmFtZXMsIGFuZCB0aG9zZSBmdW5jdGlvbiBzeW1ib2xzIGFyZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGltcGxlbWVudGF0aW9uLiBTZWVtcyBsaWtlIHRoZXkgaGFuZGxlIGRpZmZlcmVudCBhc3BlY3RzIG9mIHJlcGxheWluZyB0aGUgZmFzdCBjb21taXQgZGF0YSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZlYXR1cmUgZGVwZW5kcyBvbiwgbGV0J3MgY2hlY2sgdGhlIEtjb25maWcuXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25maWd1cmVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyAqZmFzdCBjb21taXQqIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXMgdGhlcmUgYSBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24ganVzdCBmb3IgdGhlIGZhc3QgY29tbWl0IGZlYXR1cmU/IE9yLCBpcyBpdCBqdXN0IGltcGxpY2l0bHkgZW5hYmxlZC9kaXNhYmxlZCBhcyBwYXJ0IG9mIHRoZSBicm9hZGVyIEVYVDRfRlMgY29uZmlndXJhdGlvbj8gSSBoYXZlIGEgZmVlbGluZyB0aGUgYW5zd2VyIGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gZmFzdCBjb21taXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjUwLjQ1NjM5ODQxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTYyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSk9VUk5BTF9GQVNUX0NPTU1JVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDQuaD0xMDQ4PXN0cnVjdCBleHQ0X2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0NC9leHQ0LmgtMTMwOC1cXG5mcy9leHQ0L2V4dDQuaDoxMzA5OiNkZWZpbmUgRVhUNF9NT1VOVDJfSk9VUk5BTF9GQVNUX0NPTU1JVFxcdDB4MDAwMDAwMTAgLyogSm91cm5hbCBmYXN0IGNvbW1pdCAqL1xcbmZzL2V4dDQvZXh0NC5oLTEzMTAtI2RlZmluZSBFWFQ0X01PVU5UMl9EQVhfTkVWRVJcXHRcXHQweDAwMDAwMDIwIC8qIERvIG5vdCBhbGxvdyBEaXJlY3QgQWNjZXNzICovXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQ0PXN0YXRpYyBib29sIGV4dDRfZmNfZGlzYWJsZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1LXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2OlxcdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ3LVxcdFxcdChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSk7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTU4Nj1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE1OTUtXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE1OTY6XFx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xNTk3LVxcdFxcdHJldHVybiBqYmQyX2NvbXBsZXRlX3RyYW5zYWN0aW9uKGpvdXJuYWwsIGNvbW1pdF90aWQpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODAtXFx0am91cm5hbC1cXHUwMDNlal9mY19yZXBsYXlfY2FsbGJhY2sgPSBleHQ0X2ZjX3JlcGxheTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY4MTpcXHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTM0NTQ9c3RhdGljIGJvb2wgZXh0NF9pbm9kZV9kYXRhc3luY19kaXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTM0NjItXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmZzL2V4dDQvaW5vZGUuYzozNDYzOlxcdFxcdGlmICh0ZXN0X29wdDIoaW5vZGUtXFx1MDAzZWlfc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbmZzL2V4dDQvaW5vZGUuYy0zNDY0LVxcdFxcdFxcdHJldHVybiAhbGlzdF9lbXB0eShcXHUwMDI2RVhUNF9JKGlub2RlKS1cXHUwMDNlaV9mY19saXN0KTtcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYz0zNzk3PXN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYy00MDA3LVxcdFxcdFxcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgbmV3LmRlbnRyeSk7XFxuZnMvZXh0NC9uYW1laS5jOjQwMDg6XFx0XFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L25hbWVpLmMtNDAwOS1cXHRcXHQgICAgIShFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTE4ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBtb3VudF9vcHRzIHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xOTU0LSNpZmRlZiBDT05GSUdfRVhUNF9ERUJVR1xcbmZzL2V4dDQvc3VwZXIuYzoxOTU1OlxcdHtPcHRfZmNfZGVidWdfZm9yY2UsIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVQsXFxuZnMvZXh0NC9zdXBlci5jLTE5NTYtXFx0IE1PUFRfU0VUIHwgTU9QVF8yIHwgTU9QVF9FWFQ0X09OTFl9LFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQzOTY9c3RhdGljIHZvaWQgZXh0NF9zZXRfZGVmX29wdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NDE1LVxcdGlmIChleHQ0X2hhc19mZWF0dXJlX2Zhc3RfY29tbWl0KHNiKSlcXG5mcy9leHQ0L3N1cGVyLmM6NDQxNjpcXHRcXHRzZXRfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCk7XFxuZnMvZXh0NC9zdXBlci5jLTQ0MTctXFx0LyogZG9uJ3QgZm9yZ2V0IHRvIGVuYWJsZSBqb3VybmFsX2NzdW0gd2hlbiBtZXRhZGF0YV9jc3VtIGlzIGVuYWJsZWQuICovXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDk2ND1zdGF0aWMgaW50IGV4dDRfbG9hZF9hbmRfaW5pdF9qb3VybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNDk4Ny1cXG5mcy9leHQ0L3N1cGVyLmM6NDk4ODpcXHRpZiAodGVzdF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvc3VwZXIuYy00OTg5LVxcdFxcdCFqYmQyX2pvdXJuYWxfc2V0X2ZlYXR1cmVzKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2pvdXJuYWwsIDAsIDAsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTA0OD1zdGF0aWMgaW50IGV4dDRfY2hlY2tfam91cm5hbF9kYXRhX21vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MDU1LVxcdFxcdGNsZWFyX29wdChzYiwgRElPUkVBRF9OT0xPQ0spO1xcbmZzL2V4dDQvc3VwZXIuYzo1MDU2OlxcdFxcdGNsZWFyX29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpO1xcbmZzL2V4dDQvc3VwZXIuYy01MDU3LVxcdFxcdGlmICh0ZXN0X29wdDIoc2IsIEVYUExJQ0lUX0RFTEFMTE9DKSkge1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNDY9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTU0NC1cXHRcXHRjbGVhcl9vcHQoc2IsIERBVEFfRkxBR1MpO1xcbmZzL2V4dDQvc3VwZXIuYzo1NTQ1OlxcdFxcdGNsZWFyX29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpO1xcbmZzL2V4dDQvc3VwZXIuYy01NTQ2LVxcdFxcdHNiaS1cXHUwMDNlc19qb3VybmFsID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6NTAuNTAxNjU5NDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzU0MzQ2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBleHQ0J3MgRmFzdCBDb21taXQgRmVhdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBleHQ0J3MgXCJmYXN0IGNvbW1pdFwiIGZlYXR1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGV4dDQgZmlsZXN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCBoYXZlIHRoZSBgZmFzdF9jb21taXRgIGZsYWcgc2V0LiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBhIHNlbnNpYmxlIGRlZmF1bHQgaXMgYWx3YXlzIGFwcHJlY2lhdGVkLiBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG5vdy4gSXMgdGhlcmUgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gY29udHJvbGxpbmcgZmFzdCBjb21taXQ/IExldCBtZSBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFNlZW1zIGxpa2UgdGhlcmUgaXNuJ3Qgb25lIHNwZWNpZmljYWxseSBmb3IgZmFzdCBjb21taXQsIGFuZCBpdCdzIGxpa2VseSBnb3Zlcm5lZCBieSB0aGUgbW9yZSBnZW5lcmFsIGBDT05GSUdfRVhUNF9GU2AgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGV4dDQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0J3MgYWN0aXZhdGVkIGFuZCBkZWFjdGl2YXRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTo1NS44NzcwOTYzMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzM3OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjU1LjkyMTg0MDEzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTM3MzAzMTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gRVhUNCBGYXN0IENvbW1pdCBSZXBsYXkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBFWFQ0X0ZTYC4gTGV0J3MgZGlnIGludG8gdGhpcyBwYXRjaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWFzb25pbmcgYmVoaW5kIGl0LiBJdCdzIGFkZHJlc3NpbmcgYSBidWcgaW4gYGV4dDRfbWFya19pbG9jX2RpcnR5YC4gU3BlY2lmaWNhbGx5LCBpdCBjb25jZXJucyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHByb2Nlc3MsIHdoZXJlIHRoZSBjb2RlIHdhcyBpbmFwcHJvcHJpYXRlbHkgYXR0ZW1wdGluZyB0byBhdHRhY2ggYW4gaW5vZGUgdG8gd3JpdGViYWNrIGJlZm9yZSB0aGUgZmlsZXN5c3RlbSdzIHdyaXRlYmFjayBwYXRocyBhcmUgZnVsbHkgc2V0IHVwLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBUaGUgZml4IGludm9sdmVzIGNvbmRpdGlvbmFsbHkgc2tpcHBpbmcgdGhpcyBpbm9kZSBhdHRhY2htZW50IGR1cmluZyByZXBsYXkgaWYgZWl0aGVyIGBFWFQ0X0ZDX1JFUExBWWAgaXMgc2V0IGluIGBzX21vdW50X3N0YXRlYCBvciB0aGUgaGFuZGxlIGl0c2VsZiBpc24ndCB2YWxpZC5cblxuVGhpcyBjaGFuZ2UgaXMgc3F1YXJlbHkgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoYXQgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEZ1bmN0aW9uYWxseSBzcGVha2luZywgaXQncyBhIGNyaXRpY2FsIGZpeC4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gZnV6eiB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIHJvYnVzdGx5LlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgYXJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAsIG9mIGNvdXJzZSwgYWxvbmcgd2l0aCB0aGUgcmVwbGF5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgZXh0NF9mY19yZXBsYXlgLCBgZXh0NF9mY19yZXBsYXlfaW5vZGVgLCBgZXh0NF9mY19yZXBsYXlfY3JlYXRlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X3VubGlua2AuXG5cbk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBpdCBsb29rcyBsaWtlIG9ubHkgYEVYVDRfRlNgIGlzIGludm9sdmVkIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBObyBvdGhlciByZWxhdGVkIGNvbmZpZ3MuXG5cblNvLCBsZXQgbWUgc29saWRpZnkgdGhlIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIHByZXZlbnQgYXR0YWNoaW5nIGFuIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSBiZWNhdXNlIHRob3NlIHdyaXRlYmFjayBwYXRocyBhcmVuJ3QgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoaXMgY2hhbmdlIGlzIGRpcmVjdGx5IGZ1bmN0aW9uYWwsIG1vZGlmeWluZyBleHQ0J3MgY29yZSBjb2RlIHNwZWNpZmljYWxseSBpbXBhY3RpbmcgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBiZWhhdmlvci4gSXQncyBhIHJlYWNoYWJsZSBjb2RlIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBtYW5hZ2VzIGlub2RlIGRpcnR5aW5nIGVmZmVjdGl2ZWx5LiBPa2F5LCBJIHRoaW5rIHRoYXQncyBhIGdvb2Qgc3VtbWFyeS4gSSdsbCBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTUyLCJPdXRwdXRUb2tlbnMiOjE5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNjowNy4yOTQ4NzM2MDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTMxNjc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfbWFya19pbG9jX2RpcnR5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfaW5vZGVcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5X2NyZWF0ZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfbGlua1wiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 11:48:55 +0000 UTC FinishedAt: 2026-08-04 12:16:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "974d0be0cb8e48d63b9d413a2e1a8fba16cd2583", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "974d0be0cb8e48d63b9d413a2e1a8fba16cd2583", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "7b906041-0d7c-46b2-babf-cb64ec558a94" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_mark_iloc_dirty", "ext4_fc_replay", "ext4_fc_replay_inode", "ext4_fc_replay_create", "ext4_fc_replay_link", "ext4_fc_replay_unlink" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X21hcmtfaWxvY19kaXJ0eSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9pbm9kZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfbGluayYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDEyOjE1OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggN2ExZjk2MWNkMTFjZS4uMTJmZjg0YWI1NzQxZCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNjQwOCw5ICYjNDM7NjQwOCwxMCBAQCBpbnQgZXh0NF9jaHVua190cmFuc19ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5yYmxvY2tzKVxuIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxuIFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxuIHtcbiYjNDM7XHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtcbiBcdGludCBlcnIgPSAwO1xuIFxuLVx0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoaW5vZGUtXHUwMDNlaV9zYik7XG4mIzQzO1x0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpO1xuIFx0aWYgKHVubGlrZWx5KGVycikpIHtcbiBcdFx0cHV0X2JoKGlsb2MtXHUwMDNlYmgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuQEAgLTY0MjUsOSAmIzQzOzY0MjYsMTMgQEAgaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG4gXHRwdXRfYmgoaWxvYy1cdTAwM2ViaCk7XG4gXHQvKlxuIFx0ICogTWFyayB0aGF0IHRoZXJlJiMzOTtzIG1ldGFkYXRhIHdyaXRlb3V0IHBlbmRpbmcgZm9yIHRoZSBpbm9kZSBzbyB0aGF0IGl0XG4tXHQgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuXG4mIzQzO1x0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLiBXZSBkb24mIzM5O3QgYm90aGVyIGZvclxuJiM0MztcdCAqIGZhc3Rjb21taXQgcmVwbGF5IGFzIHRoYXQgZmx1c2hlcyB0aGUgd2hvbGUgYmRldiBhZnRlcndhcmRzIGFueXdheS5cbiYjNDM7XHQgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaFxuJiM0MztcdCAqIGFyZW4mIzM5O3QgZnVsbHkgaW5pdGlhbGl6ZWQgeWV0LlxuIFx0ICovXG4tXHRpZiAoIUVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19qb3VybmFsKSB7XG4mIzQzO1x0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhKEVYVDRfU0Ioc2IpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xuIFx0XHQvKlxuIFx0XHQgKiBJbm9kZSBkaWRuJiMzOTt0IG5lZWQgdG8gZ28gdGhyb3VnaCBkaXJ0eWluZywgbWFrZSBzdXJlIGl0IGlzXG4gXHRcdCAqIGF0dGFjaGVkIHRvIHdiIHNvIHRoYXQgd3JpdGViYWNrIGNhbiBoYW5kbGUgaXQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X21hcmtfaWxvY19kaXJ0eSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9pbm9kZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9jcmVhdGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfbGluayYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDEyOjE1OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IDdhMWY5NjFjZDExY2UuLjEyZmY4NGFiNTc0MWQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTY0MDgsOSAmIzQzOzY0MDgsMTAgQEAgaW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcykKIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLAogCQkJIHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpCiB7CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS0mZ3Q7aV9zYjsKIAlpbnQgZXJyID0gMDsKIAotCWVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKGlub2RlLSZndDtpX3NiKTsKJiM0MzsJZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpOwogCWlmICh1bmxpa2VseShlcnIpKSB7CiAJCXB1dF9iaChpbG9jLSZndDtiaCk7CiAJCXJldHVybiBlcnI7CkBAIC02NDI1LDkgJiM0Mzs2NDI2LDEzIEBAIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLAogCXB1dF9iaChpbG9jLSZndDtiaCk7CiAJLyoKIAkgKiBNYXJrIHRoYXQgdGhlcmUmIzM5O3MgbWV0YWRhdGEgd3JpdGVvdXQgcGVuZGluZyBmb3IgdGhlIGlub2RlIHNvIHRoYXQgaXQKLQkgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuCiYjNDM7CSAqIGdldHMgcHJvcGVybHkgZmx1c2hlZCBvbiBmc3luYygyKSBhbmQgc2ltaWxhci4gV2UgZG9uJiMzOTt0IGJvdGhlciBmb3IKJiM0MzsJICogZmFzdGNvbW1pdCByZXBsYXkgYXMgdGhhdCBmbHVzaGVzIHRoZSB3aG9sZSBiZGV2IGFmdGVyd2FyZHMgYW55d2F5LgomIzQzOwkgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaAomIzQzOwkgKiBhcmVuJiMzOTt0IGZ1bGx5IGluaXRpYWxpemVkIHlldC4KIAkgKi8KLQlpZiAoIUVYVDRfU0IoaW5vZGUtJmd0O2lfc2IpLSZndDtzX2pvdXJuYWwpIHsKJiM0MzsJaWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpICZhbXA7JmFtcDsKJiM0MzsJICAgICEoRVhUNF9TQihzYiktJmd0O3NfbW91bnRfc3RhdGUgJmFtcDsgRVhUNF9GQ19SRVBMQVkpKSB7CiAJCS8qCiAJCSAqIElub2RlIGRpZG4mIzM5O3QgbmVlZCB0byBnbyB0aHJvdWdoIGRpcnR5aW5nLCBtYWtlIHN1cmUgaXQgaXMKIAkJICogYXR0YWNoZWQgdG8gd2Igc28gdGhhdCB3cml0ZWJhY2sgY2FuIGhhbmRsZSBpdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM0MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV4dDQgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGZzL2V4dDQvaW5vZGUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBmdW5jdGlvbi4gVGhlIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQuIFRoZSBpbml0aWFsIGBpbm9kZS0mZ3Q7aV9zYmAgY2FsbCBpcyBjaGFuZ2VkIHRvIGBzYmAgdXNpbmcgdGhlIGBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtJmd0O2lfc2I7YCBkZWZpbml0aW9uIGFuZCB0aGUgam91cm5hbCBjaGVjayBoYXMgY2hhbmdlZCBmcm9tIGAhRVhUNF9TQihpbm9kZS0mZ3Q7aV9zYiktJmd0O3Nfam91cm5hbGAgdG8gYCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpICZhbXA7JmFtcDsgIShFWFQ0X1NCKHNiKS0mZ3Q7c19tb3VudF9zdGF0ZSAmYW1wOyBFWFQ0X0ZDX1JFUExBWSlgLiBUaGlzIG1vZGlmaWNhdGlvbiBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHNlZW1zIHRvIGJlIG9wdGltaXppbmcgdGhlIG1ldGFkYXRhIHdyaXRlb3V0IHBhdGgsIHNwZWNpZmljYWxseSBhdm9pZGluZyB0aGUgd3JpdGViYWNrIGF0dGFjaG1lbnQgaW4gZmFzdCBjb21taXQgcmVwbGF5IHNjZW5hcmlvcy4gSXQgaXMgZmFzdGVyIHRoaXMgd2F5IGFuZCB3ZSBhdm9pZCBlbnRlcmluZyBmcyB3cml0ZWJhY2sgcGF0aHMgd2hpY2ggYXJlbiYjMzk7dCBmdWxseSBpbml0aWFsaXplZCB5ZXQuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGNvcmUgZXh0NCBmdW5jdGlvbiB3aXRoaW4gdGhlIGlub2RlIGhhbmRsaW5nLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgYSBwcmltZSB0YXJnZXQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyB0byBlbnN1cmUgdGhlIGV4dDQgZmlsZXN5c3RlbSBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgYENPTkZJR19FWFQ0X0ZTYC4gTm93IEkgY2FuIGZvY3VzIG9uIHRoaXMgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbC4gSSYjMzk7bGwgbmVlZCB0byBkZWx2ZSBkZWVwZXIgaW50byB0aGUgY29kZSBhcm91bmQgYGZzL2V4dDQvaW5vZGUuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9tYXJrX2lsb2NfZGlydHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2V4dDRfamJkMi5oPTEyNT1pbnRcbmZzL2V4dDQvZXh0NF9qYmQyLmg6MTI2OmV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L2V4dDRfamJkMi5oLTEyNy1cdFx0ICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MjY3PXN0YXRpYyBpbnQgZXh0NF9jcmVhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTMyOC1cdGdldF9iaChpcy5pbG9jLmJoKTtcbmZzL2V4dDQvaW5saW5lLmM6MzI5Olx0ZXJyb3IgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpcy5pbG9jKTtcbmZzL2V4dDQvaW5saW5lLmMtMzMwLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MzM2PXN0YXRpYyBpbnQgZXh0NF91cGRhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTM5OC1cdGdldF9iaChpcy5pbG9jLmJoKTtcbmZzL2V4dDQvaW5saW5lLmM6Mzk5Olx0ZXJyb3IgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpcy5pbG9jKTtcbmZzL2V4dDQvaW5saW5lLmMtNDAwLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9NDM2PXN0YXRpYyBpbnQgZXh0NF9kZXN0cm95X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmMtNDg5LVx0Z2V0X2JoKGlzLmlsb2MuYmgpO1xuZnMvZXh0NC9pbmxpbmUuYzo0OTA6XHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlzLmlsb2MpO1xuZnMvZXh0NC9pbmxpbmUuYy00OTEtXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTYzOTk9aW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2Nrcylcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjQwNy0gKi9cbmZzL2V4dDQvaW5vZGUuYzo2NDA4OmludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxuZnMvZXh0NC9pbm9kZS5jLTY0MDktXHRcdFx0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY1NzU9aW50IGV4dDRfZXhwYW5kX2V4dHJhX2lzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTY2MDgtXG5mcy9leHQ0L2lub2RlLmM6NjYwOTpcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgaWxvYyk7XG5mcy9leHQ0L2lub2RlLmMtNjYxMC1cdGlmICghZXJyb3IpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY2MzI9aW50IF9fZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTY2NDgtXG5mcy9leHQ0L2lub2RlLmM6NjY0OTpcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlsb2MpO1xuZnMvZXh0NC9pbm9kZS5jLTY2NTAtb3V0OlxuLS1cbmZzL2V4dDQvaW9jdGwuYz01OTA9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldGZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pb2N0bC5jLTY4Mi1cbmZzL2V4dDQvaW9jdGwuYzo2ODM6XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvaW9jdGwuYy02ODQtZmxhZ3NfZXJyOlxuLS1cbmZzL2V4dDQvaW9jdGwuYz03MTY9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldHByb2plY3Qoc3RydWN0IGlub2RlICppbm9kZSwgX191MzIgcHJvamlkKVxuLS1cbmZzL2V4dDQvaW9jdGwuYy03OTMtb3V0X2RpcnR5OlxuZnMvZXh0NC9pb2N0bC5jOjc5NDpcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lvY3RsLmMtNzk1LVx0aWYgKCFlcnIpXG4tLVxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5mcy9leHQ0L2lvY3RsLmMtMTU4Ni1cdFx0XHRpbm9kZS1cdTAwM2VpX2dlbmVyYXRpb24gPSBnZW5lcmF0aW9uO1xuZnMvZXh0NC9pb2N0bC5jOjE1ODc6XHRcdFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lvY3RsLmMtMTU4OC1cdFx0fVxuLS1cbmZzL2V4dDQvb3JwaGFuLmM9MTAxPWludCBleHQ0X29ycGhhbl9hZGQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L29ycGhhbi5jLTE2NS1cdFx0ZXJyID0gZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEoaGFuZGxlLCBOVUxMLCBzYmktXHUwMDNlc19zYmgpO1xuZnMvZXh0NC9vcnBoYW4uYzoxNjY6XHRcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L29ycGhhbi5jLTE2Ny1cdFx0aWYgKCFlcnIpXG4tLVxuZnMvZXh0NC9vcnBoYW4uYz0yMjU9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMjk0LVx0XHRORVhUX09SUEhBTihpX3ByZXYpID0gaW5vX25leHQ7XG5mcy9leHQ0L29ycGhhbi5jOjI5NTpcdFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpX3ByZXYsIFx1MDAyNmlsb2MyKTtcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVx0XHRtdXRleF91bmxvY2soXHUwMDI2c2JpLVx1MDAzZXNfb3JwaGFuX2xvY2spO1xuLS1cbmZzL2V4dDQvb3JwaGFuLmMtMzAwLVx0TkVYVF9PUlBIQU4oaW5vZGUpID0gMDtcbmZzL2V4dDQvb3JwaGFuLmM6MzAxOlx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L29ycGhhbi5jLTMwMi1vdXRfZXJyOlxuLS1cbmZzL2V4dDQvcmVzaXplLmM9ODE5PXN0YXRpYyBpbnQgYWRkX25ld19nZGIoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3Jlc2l6ZS5jLTkxMy1cdFx0XHQgICAoOSAtIEVYVDRfU0Ioc2IpLVx1MDAzZXNfY2x1c3Rlcl9iaXRzKTtcbmZzL2V4dDQvcmVzaXplLmM6OTE0Olx0ZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L3Jlc2l6ZS5jLTkxNS1cdG1lbXNldChnZGJfYmgtXHUwMDNlYl9kYXRhLCAwLCBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSk7XG4tLVxuZnMvZXh0NC9yZXNpemUuYz0xMDE4PXN0YXRpYyBpbnQgcmVzZXJ2ZV9iYWNrdXBfZ2RiKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9yZXNpemUuYy0xMTAwLVx0aW5vZGUtXHUwMDNlaV9ibG9ja3MgJiM0Mzs9IHJlc2VydmVkX2dkYiAqIHNiLVx1MDAzZXNfYmxvY2tzaXplIFx1MDAzZVx1MDAzZSAoOSAtIGNsdXN0ZXJfYml0cyk7XG5mcy9leHQ0L3Jlc2l6ZS5jOjExMDE6XHRleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvcmVzaXplLmMtMTEwMi1cbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTE5MT1zdGF0aWMgaW50IGV4dDRfZW5kX2VuYWJsZV92ZXJpdHkoc3RydWN0IGZpbGUgKmZpbHAsIGNvbnN0IHZvaWQgKmRlc2MsXG4tLVxuZnMvZXh0NC92ZXJpdHkuYy0yNDUtXHRleHQ0X3NldF9pbm9kZV9mbGFncyhpbm9kZSwgZmFsc2UpO1xuZnMvZXh0NC92ZXJpdHkuYzoyNDY6XHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQvdmVyaXR5LmMtMjQ3LVx0aWYgKGVycilcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MTAyMj1zdGF0aWMgaW50IGV4dDRfeGF0dHJfaW5vZGVfdXBkYXRlX3JlZihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmVhX2lub2RlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xMDY1LVxuZnMvZXh0NC94YXR0ci5jOjEwNjY6XHRyZXQgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGVhX2lub2RlLCBcdTAwMjZpbG9jKTtcbmZzL2V4dDQveGF0dHIuYy0xMDY3LVx0aWYgKHJldClcbmZzL2V4dDQveGF0dHIuYy0xMDY4LVx0XHRleHQ0X3dhcm5pbmdfaW5vZGUoZWFfaW5vZGUsXG5mcy9leHQ0L3hhdHRyLmM6MTA2OTpcdFx0XHRcdCAgIFwmIzM0O2V4dDRfbWFya19pbG9jX2RpcnR5KCkgZmFpbGVkIHJldD0lZFwmIzM0OywgcmV0KTtcbmZzL2V4dDQveGF0dHIuYy0xMDcwLW91dDpcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MjM0OT1leHQ0X3hhdHRyX3NldF9oYW5kbGUoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG5hbWVfaW5kZXgsXG4tLVxuZnMvZXh0NC94YXR0ci5jLTI0ODItXHRcdFx0bm9fZXhwYW5kID0gMDtcbmZzL2V4dDQveGF0dHIuYzoyNDgzOlx0XHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFx1MDAyNmlzLmlsb2MpO1xuZnMvZXh0NC94YXR0ci5jLTI0ODQtXHRcdC8qXG5mcy9leHQ0L3hhdHRyLmM6MjQ4NTpcdFx0ICogVGhlIGJoIGlzIGNvbnN1bWVkIGJ5IGV4dDRfbWFya19pbG9jX2RpcnR5LCBldmVuIHdpdGhcbmZzL2V4dDQveGF0dHIuYy0yNDg2LVx0XHQgKiBlcnJvciAhPSAwLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBpbiB0aGUgQ29udGV4dCBvZiBGYXN0IENvbW1pdCBSZXBsYXkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAuIEkga25vdyB0aGlzIGZ1bmN0aW9uIOKAkyBpdCYjMzk7cyBhIHdvcmtob3JzZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBnZXR0aW5nIHRvbnMgb2YgdXNlLiBUaGUgY29yZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyBob3cgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgdG8gcHJldmVudCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFRoZSBjb25kaXRpb24sIGFzIEkgdW5kZXJzdGFuZCBpdCwgaGluZ2VzIG9uIGBFWFQ0X0ZDX1JFUExBWWAgYmVpbmcgc2V0IHdpdGhpbiBgc19tb3VudF9zdGF0ZWAuIFRoaXMgaGFzIG15IGltbWVkaWF0ZSBhdHRlbnRpb24gYmVjYXVzZSBgRVhUNF9GQ19SRVBMQVlgIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gZmFzdCBjb21taXQgcmVwbGF5LgoKTm93LCBteSBrZXkgcXVlc3Rpb24gYmVjb21lczogaXMgYEVYVDRfRkNfUkVQTEFZYCB0cnVseSBzZXQgd2l0aGluIGBzX21vdW50X3N0YXRlYCBkdXJpbmcgdGhlIHBoYXNlcyBvZiBmYXN0IGNvbW1pdCByZXBsYXkgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2U/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGFzc3VtcHRpb24gaG9sZHMsIGFuZCB0aGF0IHRoaXMgY2hhbmdlIGlzIHNhZmUgdW5kZXIgdGhvc2UgY2lyY3Vtc3RhbmNlcy4gSWYgdGhpcyBjaGVjayBpc24mIzM5O3QgaW4gcGxhY2UgSSBjb3VsZCBzZWUgc29tZSBiaWcgcHJvYmxlbXMgZG93biB0aGUgcm9hZC4gSSBuZWVkIHRvIGRpZyBpbiBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIG1lY2hhbmlzbXMgYW5kIGVuc3VyZSB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2Ugc29tZSBjcml0aWNhbCBkYXRhIGNvcnJ1cHRpb24gcmlzay4gVGhpcyBpcyBhIHN1YnRsZSBvcHRpbWl6YXRpb24gYW5kIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIGNvbmRpdGlvbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gaGFuZGxlIGFyZSBwcmVjaXNlbHkgdGhvc2UgaXQgYWRkcmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYVDRfRkNfUkVQTEFZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9iYWxsb2MuYz0zOTk9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2Jsb2NrX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvYmFsbG9jLmMtNDA2LVxuZnMvZXh0NC9iYWxsb2MuYzo0MDc6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2JhbGxvYy5jLTQwOC1cdFx0cmV0dXJuIDA7XG4tLVxuZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMjM3LSNkZWZpbmVcdEVYVDRfT1JQSEFOX0ZTXHRcdFx0MHgwMDA0XHQvKiBPcnBoYW5zIGJlaW5nIHJlY292ZXJlZCAqL1xuZnMvZXh0NC9leHQ0Lmg6MTIzODojZGVmaW5lIEVYVDRfRkNfUkVQTEFZXHRcdFx0MHgwMDIwXHQvKiBGYXN0IGNvbW1pdCByZXBsYXkgb25nb2luZyAqL1xuZnMvZXh0NC9leHQ0LmgtMTIzOS1cbi0tXG5mcy9leHQ0L2V4dDRfamJkMi5jPTkyPWhhbmRsZV90ICpfX2V4dDRfam91cm5hbF9zdGFydF9zYihzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvZXh0NF9qYmQyLmMtMTExLVx0am91cm5hbCA9IEVYVDRfU0Ioc2IpLVx1MDAzZXNfam91cm5hbDtcbmZzL2V4dDQvZXh0NF9qYmQyLmM6MTEyOlx0aWYgKCFqb3VybmFsIHx8IChFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpXG5mcy9leHQ0L2V4dDRfamJkMi5jLTExMy1cdFx0cmV0dXJuIGV4dDRfZ2V0X25vam91cm5hbCgpO1xuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYz0zNjM9dm9pZCBleHQ0X2VzX2ZpbmRfZXh0ZW50X3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTM2OS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzozNzA6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0zNzEtXHRcdHJldHVybjtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDE3PWJvb2wgZXh0NF9lc19zY2FuX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQyMi1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzo0MjM6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00MjQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDYzPWJvb2wgZXh0NF9lc19zY2FuX2NsdShzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00NjgtXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6NDY5Olx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtNDcwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTkwNT12b2lkIGV4dDRfZXNfaW5zZXJ0X2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy05MTgtXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6OTE5Olx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtOTIwLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwMjQ9dm9pZCBleHQ0X2VzX2NhY2hlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMDMzLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjEwMzQ6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMDM1LVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwOTI9aW50IGV4dDRfZXNfbG9va3VwX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMTAxLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjExMDI6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xMTAzLVx0XHRyZXR1cm4gMDtcbi0tXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9MTYyMz12b2lkIGV4dDRfZXNfcmVtb3ZlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xNjMwLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjE2MzE6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0xNjMyLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTIyMDE9dm9pZCBleHQ0X2VzX2luc2VydF9kZWxheWVkX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxuLS1cbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0yMjEzLVxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjIyMTQ6XHRpZiAoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy0yMjE1LVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0Ni1cdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDc6XHRcdChFWFQ0X1NCKHNiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0OC19XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTE5MTU9c3RhdGljIGludCBleHQ0X2ZjX3JlY29yZF9tb2RpZmllZF9pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgaW5vKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTI4LVx0XHRcdFx0c2l6ZW9mKGludCkgKiAoc3RhdGUtXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgJiM0MztcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTI5Olx0XHRcdFx0RVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlQpLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5MzAtXHRcdFx0XHRHRlBfS0VSTkVMKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkzNC1cdFx0c3RhdGUtXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgJiM0Mzs9XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTkzNTpcdFx0XHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM2LVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yMTA4PWludCBleHQ0X2ZjX3JlY29yZF9yZWdpb25zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8sXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxMjYtXHRcdFx0XHQgICAgICAoc3RhdGUtXHUwMDNlZmNfcmVnaW9uc19zaXplICYjNDM7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEyNzpcdFx0XHRcdCAgICAgICBFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVCksXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyOC1cdFx0XHRcdCAgICAgIEdGUF9LRVJORUwpO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMxLVx0XHRzdGF0ZS1cdTAwM2VmY19yZWdpb25zX3NpemUgJiM0Mzs9XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEzMjpcdFx0XHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMzLVx0XHRzdGF0ZS1cdTAwM2VmY19yZWdpb25zID0gZmNfcmVnaW9ucztcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQwNT12b2lkIGV4dDRfZmNfcmVwbGF5X2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQwOC1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDA5Olx0c2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2PSB+RVhUNF9GQ19SRVBMQVk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQxMC1cdGtmcmVlKHNiaS1cdTAwM2VzX2ZjX3JlcGxheV9zdGF0ZS5mY19yZWdpb25zKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjU4MT1zdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5OC1cdFx0c3RhdGUtXHUwMDNlZmNfY3VycmVudF9wYXNzID0gcGFzcztcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNTk5Olx0XHRzYmktXHUwMDNlc19tb3VudF9zdGF0ZSB8PSBFWFQ0X0ZDX1JFUExBWTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjAwLVx0fVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMjA9c3RydWN0IGV4dDRfZmNfc3RhdHMge1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaC0xMjktXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTMwOiNkZWZpbmUgRVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlRcdDRcbmZzL2V4dDQvZmFzdF9jb21taXQuaC0xMzEtXG4tLVxuZnMvZXh0NC9pYWxsb2MuYz04MT1zdGF0aWMgaW50IGV4dDRfdmFsaWRhdGVfaW5vZGVfYml0bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG4tLVxuZnMvZXh0NC9pYWxsb2MuYy04OC1cbmZzL2V4dDQvaWFsbG9jLmM6ODk6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lhbGxvYy5jLTkwLVx0XHRyZXR1cm4gMDtcbi0tXG5mcy9leHQ0L2lhbGxvYy5jPTIzNz12b2lkIGV4dDRfZnJlZV9pbm9kZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMjk1LVx0fVxuZnMvZXh0NC9pYWxsb2MuYzoyOTY6XHRpZiAoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lhbGxvYy5jLTI5Ny1cdFx0Z3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgYmxvY2tfZ3JvdXApO1xuLS1cbmZzL2V4dDQvaWFsbG9jLmM9OTMzPXN0cnVjdCBpbm9kZSAqX19leHQ0X25ld19pbm9kZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9leHQ0L2lhbGxvYy5jLTEwNTMtXG5mcy9leHQ0L2lhbGxvYy5jOjEwNTQ6XHRcdGlmICghKHNiaS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpIHtcbmZzL2V4dDQvaWFsbG9jLmMtMTA1NS1cdFx0XHRncnAgPSBleHQ0X2dldF9ncm91cF9pbmZvKHNiLCBncm91cCk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYy0xMDcwLVx0XHR9XG5mcy9leHQ0L2lhbGxvYy5jOjEwNzE6XHRcdGlmICghKHNiaS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L2lhbGxvYy5jLTEwNzItXHRcdCAgICBFWFQ0X01CX0dSUF9JQklUTUFQX0NPUlJVUFQoZ3JwKSlcbi0tXG5mcy9leHQ0L2lhbGxvYy5jLTEwODYtXG5mcy9leHQ0L2lhbGxvYy5jOjEwODc6XHRcdGlmICgoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSBcdTAwMjZcdTAwMjYgIWhhbmRsZSkge1xuZnMvZXh0NC9pYWxsb2MuYy0xMDg4LVx0XHRcdEJVR19PTihuYmxvY2tzIFx1MDAzYz0gMCk7XG4tLVxuZnMvZXh0NC9pYWxsb2MuYy0xMTkyLVxuZnMvZXh0NC9pYWxsb2MuYzoxMTkzOlx0XHRpZiAoIShzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lhbGxvYy5jLTExOTQtXHRcdFx0Z3JwID0gZXh0NF9nZXRfZ3JvdXBfaW5mbyhzYiwgZ3JvdXApO1xuLS1cbmZzL2V4dDQvaWFsbG9jLmMtMTIxOC1cdFx0XHRcdFx0KEVYVDRfSU5PREVTX1BFUl9HUk9VUChzYikgLSBpbm8pKTtcbmZzL2V4dDQvaWFsbG9jLmM6MTIxOTpcdFx0aWYgKCEoc2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSlcbmZzL2V4dDQvaWFsbG9jLmMtMTIyMC1cdFx0XHR1cF9yZWFkKFx1MDAyNmdycC1cdTAwM2VhbGxvY19zZW0pO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz00NDA9dm9pZCBleHQ0X2NoZWNrX21hcF9leHRlbnRzX2VudihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuZnMvZXh0NC9pbm9kZS5jLTQ0MS17XG5mcy9leHQ0L2lub2RlLmM6NDQyOlx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lub2RlLmMtNDQzLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9pbm9kZS5jPTk3OT1zdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfZ2V0YmxrKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbm9kZS5jLTk4Ny1cbmZzL2V4dDQvaW5vZGUuYzo5ODg6XHRBU1NFUlQoKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L2lub2RlLmMtOTg5LVx0XHQgICAgfHwgaGFuZGxlICE9IE5VTEwgfHwgY3JlYXRlID09IDApO1xuLS1cbmZzL2V4dDQvaW5vZGUuYy0xMDE1LVx0XHRBU1NFUlQoY3JlYXRlICE9IDApO1xuZnMvZXh0NC9pbm9kZS5jOjEwMTY6XHRcdEFTU0VSVCgoRVhUNF9TQihpbm9kZS1cdTAwM2VpX3NiKS1cdTAwM2VzX21vdW50X3N0YXRlIFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcbmZzL2V4dDQvaW5vZGUuYy0xMDE3LVx0XHRcdCAgICB8fCAoaGFuZGxlICE9IE5VTEwpKTtcbi0tXG5mcy9leHQ0L2lub2RlLmM9NTI3Nz1zdHJ1Y3QgaW5vZGUgKl9fZXh0NF9pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vLFxuLS1cbmZzL2V4dDQvaW5vZGUuYy01MzU5LVx0ICAgIGV4dDRfc2ltdWxhdGVfZmFpbChzYiwgRVhUNF9TSU1fSU5PREVfQ1JDKSkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L2lub2RlLmM6NTM2MDpcdCAgICAgKCEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSkge1xuZnMvZXh0NC9pbm9kZS5jLTUzNjEtXHRcdGV4dDRfZXJyb3JfaW5vZGVfZXJyKGlub2RlLCBmdW5jdGlvbiwgbGluZSwgMCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNTUyOS1cdFx0LyogdmFsaWRhdGUgdGhlIGJsb2NrIHJlZmVyZW5jZXMgaW4gdGhlIGlub2RlICovXG5mcy9leHQ0L2lub2RlLmM6NTUzMDpcdFx0aWYgKCEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuZnMvZXh0NC9pbm9kZS5jLTU1MzEtXHRcdFx0KFNfSVNSRUcoaW5vZGUtXHUwMDNlaV9tb2RlKSB8fCBTX0lTRElSKGlub2RlLVx1MDAzZWlfbW9kZSkgfHxcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjQwOD1pbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjQzNC1cdGlmICghZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKSBcdTAwMjZcdTAwMjZcbmZzL2V4dDQvaW5vZGUuYzo2NDM1Olx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG5mcy9leHQ0L2lub2RlLmMtNjQzNi1cdFx0Lypcbi0tXG5mcy9leHQ0L21iYWxsb2MuYz0yMDAwPXN0YXRpYyB2b2lkIG1iX2ZyZWVfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2J1ZGR5ICplNGIsXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtMjAzNi1cdFx0ICovXG5mcy9leHQ0L21iYWxsb2MuYzoyMDM3Olx0XHRpZiAoc2JpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSB7XG5mcy9leHQ0L21iYWxsb2MuYy0yMDM4LVx0XHRcdG1iX3JlZ2VuZXJhdGVfYnVkZHkoZTRiKTtcbi0tXG5mcy9leHQ0L21iYWxsb2MuYz01NjA3PXZvaWQgZXh0NF9kaXNjYXJkX3ByZWFsbG9jYXRpb25zKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtNTYyMS1cbmZzL2V4dDQvbWJhbGxvYy5jOjU2MjI6XHRpZiAoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L21iYWxsb2MuYy01NjIzLVx0XHRyZXR1cm47XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjIyOT1leHQ0X2ZzYmxrX3QgZXh0NF9tYl9uZXdfYmxvY2tzKGhhbmRsZV90ICpoYW5kbGUsXG4tLVxuZnMvZXh0NC9tYmFsbG9jLmMtNjI0NS1cdHRyYWNlX2V4dDRfcmVxdWVzdF9ibG9ja3MoYXIpO1xuZnMvZXh0NC9tYmFsbG9jLmM6NjI0NjpcdGlmIChzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L21iYWxsb2MuYy02MjQ3LVx0XHRyZXR1cm4gZXh0NF9tYl9uZXdfYmxvY2tzX3NpbXBsZShhciwgZXJycCk7XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjY5MT12b2lkIGV4dDRfZnJlZV9ibG9ja3MoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L21iYWxsb2MuYy02NzA3LVxuZnMvZXh0NC9tYmFsbG9jLmM6NjcwODpcdGlmIChzYmktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIHtcbmZzL2V4dDQvbWJhbGxvYy5jLTY3MDktXHRcdGV4dDRfZnJlZV9ibG9ja3Nfc2ltcGxlKGlub2RlLCBibG9jaywgRVhUNF9OVU1fQjJDKHNiaSwgY291bnQpKTtcbi0tXG5mcy9leHQ0L25hbWVpLmM9MzIyNj1pbnQgX19leHQ0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKmRfbmFtZSxcbi0tXG5mcy9leHQ0L25hbWVpLmMtMzI1Mi1cdFx0ICovXG5mcy9leHQ0L25hbWVpLmM6MzI1MzpcdFx0aWYgKEVYVDRfU0IoaW5vZGUtXHUwMDNlaV9zYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXG5mcy9leHQ0L25hbWVpLmMtMzI1NC1cdFx0XHRza2lwX3JlbW92ZV9kZW50cnkgPSAxO1xuLS1cbmZzL2V4dDQvbmFtZWkuYz0zNzk3PXN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2Rpcixcbi0tXG5mcy9leHQ0L25hbWVpLmMtNDAwOC1cdFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L25hbWVpLmM6NDAwOTpcdFx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuZnMvZXh0NC9uYW1laS5jLTQwMTAtXHRcdCAgICAhKGV4dDRfdGVzdF9tb3VudF9mbGFnKHNiLCBFWFQ0X01GX0ZDX0lORUxJR0lCTEUpKSkge1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01Mjg1PXN0YXRpYyBpbnQgZXh0NF9ibG9ja19ncm91cF9tZXRhX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHNpbGVudClcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTMyNi1cdHNiaS1cdTAwM2VzX2Rlc2NfcGVyX2Jsb2NrID0gc2ItXHUwMDNlc19ibG9ja3NpemUgLyBFWFQ0X0RFU0NfU0laRShzYik7XG5mcy9leHQ0L3N1cGVyLmM6NTMyNzpcdHNiaS1cdTAwM2VzX21vdW50X3N0YXRlID0gbGUxNl90b19jcHUoZXMtXHUwMDNlc19zdGF0ZSkgXHUwMDI2IH5FWFQ0X0ZDX1JFUExBWTtcbmZzL2V4dDQvc3VwZXIuYy01MzI4LVx0c2JpLVx1MDAzZXNfYWRkcl9wZXJfYmxvY2tfYml0cyA9IGlsb2cyKEVYVDRfQUREUl9QRVJfQkxPQ0soc2IpKTtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NjU2Nj1zdGF0aWMgaW50IF9fZXh0NF9yZW1vdW50KHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNjc3Ny1cdFx0XHRzYmktXHUwMDNlc19tb3VudF9zdGF0ZSA9IChsZTE2X3RvX2NwdShlcy1cdTAwM2VzX3N0YXRlKSBcdTAwMjZcbmZzL2V4dDQvc3VwZXIuYzo2Nzc4Olx0XHRcdFx0XHQgICAgICB+RVhUNF9GQ19SRVBMQVkpO1xuZnMvZXh0NC9zdXBlci5jLTY3NzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4MTYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmFzdCBDb21taXQgUmVwbGF5IEJ1ZyBGaXggaW4gZXh0NCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggZmFzdCBjb21taXQgcmVwbGF5LiBUaGUgY29yZSBvZiB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGluYXBwcm9wcmlhdGVseSBhdHRhY2hpbmcgaW5vZGVzIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5LCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBjYW4gbGVhZCB0byBuYXN0eSBpbmNvbnNpc3RlbmNpZXMgYmVjYXVzZSB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgbWVjaGFuaXNtcyBhcmVuJiMzOTt0IGZ1bGx5IHNldCB1cCB5ZXQgZHVyaW5nIHJlcGxheS4KClRoZSBmaXggaXRzZWxmIGlzIGludHJpZ3VpbmcuIFRoZXkmIzM5O3ZlIHJlcGxhY2VkIHRoZSBqb3VybmFsIGNoZWNrIGAhRVhUNF9TQihpbm9kZS0mZ3Q7aV9zYiktJmd0O3Nfam91cm5hbGAgd2l0aCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkgJmFtcDsmYW1wOyAhKEVYVDRfU0Ioc2IpLSZndDtzX21vdW50X3N0YXRlICZhbXA7IEVYVDRfRkNfUkVQTEFZKWAuIEluaXRpYWxseSwgSSB3YXMgYSBiaXQgdGhyb3duIGJ5IHRoZSBgZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKWAgcGFydC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgY2hlY2tpbmcgaWYgYSB0cmFuc2FjdGlvbiBoYW5kbGUgaXMgdmFsaWQsIHJpZ2h0PyBUaGVuLCBJIHJlbWVtYmVyZWQgdGhhdCBgZXh0NF9oYW5kbGVfdmFsaWRgIGlzIGRlZmluZWQgYXMgYSBzaW1wbGUgcG9pbnRlciBjaGVjazogYW55dGhpbmcgYmVsb3cgYEVYVDRfTk9KT1VSTkFMX01BWF9SRUZfQ09VTlRgIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KClNvLCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSlgIGltcGxpZXMgdGhhdCBqb3VybmFsaW5nIGlzbiYjMzk7dCBlbmFibGVkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiwgb3IgdGhlIGhhbmRsZSBpcyBpbiBub2pvdXJuYWwgbW9kZS4gVGhpcyBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBhdm9pZGluZyB3cml0ZWJhY2sgZHVyaW5nIGZhc3QgY29tbWl0IHJlcGxheS4gVGhleSBhZGRlZCBhIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gRkMgcmVwbGF5LCBzbyB0aGF0IHRoaXMgY2hlY2sgd29ya3MgZXZlbiBpZiBqb3VybmFsaW5nIGlzIGVuYWJsZWQuIFNvLCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGx5IGF2b2lkaW5nIHdyaXRlYmFjayBhdHRhY2htZW50IHdoZW4gZWl0aGVyIHRoZSB0cmFuc2FjdGlvbiBkb2VzbiYjMzk7dCBuZWVkIHRvIGJlIGpvdXJuYWxlZCBvciB0aGUgZmlsZXN5c3RlbSBpcyB1bmRlcmdvaW5nIHJlcGxheS4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIHRoaXMgYXJlYSBpcyByaXBlIGZvciBwb3RlbnRpYWwgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfZmNfcmVwbGF5YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGBleHQ0X2ZjX3JlcGxheWAgcHJvY2VzcyB0aGF0IGlzIGxpa2VseSB0byB0cmlnZ2VyIHRoaXMgYnVnIHNjZW5hcmlvLiBJIHNob3VsZCBhbHNvIGhhdmUgYW4gZXllIG91dCBmb3IgaG93IGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgYmVoYXZlcyB3aGVuIGRlYWxpbmcgd2l0aCBmYXN0IGNvbW1pdCByZXBsYXkuIEZ1bmN0aW9ucyBzdWNoIGFzIGBleHQ0X2ZjX3JlcGxheV9pbm9kZWAsIG9yIHNpbWlsYXIgZnVuY3Rpb24gY2FsbHMsIGFyZSBvZiBoaWdoIGludGVyZXN0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfZmNfcmVwbGF5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTU4Nj1zdHJ1Y3QgZXh0NF9zYl9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xODYxLSNlbmRpZlxuZnMvZXh0NC9leHQ0Lmg6MTg2MjpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSBzX2ZjX3JlcGxheV9zdGF0ZTtcbmZzL2V4dDQvZXh0NC5oLTE4NjMtfTtcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMDc5PXZvaWQgZXh0NF9mY19kZWwoc3RydWN0IGlub2RlICppbm9kZSk7XG5mcy9leHQ0L2V4dDQuaDozMDgwOmJvb2wgZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190IGJsb2NrKTtcbmZzL2V4dDQvZXh0NC5oOjMwODE6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuZnMvZXh0NC9leHQ0LmgtMzA4Mi1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTgwND1zdGF0aWMgaW5saW5lIHZvaWQgZXh0NF9mY19nZXRfdGwoc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxMy0vKiBVbmxpbmsgcmVwbGF5IGZ1bmN0aW9uICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTgxNDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3VubGluayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4MTUtXHRcdFx0XHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgyMy1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODI0Olx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX1VOTElOSywgZGFyZy5pbm8sXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgyNS1cdFx0XHRkYXJnLnBhcmVudF9pbm8sIGRhcmcuZG5hbWVfbGVuKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg1Mi1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODUzOnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTQtXHRcdFx0XHRzdHJ1Y3QgZGVudHJ5X2luZm9fYXJncyAqZGFyZyxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg4OC0vKiBMaW5rIHJlcGxheSBmdW5jdGlvbiAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4ODk6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9saW5rKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg5MC1cdFx0XHQgICAgICAgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg5Ni1cdHRsX3RvX2RhcmcoXHUwMDI2ZGFyZywgdGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTg5NzpcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19MSU5LLCBkYXJnLmlubyxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODk4LVx0XHRcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTA1LVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MDY6XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHNiLCBcdTAwMjZkYXJnLCBpbm9kZSk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkwNy1cdGlwdXQoaW5vZGUpO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYz0xOTE1PXN0YXRpYyBpbnQgZXh0NF9mY19yZWNvcmRfbW9kaWZpZWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubylcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTE2LXtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTE3Olx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTE4LVx0aW50IGk7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NDMtICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTk0NDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTk0NS1cdFx0XHRcdHN0cnVjdCBleHQ0X2ZjX3RsX21lbSAqdGwsIHU4ICp2YWwpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NTgtXHRpbm8gPSBsZTMyX3RvX2NwdShmY19pbm9kZS5mY19pbm8pO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5NTk6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgdGFnLCBpbm8sIDAsIDApO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NjAtXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNDktICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjA1MDpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2NyZWF0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNTEtXHRcdFx0XHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA1OS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMDYwOlx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0NSRUFULCBkYXJnLmlubyxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDYxLVx0XHRcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDkyLVx0fVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwOTM6XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHNiLCBcdTAwMjZkYXJnLCBpbm9kZSk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5NC1cdGlmIChyZXQpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIxMDg9aW50IGV4dDRfZmNfcmVjb3JkX3JlZ2lvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubyxcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjExMC17XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjExMTpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjExMi1cdHN0cnVjdCBleHQ0X2ZjX2FsbG9jX3JlZ2lvbiAqcmVnaW9uO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTQ3LS8qIFJlcGxheSBhZGQgcmFuZ2UgdGFnICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjE0ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1OCAqdmFsKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNDkte1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTYyLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIxNjM6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfQUREX1JBTkdFLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNjQtXHRcdGxlMzJfdG9fY3B1KGZjX2FkZF9leC5mY19pbm8pLCBsZTMyX3RvX2NwdShleC1cdTAwM2VlZV9ibG9jayksXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIyNjc9c3RhdGljIGludFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyNjg6ZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU4ICp2YWwpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI2OS17XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNzktXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjI4MDpcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19ERUxfUkFOR0UsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI4MS1cdFx0bGUzMl90b19jcHUobHJhbmdlLmZjX2lubyksIGN1ciwgcmVtYWluaW5nKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjMyOD1zdGF0aWMgdm9pZCBleHQ0X2ZjX3NldF9iaXRtYXBzX2FuZF9jb3VudGVycyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzMjkte1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzMzA6XHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzMzEtXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzg2LSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzODc6Ym9vbCBleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2ZzYmxrX3QgYmxrKVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODgte1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODktXHRpbnQgaTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMzkwOlx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzkxLVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDA0LS8qIENsZWFudXAgZnVuY3Rpb24gY2FsbGVkIGFmdGVyIHJlcGxheSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI0MDU6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQwNi17XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0MTQ9c3RhdGljIGJvb2wgZXh0NF9mY192YWx1ZV9sZW5faXN2YWxpZChzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0NTctICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ1ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3NjYW4oam91cm5hbF90ICpqb3VybmFsLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0NTktXHRcdFx0XHRzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgb2ZmLFxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDYzLVx0c3RydWN0IGV4dDRfc2JfaW5mbyAqc2JpID0gRVhUNF9TQihzYik7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2NDpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2NS1cdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU3Mi1vdXRfZXJyOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1NzM6XHR0cmFjZV9leHQ0X2ZjX3JlcGxheV9zY2FuKHNiLCByZXQsIG9mZik7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU3NC1cdHJldHVybiByZXQ7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1ODAtICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4MTpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTgyLVx0XHRcdFx0ZW51bSBwYXNzdHlwZSBwYXNzLCBpbnQgb2ZmLCB0aWRfdCBleHBlY3RlZF90aWQpXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1ODgtXHRpbnQgcmV0ID0gSkJEMl9GQ19SRVBMQVlfQ09OVElOVUU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4OTpcdHN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSAqc3RhdGUgPSBcdTAwMjZzYmktXHUwMDNlc19mY19yZXBsYXlfc3RhdGU7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5MC1cdHN0cnVjdCBleHQ0X2ZjX3RhaWwgdGFpbDtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5My1cdFx0c3RhdGUtXHUwMDNlZmNfY3VycmVudF9wYXNzID0gUEFTU19TQ0FOO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1OTQ6XHRcdHJldHVybiBleHQ0X2ZjX3JlcGxheV9zY2FuKGpvdXJuYWwsIGJoLCBvZmYsIGV4cGVjdGVkX3RpZCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU5NS1cdH1cbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzMS1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19MSU5LOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2MzI6XHRcdFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGluayhzYiwgXHUwMDI2dGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzMy1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM0LVx0XHRjYXNlIEVYVDRfRkNfVEFHX1VOTElOSzpcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjM1Olx0XHRcdHJldCA9IGV4dDRfZmNfcmVwbGF5X3VubGluayhzYiwgXHUwMDI2dGwsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjYzNi1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM3LVx0XHRjYXNlIEVYVDRfRkNfVEFHX0FERF9SQU5HRTpcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjM4Olx0XHRcdHJldCA9IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzYiwgdmFsKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM5LVx0XHRcdGJyZWFrO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDAtXHRcdGNhc2UgRVhUNF9GQ19UQUdfQ1JFQVQ6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY0MTpcdFx0XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9jcmVhdGUoc2IsIFx1MDAyNnRsLCB2YWwpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDItXHRcdFx0YnJlYWs7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0My1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19ERUxfUkFOR0U6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY0NDpcdFx0XHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9kZWxfcmFuZ2Uoc2IsIHZhbCk7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0NS1cdFx0XHRicmVhaztcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ2LVx0XHRjYXNlIEVYVDRfRkNfVEFHX0lOT0RFOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDc6XHRcdFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfaW5vZGUoc2IsIFx1MDAyNnRsLCB2YWwpO1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDgtXHRcdFx0YnJlYWs7XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OS1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19QQUQ6XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1MDpcdFx0XHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfUEFELCAwLFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NTEtXHRcdFx0XHRcdCAgICAgdGwuZmNfbGVuLCAwKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1My1cdFx0Y2FzZSBFWFQ0X0ZDX1RBR19UQUlMOlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NTQ6XHRcdFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX1RBSUwsXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1NS1cdFx0XHRcdFx0ICAgICAwLCB0bC5mY19sZW4sIDApO1xuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjYxLVx0XHRkZWZhdWx0OlxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NjI6XHRcdFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIHRsLmZjX3RhZywgMCwgdGwuZmNfbGVuLCAwKTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjYzLVx0XHRcdHJldCA9IC1FQ0FOQ0VMRUQ7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjc5LVx0ICovXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY4MDpcdGpvdXJuYWwtXHUwMDNlal9mY19yZXBsYXlfY2FsbGJhY2sgPSBleHQ0X2ZjX3JlcGxheTtcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjgxLVx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMzk9c3RydWN0IGV4dDRfZmNfYWxsb2NfcmVnaW9uIHtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmgtMTQ3LSAqL1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5oOjE0ODpzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUge1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0OS1cdGludCBmY19yZXBsYXlfbnVtX3RhZ3M7XG4tLVxuZnMvZXh0NC9tYmFsbG9jLmM9NjE2Mj1leHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKHN0cnVjdCBleHQ0X2FsbG9jYXRpb25fcmVxdWVzdCAqYXIsIGludCAqZXJycClcbi0tXG5mcy9leHQ0L21iYWxsb2MuYy02MTkzLVx0XHRcdFx0YnJlYWs7XG5mcy9leHQ0L21iYWxsb2MuYzo2MTk0Olx0XHRcdGlmIChleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzYixcbmZzL2V4dDQvbWJhbGxvYy5jLTYxOTUtXHRcdFx0XHRleHQ0X2dyb3VwX2ZpcnN0X2Jsb2NrX25vKHNiLCBncm91cCkgJiM0Mztcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM0Nj1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTY0NS1cdH1cbmZzL2V4dDQvc3VwZXIuYzo1NjQ2Olx0ZXh0NF9mY19yZXBsYXlfY2xlYW51cChzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTY0Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTgxOQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucy4KCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIEZhc3QgQ29tbWl0IFJlcGxheSBGdW5jdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBmYXN0IGNvbW1pdCByZXBsYXkgc3R1ZmYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZ1bmN0aW9uczogYGV4dDRfZmNfcmVwbGF5YCwgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBgZXh0NF9mY19yZXBsYXlfdW5saW5rYCwgYGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZWAsIGBleHQ0X2ZjX3JlcGxheV9jcmVhdGVgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X2RlbF9yYW5nZWAuIFRoZXkmIzM5O3JlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5IG5hbWVzLCBhbmQgdGhvc2UgZnVuY3Rpb24gc3ltYm9scyBhcmUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbi4gU2VlbXMgbGlrZSB0aGV5IGhhbmRsZSBkaWZmZXJlbnQgYXNwZWN0cyBvZiByZXBsYXlpbmcgdGhlIGZhc3QgY29tbWl0IGRhdGEsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTtkIGV4cGVjdC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZmVhdHVyZSBkZXBlbmRzIG9uLCBsZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcuCgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY29uZmlndXJlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgKmZhc3QgY29tbWl0KiBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElzIHRoZXJlIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGp1c3QgZm9yIHRoZSBmYXN0IGNvbW1pdCBmZWF0dXJlPyBPciwgaXMgaXQganVzdCBpbXBsaWNpdGx5IGVuYWJsZWQvZGlzYWJsZWQgYXMgcGFydCBvZiB0aGUgYnJvYWRlciBFWFQ0X0ZTIGNvbmZpZ3VyYXRpb24/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlIGFuc3dlciBsaWVzIGluIHVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgb3B0aW9ucyByZWxhdGVkIHRvIGZhc3QgY29tbWl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtKT1VSTkFMX0ZBU1RfQ09NTUlUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9leHQ0Lmg9MTA0OD1zdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvIHtcbi0tXG5mcy9leHQ0L2V4dDQuaC0xMzA4LVxuZnMvZXh0NC9leHQ0Lmg6MTMwOTojZGVmaW5lIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVRcdDB4MDAwMDAwMTAgLyogSm91cm5hbCBmYXN0IGNvbW1pdCAqL1xuZnMvZXh0NC9leHQ0LmgtMTMxMC0jZGVmaW5lIEVYVDRfTU9VTlQyX0RBWF9ORVZFUlx0XHQweDAwMDAwMDIwIC8qIERvIG5vdCBhbGxvdyBEaXJlY3QgQWNjZXNzICovXG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1LXtcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDY6XHRyZXR1cm4gKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpIHx8XG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ3LVx0XHQoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKTtcbi0tXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTU4Nj1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xNTk1LVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE1OTY6XHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTU5Ny1cdFx0cmV0dXJuIGpiZDJfY29tcGxldGVfdHJhbnNhY3Rpb24oam91cm5hbCwgY29tbWl0X3RpZCk7XG4tLVxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxuLS1cbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjgwLVx0am91cm5hbC1cdTAwM2VqX2ZjX3JlcGxheV9jYWxsYmFjayA9IGV4dDRfZmNfcmVwbGF5O1xuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2ODE6XHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY4Mi1cdFx0cmV0dXJuO1xuLS1cbmZzL2V4dDQvaW5vZGUuYz0zNDU0PXN0YXRpYyBib29sIGV4dDRfaW5vZGVfZGF0YXN5bmNfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L2lub2RlLmMtMzQ2Mi1cdFx0XHRyZXR1cm4gZmFsc2U7XG5mcy9leHQ0L2lub2RlLmM6MzQ2MzpcdFx0aWYgKHRlc3Rfb3B0Mihpbm9kZS1cdTAwM2VpX3NiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSlcbmZzL2V4dDQvaW5vZGUuYy0zNDY0LVx0XHRcdHJldHVybiAhbGlzdF9lbXB0eShcdTAwMjZFWFQ0X0koaW5vZGUpLVx1MDAzZWlfZmNfbGlzdCk7XG4tLVxuZnMvZXh0NC9uYW1laS5jPTM3OTc9c3RhdGljIGludCBleHQ0X3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLFxuLS1cbmZzL2V4dDQvbmFtZWkuYy00MDA3LVx0XHRcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgbmV3LmRlbnRyeSk7XG5mcy9leHQ0L25hbWVpLmM6NDAwODpcdFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L25hbWVpLmMtNDAwOS1cdFx0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFx1MDAyNlx1MDAyNlxuLS1cbmZzL2V4dDQvc3VwZXIuYz0xODg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW91bnRfb3B0cyB7XG4tLVxuZnMvZXh0NC9zdXBlci5jLTE5NTQtI2lmZGVmIENPTkZJR19FWFQ0X0RFQlVHXG5mcy9leHQ0L3N1cGVyLmM6MTk1NTpcdHtPcHRfZmNfZGVidWdfZm9yY2UsIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVQsXG5mcy9leHQ0L3N1cGVyLmMtMTk1Ni1cdCBNT1BUX1NFVCB8IE1PUFRfMiB8IE1PUFRfRVhUNF9PTkxZfSxcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NDM5Nj1zdGF0aWMgdm9pZCBleHQ0X3NldF9kZWZfb3B0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2V4dDQvc3VwZXIuYy00NDE1LVx0aWYgKGV4dDRfaGFzX2ZlYXR1cmVfZmFzdF9jb21taXQoc2IpKVxuZnMvZXh0NC9zdXBlci5jOjQ0MTY6XHRcdHNldF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy00NDE3LVx0LyogZG9uJiMzOTt0IGZvcmdldCB0byBlbmFibGUgam91cm5hbF9jc3VtIHdoZW4gbWV0YWRhdGFfY3N1bSBpcyBlbmFibGVkLiAqL1xuLS1cbmZzL2V4dDQvc3VwZXIuYz00OTY0PXN0YXRpYyBpbnQgZXh0NF9sb2FkX2FuZF9pbml0X2pvdXJuYWwoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNDk4Ny1cbmZzL2V4dDQvc3VwZXIuYzo0OTg4Olx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXHUwMDI2XHUwMDI2XG5mcy9leHQ0L3N1cGVyLmMtNDk4OS1cdFx0IWpiZDJfam91cm5hbF9zZXRfZmVhdHVyZXMoRVhUNF9TQihzYiktXHUwMDNlc19qb3VybmFsLCAwLCAwLFxuLS1cbmZzL2V4dDQvc3VwZXIuYz01MDQ4PXN0YXRpYyBpbnQgZXh0NF9jaGVja19qb3VybmFsX2RhdGFfbW9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy01MDU1LVx0XHRjbGVhcl9vcHQoc2IsIERJT1JFQURfTk9MT0NLKTtcbmZzL2V4dDQvc3VwZXIuYzo1MDU2Olx0XHRjbGVhcl9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy01MDU3LVx0XHRpZiAodGVzdF9vcHQyKHNiLCBFWFBMSUNJVF9ERUxBTExPQykpIHtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTM0Nj1zdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTU0NC1cdFx0Y2xlYXJfb3B0KHNiLCBEQVRBX0ZMQUdTKTtcbmZzL2V4dDQvc3VwZXIuYzo1NTQ1Olx0XHRjbGVhcl9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKTtcbmZzL2V4dDQvc3VwZXIuYy01NTQ2LVx0XHRzYmktXHUwMDNlc19qb3VybmFsID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc2NzYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGV4dDQmIzM5O3MgRmFzdCBDb21taXQgRmVhdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGV4dDQmIzM5O3MgJiMzNDtmYXN0IGNvbW1pdCYjMzQ7IGZlYXR1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBleHQ0IGZpbGVzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdCwgc3BlY2lmaWNhbGx5IHRob3NlIHRoYXQgaGF2ZSB0aGUgYGZhc3RfY29tbWl0YCBmbGFnIHNldC4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGEgc2Vuc2libGUgZGVmYXVsdCBpcyBhbHdheXMgYXBwcmVjaWF0ZWQuIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG5vdy4gSXMgdGhlcmUgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gY29udHJvbGxpbmcgZmFzdCBjb21taXQ/IExldCBtZSBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFNlZW1zIGxpa2UgdGhlcmUgaXNuJiMzOTt0IG9uZSBzcGVjaWZpY2FsbHkgZm9yIGZhc3QgY29tbWl0LCBhbmQgaXQmIzM5O3MgbGlrZWx5IGdvdmVybmVkIGJ5IHRoZSBtb3JlIGdlbmVyYWwgYENPTkZJR19FWFQ0X0ZTYCBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgZXh0NCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgdGhpcy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgaXQmIzM5O3MgYWN0aXZhdGVkIGFuZCBkZWFjdGl2YXRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEVYVDRfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXG5mcy9leHQ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxuLS1cbmZzL2V4dDQvS2NvbmZpZy00NS1cbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcbmZzL2V4dDQvS2NvbmZpZy00Ny1cdGJvb2wgXCYjMzQ7RXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuLS1cbmZzL2V4dDQvS2NvbmZpZy01NS1cbmZzL2V4dDQvS2NvbmZpZzo1Njpjb25maWcgRVhUNF9GU19TRUNVUklUWVxuZnMvZXh0NC9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtFeHQ0IFNlY3VyaXR5IExhYmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE1MgoJCQkJCQkJb3V0cHV0OiAxOTAKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGFuIEVYVDQgRmFzdCBDb21taXQgUmVwbGF5IFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYEVYVDRfRlNgLiBMZXQmIzM5O3MgZGlnIGludG8gdGhpcyBwYXRjaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWFzb25pbmcgYmVoaW5kIGl0LiBJdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIGluIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBwcm9jZXNzLCB3aGVyZSB0aGUgY29kZSB3YXMgaW5hcHByb3ByaWF0ZWx5IGF0dGVtcHRpbmcgdG8gYXR0YWNoIGFuIGlub2RlIHRvIHdyaXRlYmFjayBiZWZvcmUgdGhlIGZpbGVzeXN0ZW0mIzM5O3Mgd3JpdGViYWNrIHBhdGhzIGFyZSBmdWxseSBzZXQgdXAuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBUaGUgZml4IGludm9sdmVzIGNvbmRpdGlvbmFsbHkgc2tpcHBpbmcgdGhpcyBpbm9kZSBhdHRhY2htZW50IGR1cmluZyByZXBsYXkgaWYgZWl0aGVyIGBFWFQ0X0ZDX1JFUExBWWAgaXMgc2V0IGluIGBzX21vdW50X3N0YXRlYCBvciB0aGUgaGFuZGxlIGl0c2VsZiBpc24mIzM5O3QgdmFsaWQuCgpUaGlzIGNoYW5nZSBpcyBzcXVhcmVseSBpbiB0aGUgY29yZSBleHQ0IGNvZGUsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhhdCBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gRnVuY3Rpb25hbGx5IHNwZWFraW5nLCBpdCYjMzk7cyBhIGNyaXRpY2FsIGZpeC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2UmIzM5O2Qgd2FudCB0byBmdXp6IHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgcm9idXN0bHkuCgpJIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgYXJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAsIG9mIGNvdXJzZSwgYWxvbmcgd2l0aCB0aGUgcmVwbGF5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgZXh0NF9mY19yZXBsYXlgLCBgZXh0NF9mY19yZXBsYXlfaW5vZGVgLCBgZXh0NF9mY19yZXBsYXlfY3JlYXRlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X3VubGlua2AuCgpOb3csIHJlZ2FyZGluZyBjb25maWd1cmF0aW9ucywgaXQgbG9va3MgbGlrZSBvbmx5IGBFWFQ0X0ZTYCBpcyBpbnZvbHZlZCBoZXJlLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gTm8gb3RoZXIgcmVsYXRlZCBjb25maWdzLgoKU28sIGxldCBtZSBzb2xpZGlmeSB0aGUgcmVhc29uaW5nOiBUaGlzIHBhdGNoIG1vZGlmaWVzIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgdG8gcHJldmVudCBhdHRhY2hpbmcgYW4gaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApIGJlY2F1c2UgdGhvc2Ugd3JpdGViYWNrIHBhdGhzIGFyZW4mIzM5O3QgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoaXMgY2hhbmdlIGlzIGRpcmVjdGx5IGZ1bmN0aW9uYWwsIG1vZGlmeWluZyBleHQ0JiMzOTtzIGNvcmUgY29kZSBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgYmVoYXZpb3IuIEl0JiMzOTtzIGEgcmVhY2hhYmxlIGNvZGUgcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byB2ZXJpZnkgdGhhdCB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIG1hbmFnZXMgaW5vZGUgZGlydHlpbmcgZWZmZWN0aXZlbHkuIE9rYXksIEkgdGhpbmsgdGhhdCYjMzk7cyBhIGdvb2Qgc3VtbWFyeS4gSSYjMzk7bGwgc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfbWFya19pbG9jX2RpcnR5JiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5JiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2lub2RlJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtleHQ0X2ZjX3JlcGxheV9saW5rJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9tYXJrX2lsb2NfZGlydHkmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXkmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfaW5vZGUmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfY3JlYXRlJiMzNDssCiAgICAmIzM0O2V4dDRfZmNfcmVwbGF5X2xpbmsmIzM0OywKICAgICYjMzQ7ZXh0NF9mY19yZXBsYXlfdW5saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgdG8gYXZvaWQgYXR0YWNoaW5nIHRoZSBpbm9kZSB0byB3cml0ZWJhY2sgZHVyaW5nIGZhc3QgY29tbWl0IHJlcGxheSAoYEVYVDRfRkNfUkVQTEFZYCksIGFzIHRoZSBmaWxlc3lzdGVtIHdyaXRlYmFjayBwYXRocyBhcmUgbm90IGZ1bGx5IGluaXRpYWxpemVkIGF0IHRoYXQgcG9pbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBleHQ0IGNvZGUsIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBwYXRoLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgbG9naWMgaGFuZGxlcyBpbm9kZSBkaXJ0eWluZyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS41Mjg5OTcwMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg0NzIwNDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS41MjkwMDM4ODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMTI4ODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ3Y2M4YTk3Mzk5MmViMWYxM2U3OTJkNmVjODQ2OTdhYjBjYjIyZTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMjoxNToyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMgYi9mcy9leHQ0L2lub2RlLmNcXG5pbmRleCA3YTFmOTYxY2QxMWNlLi4xMmZmODRhYjU3NDFkIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xcbisrKyBiL2ZzL2V4dDQvaW5vZGUuY1xcbkBAIC02NDA4LDkgKzY0MDgsMTAgQEAgaW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcylcXG4gaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxcbiB7XFxuK1xcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBpbm9kZS1cXHUwMDNlaV9zYjtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbi1cXHRlcnIgPSBleHQ0X2VtZXJnZW5jeV9zdGF0ZShpbm9kZS1cXHUwMDNlaV9zYik7XFxuK1xcdGVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKHNiKTtcXG4gXFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4gXFx0XFx0cHV0X2JoKGlsb2MtXFx1MDAzZWJoKTtcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG5AQCAtNjQyNSw5ICs2NDI2LDEzIEBAIGludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHRwdXRfYmgoaWxvYy1cXHUwMDNlYmgpO1xcbiBcXHQvKlxcbiBcXHQgKiBNYXJrIHRoYXQgdGhlcmUncyBtZXRhZGF0YSB3cml0ZW91dCBwZW5kaW5nIGZvciB0aGUgaW5vZGUgc28gdGhhdCBpdFxcbi1cXHQgKiBnZXRzIHByb3Blcmx5IGZsdXNoZWQgb24gZnN5bmMoMikgYW5kIHNpbWlsYXIuXFxuK1xcdCAqIGdldHMgcHJvcGVybHkgZmx1c2hlZCBvbiBmc3luYygyKSBhbmQgc2ltaWxhci4gV2UgZG9uJ3QgYm90aGVyIGZvclxcbitcXHQgKiBmYXN0Y29tbWl0IHJlcGxheSBhcyB0aGF0IGZsdXNoZXMgdGhlIHdob2xlIGJkZXYgYWZ0ZXJ3YXJkcyBhbnl3YXkuXFxuK1xcdCAqIEl0IGlzIGZhc3RlciB0aGlzIHdheSBhbmQgd2UgYXZvaWQgZW50ZXJpbmcgZnMgd3JpdGViYWNrIHBhdGhzIHdoaWNoXFxuK1xcdCAqIGFyZW4ndCBmdWxseSBpbml0aWFsaXplZCB5ZXQuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIUVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX2pvdXJuYWwpIHtcXG4rXFx0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIElub2RlIGRpZG4ndCBuZWVkIHRvIGdvIHRocm91Z2ggZGlydHlpbmcsIG1ha2Ugc3VyZSBpdCBpc1xcbiBcXHRcXHQgKiBhdHRhY2hlZCB0byB3YiBzbyB0aGF0IHdyaXRlYmFjayBjYW4gaGFuZGxlIGl0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNToyMS45NDEwMjI4MjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NTQzNTE3MDU2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkN2NjOGE5NzM5OTJlYjFmMTNlNzkyZDZlYzg0Njk3YWIwY2IyMmU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxMjoxNToyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5vZGUuYyBiL2ZzL2V4dDQvaW5vZGUuY1xuaW5kZXggN2ExZjk2MWNkMTFjZS4uMTJmZjg0YWI1NzQxZCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5vZGUuY1xuKysrIGIvZnMvZXh0NC9pbm9kZS5jXG5AQCAtNjQwOCw5ICs2NDA4LDEwIEBAIGludCBleHQ0X2NodW5rX3RyYW5zX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbnJibG9ja3MpXG4gaW50IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZV90ICpoYW5kbGUsXG4gXHRcdFx0IHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBleHQ0X2lsb2MgKmlsb2MpXG4ge1xuK1x0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLVx1MDAzZWlfc2I7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGVyciA9IGV4dDRfZW1lcmdlbmN5X3N0YXRlKGlub2RlLVx1MDAzZWlfc2IpO1xuK1x0ZXJyID0gZXh0NF9lbWVyZ2VuY3lfc3RhdGUoc2IpO1xuIFx0aWYgKHVubGlrZWx5KGVycikpIHtcbiBcdFx0cHV0X2JoKGlsb2MtXHUwMDNlYmgpO1xuIFx0XHRyZXR1cm4gZXJyO1xuQEAgLTY0MjUsOSArNjQyNiwxMyBAQCBpbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcbiBcdHB1dF9iaChpbG9jLVx1MDAzZWJoKTtcbiBcdC8qXG4gXHQgKiBNYXJrIHRoYXQgdGhlcmUncyBtZXRhZGF0YSB3cml0ZW91dCBwZW5kaW5nIGZvciB0aGUgaW5vZGUgc28gdGhhdCBpdFxuLVx0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLlxuK1x0ICogZ2V0cyBwcm9wZXJseSBmbHVzaGVkIG9uIGZzeW5jKDIpIGFuZCBzaW1pbGFyLiBXZSBkb24ndCBib3RoZXIgZm9yXG4rXHQgKiBmYXN0Y29tbWl0IHJlcGxheSBhcyB0aGF0IGZsdXNoZXMgdGhlIHdob2xlIGJkZXYgYWZ0ZXJ3YXJkcyBhbnl3YXkuXG4rXHQgKiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaFxuK1x0ICogYXJlbid0IGZ1bGx5IGluaXRpYWxpemVkIHlldC5cbiBcdCAqL1xuLVx0aWYgKCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbCkge1xuK1x0aWYgKCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XG4gXHRcdC8qXG4gXHRcdCAqIElub2RlIGRpZG4ndCBuZWVkIHRvIGdvIHRocm91Z2ggZGlydHlpbmcsIG1ha2Ugc3VyZSBpdCBpc1xuIFx0XHQgKiBhdHRhY2hlZCB0byB3YiBzbyB0aGF0IHdyaXRlYmFjayBjYW4gaGFuZGxlIGl0LlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6MjEuOTQxMDI0MDE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTIwMzkwOTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGV4dDQgUGF0Y2ggZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBmcy9leHQ0L2lub2RlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgZnVuY3Rpb24uIFRoZSBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkLiBUaGUgaW5pdGlhbCBgaW5vZGUtXHUwMDNlaV9zYmAgY2FsbCBpcyBjaGFuZ2VkIHRvIGBzYmAgdXNpbmcgdGhlIGBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtXHUwMDNlaV9zYjtgIGRlZmluaXRpb24gYW5kIHRoZSBqb3VybmFsIGNoZWNrIGhhcyBjaGFuZ2VkIGZyb20gYCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbGAgdG8gYCFleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpIFx1MDAyNlx1MDAyNiAhKEVYVDRfU0Ioc2IpLVx1MDAzZXNfbW91bnRfc3RhdGUgXHUwMDI2IEVYVDRfRkNfUkVQTEFZKWAuIFRoaXMgbW9kaWZpY2F0aW9uIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgb3B0aW1pemluZyB0aGUgbWV0YWRhdGEgd3JpdGVvdXQgcGF0aCwgc3BlY2lmaWNhbGx5IGF2b2lkaW5nIHRoZSB3cml0ZWJhY2sgYXR0YWNobWVudCBpbiBmYXN0IGNvbW1pdCByZXBsYXkgc2NlbmFyaW9zLiBJdCBpcyBmYXN0ZXIgdGhpcyB3YXkgYW5kIHdlIGF2b2lkIGVudGVyaW5nIGZzIHdyaXRlYmFjayBwYXRocyB3aGljaCBhcmVuJ3QgZnVsbHkgaW5pdGlhbGl6ZWQgeWV0LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gR2l2ZW4gdGhhdCBpdCdzIGEgY29yZSBleHQ0IGZ1bmN0aW9uIHdpdGhpbiB0aGUgaW5vZGUgaGFuZGxpbmcsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGEgcHJpbWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZyB0byBlbnN1cmUgdGhlIGV4dDQgZmlsZXN5c3RlbSBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgYENPTkZJR19FWFQ0X0ZTYC4gTm93IEkgY2FuIGZvY3VzIG9uIHRoaXMgZnVuY3Rpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIExvb2tzIGxpa2UgYSBnb29kIGZvY3VzIHN5bWJvbC4gSSdsbCBuZWVkIHRvIGRlbHZlIGRlZXBlciBpbnRvIHRoZSBjb2RlIGFyb3VuZCBgZnMvZXh0NC9pbm9kZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjMxLjE0NDkzODk0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDA1NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X21hcmtfaWxvY19kaXJ0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDRfamJkMi5oPTEyNT1pbnRcXG5mcy9leHQ0L2V4dDRfamJkMi5oOjEyNjpleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbmZzL2V4dDQvZXh0NF9qYmQyLmgtMTI3LVxcdFxcdCAgICAgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MjY3PXN0YXRpYyBpbnQgZXh0NF9jcmVhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMzI4LVxcdGdldF9iaChpcy5pbG9jLmJoKTtcXG5mcy9leHQ0L2lubGluZS5jOjMyOTpcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTMzMC1cXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MzM2PXN0YXRpYyBpbnQgZXh0NF91cGRhdGVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMzk4LVxcdGdldF9iaChpcy5pbG9jLmJoKTtcXG5mcy9leHQ0L2lubGluZS5jOjM5OTpcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTQwMC1cXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9NDM2PXN0YXRpYyBpbnQgZXh0NF9kZXN0cm95X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy00ODktXFx0Z2V0X2JoKGlzLmlsb2MuYmgpO1xcbmZzL2V4dDQvaW5saW5lLmM6NDkwOlxcdGVycm9yID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlzLmlsb2MpO1xcbmZzL2V4dDQvaW5saW5lLmMtNDkxLVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTYzOTk9aW50IGV4dDRfY2h1bmtfdHJhbnNfYmxvY2tzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBucmJsb2NrcylcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NDA3LSAqL1xcbmZzL2V4dDQvaW5vZGUuYzo2NDA4OmludCBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGVfdCAqaGFuZGxlLFxcbmZzL2V4dDQvaW5vZGUuYy02NDA5LVxcdFxcdFxcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZXh0NF9pbG9jICppbG9jKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTY1NzU9aW50IGV4dDRfZXhwYW5kX2V4dHJhX2lzaXplKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNjYwOC1cXG5mcy9leHQ0L2lub2RlLmM6NjYwOTpcXHRyYyA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIGlsb2MpO1xcbmZzL2V4dDQvaW5vZGUuYy02NjEwLVxcdGlmICghZXJyb3IpXFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjYzMj1pbnQgX19leHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NjQ4LVxcbmZzL2V4dDQvaW5vZGUuYzo2NjQ5OlxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lub2RlLmMtNjY1MC1vdXQ6XFxuLS1cXG5mcy9leHQ0L2lvY3RsLmM9NTkwPXN0YXRpYyBpbnQgZXh0NF9pb2N0bF9zZXRmbGFncyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jLTY4Mi1cXG5mcy9leHQ0L2lvY3RsLmM6NjgzOlxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtNjg0LWZsYWdzX2VycjpcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYz03MTY9c3RhdGljIGludCBleHQ0X2lvY3RsX3NldHByb2plY3Qoc3RydWN0IGlub2RlICppbm9kZSwgX191MzIgcHJvamlkKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jLTc5My1vdXRfZGlydHk6XFxuZnMvZXh0NC9pb2N0bC5jOjc5NDpcXHRyYyA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtNzk1LVxcdGlmICghZXJyKVxcbi0tXFxuZnMvZXh0NC9pb2N0bC5jPTE1Mzg9c3RhdGljIGxvbmcgX19leHQ0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmZzL2V4dDQvaW9jdGwuYy0xNTg2LVxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX2dlbmVyYXRpb24gPSBnZW5lcmF0aW9uO1xcbmZzL2V4dDQvaW9jdGwuYzoxNTg3OlxcdFxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lvY3RsLmMtMTU4OC1cXHRcXHR9XFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jPTEwMT1pbnQgZXh0NF9vcnBoYW5fYWRkKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuLS1cXG5mcy9leHQ0L29ycGhhbi5jLTE2NS1cXHRcXHRlcnIgPSBleHQ0X2hhbmRsZV9kaXJ0eV9tZXRhZGF0YShoYW5kbGUsIE5VTEwsIHNiaS1cXHUwMDNlc19zYmgpO1xcbmZzL2V4dDQvb3JwaGFuLmM6MTY2OlxcdFxcdHJjID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMTY3LVxcdFxcdGlmICghZXJyKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYz0yMjU9aW50IGV4dDRfb3JwaGFuX2RlbChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9vcnBoYW4uYy0yOTQtXFx0XFx0TkVYVF9PUlBIQU4oaV9wcmV2KSA9IGlub19uZXh0O1xcbmZzL2V4dDQvb3JwaGFuLmM6Mjk1OlxcdFxcdGVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaV9wcmV2LCBcXHUwMDI2aWxvYzIpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMjk2LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2c2JpLVxcdTAwM2VzX29ycGhhbl9sb2NrKTtcXG4tLVxcbmZzL2V4dDQvb3JwaGFuLmMtMzAwLVxcdE5FWFRfT1JQSEFOKGlub2RlKSA9IDA7XFxuZnMvZXh0NC9vcnBoYW4uYzozMDE6XFx0ZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvb3JwaGFuLmMtMzAyLW91dF9lcnI6XFxuLS1cXG5mcy9leHQ0L3Jlc2l6ZS5jPTgxOT1zdGF0aWMgaW50IGFkZF9uZXdfZ2RiKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L3Jlc2l6ZS5jLTkxMy1cXHRcXHRcXHQgICAoOSAtIEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2NsdXN0ZXJfYml0cyk7XFxuZnMvZXh0NC9yZXNpemUuYzo5MTQ6XFx0ZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbmZzL2V4dDQvcmVzaXplLmMtOTE1LVxcdG1lbXNldChnZGJfYmgtXFx1MDAzZWJfZGF0YSwgMCwgc2ItXFx1MDAzZXNfYmxvY2tzaXplKTtcXG4tLVxcbmZzL2V4dDQvcmVzaXplLmM9MTAxOD1zdGF0aWMgaW50IHJlc2VydmVfYmFja3VwX2dkYihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9yZXNpemUuYy0xMTAwLVxcdGlub2RlLVxcdTAwM2VpX2Jsb2NrcyArPSByZXNlcnZlZF9nZGIgKiBzYi1cXHUwMDNlc19ibG9ja3NpemUgXFx1MDAzZVxcdTAwM2UgKDkgLSBjbHVzdGVyX2JpdHMpO1xcbmZzL2V4dDQvcmVzaXplLmM6MTEwMTpcXHRleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC9yZXNpemUuYy0xMTAyLVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYz0xOTE9c3RhdGljIGludCBleHQ0X2VuZF9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCB2b2lkICpkZXNjLFxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0yNDUtXFx0ZXh0NF9zZXRfaW5vZGVfZmxhZ3MoaW5vZGUsIGZhbHNlKTtcXG5mcy9leHQ0L3Zlcml0eS5jOjI0NjpcXHRlcnIgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC92ZXJpdHkuYy0yNDctXFx0aWYgKGVycilcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0xMDIyPXN0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV91cGRhdGVfcmVmKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqZWFfaW5vZGUsXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmMtMTA2NS1cXG5mcy9leHQ0L3hhdHRyLmM6MTA2NjpcXHRyZXQgPSBleHQ0X21hcmtfaWxvY19kaXJ0eShoYW5kbGUsIGVhX2lub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC94YXR0ci5jLTEwNjctXFx0aWYgKHJldClcXG5mcy9leHQ0L3hhdHRyLmMtMTA2OC1cXHRcXHRleHQ0X3dhcm5pbmdfaW5vZGUoZWFfaW5vZGUsXFxuZnMvZXh0NC94YXR0ci5jOjEwNjk6XFx0XFx0XFx0XFx0ICAgXFxcImV4dDRfbWFya19pbG9jX2RpcnR5KCkgZmFpbGVkIHJldD0lZFxcXCIsIHJldCk7XFxuZnMvZXh0NC94YXR0ci5jLTEwNzAtb3V0Olxcbi0tXFxuZnMvZXh0NC94YXR0ci5jPTIzNDk9ZXh0NF94YXR0cl9zZXRfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTI0ODItXFx0XFx0XFx0bm9fZXhwYW5kID0gMDtcXG5mcy9leHQ0L3hhdHRyLmM6MjQ4MzpcXHRcXHRlcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsIFxcdTAwMjZpcy5pbG9jKTtcXG5mcy9leHQ0L3hhdHRyLmMtMjQ4NC1cXHRcXHQvKlxcbmZzL2V4dDQveGF0dHIuYzoyNDg1OlxcdFxcdCAqIFRoZSBiaCBpcyBjb25zdW1lZCBieSBleHQ0X21hcmtfaWxvY19kaXJ0eSwgZXZlbiB3aXRoXFxuZnMvZXh0NC94YXR0ci5jLTI0ODYtXFx0XFx0ICogZXJyb3IgIT0gMC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6MzEuMTg5MDAzNzY0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUzNjkxMTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBpbiB0aGUgQ29udGV4dCBvZiBGYXN0IENvbW1pdCBSZXBsYXkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBgZXh0NF9tYXJrX2lsb2NfZGlydHlgLiBJIGtub3cgdGhpcyBmdW5jdGlvbiDigJMgaXQncyBhIHdvcmtob3JzZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLCBnZXR0aW5nIHRvbnMgb2YgdXNlLiBUaGUgY29yZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCBpdCdzIGFsdGVyaW5nIGhvdyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGJlaGF2ZXMsIHNwZWNpZmljYWxseSB0byBwcmV2ZW50IGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4gVGhlIGNvbmRpdGlvbiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBoaW5nZXMgb24gYEVYVDRfRkNfUkVQTEFZYCBiZWluZyBzZXQgd2l0aGluIGBzX21vdW50X3N0YXRlYC4gVGhpcyBoYXMgbXkgaW1tZWRpYXRlIGF0dGVudGlvbiBiZWNhdXNlIGBFWFQ0X0ZDX1JFUExBWWAgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBmYXN0IGNvbW1pdCByZXBsYXkuXG5cbk5vdywgbXkga2V5IHF1ZXN0aW9uIGJlY29tZXM6IGlzIGBFWFQ0X0ZDX1JFUExBWWAgdHJ1bHkgc2V0IHdpdGhpbiBgc19tb3VudF9zdGF0ZWAgZHVyaW5nIHRoZSBwaGFzZXMgb2YgZmFzdCBjb21taXQgcmVwbGF5IHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgY2hhbmdlPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBhc3N1bXB0aW9uIGhvbGRzLCBhbmQgdGhhdCB0aGlzIGNoYW5nZSBpcyBzYWZlIHVuZGVyIHRob3NlIGNpcmN1bXN0YW5jZXMuIElmIHRoaXMgY2hlY2sgaXNuJ3QgaW4gcGxhY2UgSSBjb3VsZCBzZWUgc29tZSBiaWcgcHJvYmxlbXMgZG93biB0aGUgcm9hZC4gSSBuZWVkIHRvIGRpZyBpbiBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIG1lY2hhbmlzbXMgYW5kIGVuc3VyZSB0aGlzIG1vZGlmaWNhdGlvbiBkb2VzIG5vdCBpbnRyb2R1Y2Ugc29tZSBjcml0aWNhbCBkYXRhIGNvcnJ1cHRpb24gcmlzay4gVGhpcyBpcyBhIHN1YnRsZSBvcHRpbWl6YXRpb24gYW5kIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIGNvbmRpdGlvbnMgaXQncyBkZXNpZ25lZCB0byBoYW5kbGUgYXJlIHByZWNpc2VseSB0aG9zZSBpdCBhZGRyZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTozNi43MjU5MTc0MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjc3NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GQ19SRVBMQVlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9iYWxsb2MuYz0zOTk9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2Jsb2NrX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9iYWxsb2MuYy00MDYtXFxuZnMvZXh0NC9iYWxsb2MuYzo0MDc6XFx0aWYgKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9iYWxsb2MuYy00MDgtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaD0xMDQ4PXN0cnVjdCBleHQ0X2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0NC9leHQ0LmgtMTIzNy0jZGVmaW5lXFx0RVhUNF9PUlBIQU5fRlNcXHRcXHRcXHQweDAwMDRcXHQvKiBPcnBoYW5zIGJlaW5nIHJlY292ZXJlZCAqL1xcbmZzL2V4dDQvZXh0NC5oOjEyMzg6I2RlZmluZSBFWFQ0X0ZDX1JFUExBWVxcdFxcdFxcdDB4MDAyMFxcdC8qIEZhc3QgY29tbWl0IHJlcGxheSBvbmdvaW5nICovXFxuZnMvZXh0NC9leHQ0LmgtMTIzOS1cXG4tLVxcbmZzL2V4dDQvZXh0NF9qYmQyLmM9OTI9aGFuZGxlX3QgKl9fZXh0NF9qb3VybmFsX3N0YXJ0X3NiKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dDRfamJkMi5jLTExMS1cXHRqb3VybmFsID0gRVhUNF9TQihzYiktXFx1MDAzZXNfam91cm5hbDtcXG5mcy9leHQ0L2V4dDRfamJkMi5jOjExMjpcXHRpZiAoIWpvdXJuYWwgfHwgKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKVxcbmZzL2V4dDQvZXh0NF9qYmQyLmMtMTEzLVxcdFxcdHJldHVybiBleHQ0X2dldF9ub2pvdXJuYWwoKTtcXG4tLVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYz0zNjM9dm9pZCBleHQ0X2VzX2ZpbmRfZXh0ZW50X3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtMzY5LVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzozNzA6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTM3MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDE3PWJvb2wgZXh0NF9lc19zY2FuX3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmMtNDIyLVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYzo0MjM6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQyNC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9NDYzPWJvb2wgZXh0NF9lc19zY2FuX2NsdShzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTQ2OC1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6NDY5OlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy00NzAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTkwNT12b2lkIGV4dDRfZXNfaW5zZXJ0X2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTkxOC1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM6OTE5OlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvZXh0ZW50c19zdGF0dXMuYy05MjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwMjQ9dm9pZCBleHQ0X2VzX2NhY2hlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTEwMzMtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjEwMzQ6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTEwMzUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTEwOTI9aW50IGV4dDRfZXNfbG9va3VwX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTExMDEtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjExMDI6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTExMDMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2V4dGVudHNfc3RhdHVzLmM9MTYyMz12b2lkIGV4dDRfZXNfcmVtb3ZlX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTE2MzAtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjE2MzE6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTE2MzItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jPTIyMDE9dm9pZCBleHQ0X2VzX2luc2VydF9kZWxheWVkX2V4dGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBleHQ0X2xibGtfdCBsYmxrLFxcbi0tXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTIyMTMtXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jOjIyMTQ6XFx0aWYgKEVYVDRfU0IoaW5vZGUtXFx1MDAzZWlfc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpXFxuZnMvZXh0NC9leHRlbnRzX3N0YXR1cy5jLTIyMTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0ND1zdGF0aWMgYm9vbCBleHQ0X2ZjX2Rpc2FibGVkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2LVxcdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ3OlxcdFxcdChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0OC19XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTkxNT1zdGF0aWMgaW50IGV4dDRfZmNfcmVjb3JkX21vZGlmaWVkX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8pXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkyOC1cXHRcXHRcXHRcXHRzaXplb2YoaW50KSAqIChzdGF0ZS1cXHUwMDNlZmNfbW9kaWZpZWRfaW5vZGVzX3NpemUgK1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTI5OlxcdFxcdFxcdFxcdEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UKSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkzMC1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM0LVxcdFxcdHN0YXRlLVxcdTAwM2VmY19tb2RpZmllZF9pbm9kZXNfc2l6ZSArPVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTM1OlxcdFxcdFxcdEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTM2LVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yMTA4PWludCBleHQ0X2ZjX3JlY29yZF9yZWdpb25zKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBpbm8sXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyNi1cXHRcXHRcXHRcXHQgICAgICAoc3RhdGUtXFx1MDAzZWZjX3JlZ2lvbnNfc2l6ZSArXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIxMjc6XFx0XFx0XFx0XFx0ICAgICAgIEVYVDRfRkNfUkVQTEFZX1JFQUxMT0NfSU5DUkVNRU5UKSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEyOC1cXHRcXHRcXHRcXHQgICAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTMxLVxcdFxcdHN0YXRlLVxcdTAwM2VmY19yZWdpb25zX3NpemUgKz1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjEzMjpcXHRcXHRcXHRFWFQ0X0ZDX1JFUExBWV9SRUFMTE9DX0lOQ1JFTUVOVDtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjEzMy1cXHRcXHRzdGF0ZS1cXHUwMDNlZmNfcmVnaW9ucyA9IGZjX3JlZ2lvbnM7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQwNT12b2lkIGV4dDRfZmNfcmVwbGF5X2NsZWFudXAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDA4LVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNDA5OlxcdHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2PSB+RVhUNF9GQ19SRVBMQVk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MTAtXFx0a2ZyZWUoc2JpLVxcdTAwM2VzX2ZjX3JlcGxheV9zdGF0ZS5mY19yZWdpb25zKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yNTgxPXN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXkoam91cm5hbF90ICpqb3VybmFsLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLFxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTgtXFx0XFx0c3RhdGUtXFx1MDAzZWZjX2N1cnJlbnRfcGFzcyA9IHBhc3M7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1OTk6XFx0XFx0c2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIHw9IEVYVDRfRkNfUkVQTEFZO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjAwLVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuaD0xMjA9c3RydWN0IGV4dDRfZmNfc3RhdHMge1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTEyOS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTMwOiNkZWZpbmUgRVhUNF9GQ19SRVBMQVlfUkVBTExPQ19JTkNSRU1FTlRcXHQ0XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTEzMS1cXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmM9ODE9c3RhdGljIGludCBleHQ0X3ZhbGlkYXRlX2lub2RlX2JpdG1hcChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy04OC1cXG5mcy9leHQ0L2lhbGxvYy5jOjg5OlxcdGlmIChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaWFsbG9jLmMtOTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jPTIzNz12b2lkIGV4dDRfZnJlZV9pbm9kZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pYWxsb2MuYy0yOTUtXFx0fVxcbmZzL2V4dDQvaWFsbG9jLmM6Mjk2OlxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xcbmZzL2V4dDQvaWFsbG9jLmMtMjk3LVxcdFxcdGdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGJsb2NrX2dyb3VwKTtcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmM9OTMzPXN0cnVjdCBpbm9kZSAqX19leHQ0X25ld19pbm9kZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmMtMTA1My1cXG5mcy9leHQ0L2lhbGxvYy5jOjEwNTQ6XFx0XFx0aWYgKCEoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuZnMvZXh0NC9pYWxsb2MuYy0xMDU1LVxcdFxcdFxcdGdycCA9IGV4dDRfZ2V0X2dyb3VwX2luZm8oc2IsIGdyb3VwKTtcXG4tLVxcbmZzL2V4dDQvaWFsbG9jLmMtMTA3MC1cXHRcXHR9XFxuZnMvZXh0NC9pYWxsb2MuYzoxMDcxOlxcdFxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaWFsbG9jLmMtMTA3Mi1cXHRcXHQgICAgRVhUNF9NQl9HUlBfSUJJVE1BUF9DT1JSVVBUKGdycCkpXFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTEwODYtXFxuZnMvZXh0NC9pYWxsb2MuYzoxMDg3OlxcdFxcdGlmICgoIShzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpIFxcdTAwMjZcXHUwMDI2ICFoYW5kbGUpIHtcXG5mcy9leHQ0L2lhbGxvYy5jLTEwODgtXFx0XFx0XFx0QlVHX09OKG5ibG9ja3MgXFx1MDAzYz0gMCk7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTExOTItXFxuZnMvZXh0NC9pYWxsb2MuYzoxMTkzOlxcdFxcdGlmICghKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSkge1xcbmZzL2V4dDQvaWFsbG9jLmMtMTE5NC1cXHRcXHRcXHRncnAgPSBleHQ0X2dldF9ncm91cF9pbmZvKHNiLCBncm91cCk7XFxuLS1cXG5mcy9leHQ0L2lhbGxvYy5jLTEyMTgtXFx0XFx0XFx0XFx0XFx0KEVYVDRfSU5PREVTX1BFUl9HUk9VUChzYikgLSBpbm8pKTtcXG5mcy9leHQ0L2lhbGxvYy5jOjEyMTk6XFx0XFx0aWYgKCEoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKVxcbmZzL2V4dDQvaWFsbG9jLmMtMTIyMC1cXHRcXHRcXHR1cF9yZWFkKFxcdTAwMjZncnAtXFx1MDAzZWFsbG9jX3NlbSk7XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NDQwPXZvaWQgZXh0NF9jaGVja19tYXBfZXh0ZW50c19lbnYoc3RydWN0IGlub2RlICppbm9kZSlcXG5mcy9leHQ0L2lub2RlLmMtNDQxLXtcXG5mcy9leHQ0L2lub2RlLmM6NDQyOlxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy00NDMtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTk3OT1zdHJ1Y3QgYnVmZmVyX2hlYWQgKmV4dDRfZ2V0YmxrKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtOTg3LVxcbmZzL2V4dDQvaW5vZGUuYzo5ODg6XFx0QVNTRVJUKChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy05ODktXFx0XFx0ICAgIHx8IGhhbmRsZSAhPSBOVUxMIHx8IGNyZWF0ZSA9PSAwKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy0xMDE1LVxcdFxcdEFTU0VSVChjcmVhdGUgIT0gMCk7XFxuZnMvZXh0NC9pbm9kZS5jOjEwMTY6XFx0XFx0QVNTRVJUKChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvaW5vZGUuYy0xMDE3LVxcdFxcdFxcdCAgICB8fCAoaGFuZGxlICE9IE5VTEwpKTtcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz01Mjc3PXN0cnVjdCBpbm9kZSAqX19leHQ0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNTM1OS1cXHQgICAgZXh0NF9zaW11bGF0ZV9mYWlsKHNiLCBFWFQ0X1NJTV9JTk9ERV9DUkMpKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaW5vZGUuYzo1MzYwOlxcdCAgICAgKCEoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTUzNjEtXFx0XFx0ZXh0NF9lcnJvcl9pbm9kZV9lcnIoaW5vZGUsIGZ1bmN0aW9uLCBsaW5lLCAwLFxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTU1MjktXFx0XFx0LyogdmFsaWRhdGUgdGhlIGJsb2NrIHJlZmVyZW5jZXMgaW4gdGhlIGlub2RlICovXFxuZnMvZXh0NC9pbm9kZS5jOjU1MzA6XFx0XFx0aWYgKCEoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L2lub2RlLmMtNTUzMS1cXHRcXHRcXHQoU19JU1JFRyhpbm9kZS1cXHUwMDNlaV9tb2RlKSB8fCBTX0lTRElSKGlub2RlLVxcdTAwM2VpX21vZGUpIHx8XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NjQwOD1pbnQgZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02NDM0LVxcdGlmICghZXh0NF9oYW5kbGVfdmFsaWQoaGFuZGxlKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvaW5vZGUuYzo2NDM1OlxcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpKSB7XFxuZnMvZXh0NC9pbm9kZS5jLTY0MzYtXFx0XFx0LypcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTIwMDA9c3RhdGljIHZvaWQgbWJfZnJlZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGV4dDRfYnVkZHkgKmU0YixcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTIwMzYtXFx0XFx0ICovXFxuZnMvZXh0NC9tYmFsbG9jLmM6MjAzNzpcXHRcXHRpZiAoc2JpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIHtcXG5mcy9leHQ0L21iYWxsb2MuYy0yMDM4LVxcdFxcdFxcdG1iX3JlZ2VuZXJhdGVfYnVkZHkoZTRiKTtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTU2MDc9dm9pZCBleHQ0X2Rpc2NhcmRfcHJlYWxsb2NhdGlvbnMoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTU2MjEtXFxuZnMvZXh0NC9tYmFsbG9jLmM6NTYyMjpcXHRpZiAoRVhUNF9TQihzYiktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcXG5mcy9leHQ0L21iYWxsb2MuYy01NjIzLVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTYyMjk9ZXh0NF9mc2Jsa190IGV4dDRfbWJfbmV3X2Jsb2NrcyhoYW5kbGVfdCAqaGFuZGxlLFxcbi0tXFxuZnMvZXh0NC9tYmFsbG9jLmMtNjI0NS1cXHR0cmFjZV9leHQ0X3JlcXVlc3RfYmxvY2tzKGFyKTtcXG5mcy9leHQ0L21iYWxsb2MuYzo2MjQ2OlxcdGlmIChzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgXFx1MDAyNiBFWFQ0X0ZDX1JFUExBWSlcXG5mcy9leHQ0L21iYWxsb2MuYy02MjQ3LVxcdFxcdHJldHVybiBleHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKGFyLCBlcnJwKTtcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jPTY2OTE9dm9pZCBleHQ0X2ZyZWVfYmxvY2tzKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXFxuLS1cXG5mcy9leHQ0L21iYWxsb2MuYy02NzA3LVxcbmZzL2V4dDQvbWJhbGxvYy5jOjY3MDg6XFx0aWYgKHNiaS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSB7XFxuZnMvZXh0NC9tYmFsbG9jLmMtNjcwOS1cXHRcXHRleHQ0X2ZyZWVfYmxvY2tzX3NpbXBsZShpbm9kZSwgYmxvY2ssIEVYVDRfTlVNX0IyQyhzYmksIGNvdW50KSk7XFxuLS1cXG5mcy9leHQ0L25hbWVpLmM9MzIyNj1pbnQgX19leHQ0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKmRfbmFtZSxcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYy0zMjUyLVxcdFxcdCAqL1xcbmZzL2V4dDQvbmFtZWkuYzozMjUzOlxcdFxcdGlmIChFWFQ0X1NCKGlub2RlLVxcdTAwM2VpX3NiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKVxcbmZzL2V4dDQvbmFtZWkuYy0zMjU0LVxcdFxcdFxcdHNraXBfcmVtb3ZlX2RlbnRyeSA9IDE7XFxuLS1cXG5mcy9leHQ0L25hbWVpLmM9Mzc5Nz1zdGF0aWMgaW50IGV4dDRfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsXFxuLS1cXG5mcy9leHQ0L25hbWVpLmMtNDAwOC1cXHRcXHRpZiAodGVzdF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvbmFtZWkuYzo0MDA5OlxcdFxcdCAgICAhKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX21vdW50X3N0YXRlIFxcdTAwMjYgRVhUNF9GQ19SRVBMQVkpIFxcdTAwMjZcXHUwMDI2XFxuZnMvZXh0NC9uYW1laS5jLTQwMTAtXFx0XFx0ICAgICEoZXh0NF90ZXN0X21vdW50X2ZsYWcoc2IsIEVYVDRfTUZfRkNfSU5FTElHSUJMRSkpKSB7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTI4NT1zdGF0aWMgaW50IGV4dDRfYmxvY2tfZ3JvdXBfbWV0YV9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBzaWxlbnQpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTMyNi1cXHRzYmktXFx1MDAzZXNfZGVzY19wZXJfYmxvY2sgPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLyBFWFQ0X0RFU0NfU0laRShzYik7XFxuZnMvZXh0NC9zdXBlci5jOjUzMjc6XFx0c2JpLVxcdTAwM2VzX21vdW50X3N0YXRlID0gbGUxNl90b19jcHUoZXMtXFx1MDAzZXNfc3RhdGUpIFxcdTAwMjYgfkVYVDRfRkNfUkVQTEFZO1xcbmZzL2V4dDQvc3VwZXIuYy01MzI4LVxcdHNiaS1cXHUwMDNlc19hZGRyX3Blcl9ibG9ja19iaXRzID0gaWxvZzIoRVhUNF9BRERSX1BFUl9CTE9DSyhzYikpO1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTY1NjY9c3RhdGljIGludCBfX2V4dDRfcmVtb3VudChzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNjc3Ny1cXHRcXHRcXHRzYmktXFx1MDAzZXNfbW91bnRfc3RhdGUgPSAobGUxNl90b19jcHUoZXMtXFx1MDAzZXNfc3RhdGUpIFxcdTAwMjZcXG5mcy9leHQ0L3N1cGVyLmM6Njc3ODpcXHRcXHRcXHRcXHRcXHQgICAgICB+RVhUNF9GQ19SRVBMQVkpO1xcbmZzL2V4dDQvc3VwZXIuYy02Nzc5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTozNi43NzExOTA0MDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc1MzA5MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZhc3QgQ29tbWl0IFJlcGxheSBCdWcgRml4IGluIGV4dDQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBmYXN0IGNvbW1pdCByZXBsYXkuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAgaW5hcHByb3ByaWF0ZWx5IGF0dGFjaGluZyBpbm9kZXMgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXksIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGNhbiBsZWFkIHRvIG5hc3R5IGluY29uc2lzdGVuY2llcyBiZWNhdXNlIHRoZSBmaWxlc3lzdGVtIHdyaXRlYmFjayBtZWNoYW5pc21zIGFyZW4ndCBmdWxseSBzZXQgdXAgeWV0IGR1cmluZyByZXBsYXkuXG5cblRoZSBmaXggaXRzZWxmIGlzIGludHJpZ3VpbmcuIFRoZXkndmUgcmVwbGFjZWQgdGhlIGpvdXJuYWwgY2hlY2sgYCFFWFQ0X1NCKGlub2RlLVx1MDAzZWlfc2IpLVx1MDAzZXNfam91cm5hbGAgd2l0aCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSkgXHUwMDI2XHUwMDI2ICEoRVhUNF9TQihzYiktXHUwMDNlc19tb3VudF9zdGF0ZSBcdTAwMjYgRVhUNF9GQ19SRVBMQVkpYC4gSW5pdGlhbGx5LCBJIHdhcyBhIGJpdCB0aHJvd24gYnkgdGhlIGBleHQ0X2hhbmRsZV92YWxpZChoYW5kbGUpYCBwYXJ0LiBJdCdzIGVzc2VudGlhbGx5IGNoZWNraW5nIGlmIGEgdHJhbnNhY3Rpb24gaGFuZGxlIGlzIHZhbGlkLCByaWdodD8gVGhlbiwgSSByZW1lbWJlcmVkIHRoYXQgYGV4dDRfaGFuZGxlX3ZhbGlkYCBpcyBkZWZpbmVkIGFzIGEgc2ltcGxlIHBvaW50ZXIgY2hlY2s6IGFueXRoaW5nIGJlbG93IGBFWFQ0X05PSk9VUk5BTF9NQVhfUkVGX0NPVU5UYCBpcyBjb25zaWRlcmVkIGludmFsaWQuXG5cblNvLCBgIWV4dDRfaGFuZGxlX3ZhbGlkKGhhbmRsZSlgIGltcGxpZXMgdGhhdCBqb3VybmFsaW5nIGlzbid0IGVuYWJsZWQgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBvciB0aGUgaGFuZGxlIGlzIGluIG5vam91cm5hbCBtb2RlLiBUaGlzIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIGF2b2lkaW5nIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5LiBUaGV5IGFkZGVkIGEgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBGQyByZXBsYXksIHNvIHRoYXQgdGhpcyBjaGVjayB3b3JrcyBldmVuIGlmIGpvdXJuYWxpbmcgaXMgZW5hYmxlZC4gU28sIHRoZSBwYXRjaCBzZWVtcyB0byBiZSBjb3JyZWN0bHkgYXZvaWRpbmcgd3JpdGViYWNrIGF0dGFjaG1lbnQgd2hlbiBlaXRoZXIgdGhlIHRyYW5zYWN0aW9uIGRvZXNuJ3QgbmVlZCB0byBiZSBqb3VybmFsZWQgb3IgdGhlIGZpbGVzeXN0ZW0gaXMgdW5kZXJnb2luZyByZXBsYXkuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIHRoaXMgYXJlYSBpcyByaXBlIGZvciBwb3RlbnRpYWwgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgYGV4dDRfZmNfcmVwbGF5YCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsIGJlY2F1c2UgaXQncyB0aGUgYGV4dDRfZmNfcmVwbGF5YCBwcm9jZXNzIHRoYXQgaXMgbGlrZWx5IHRvIHRyaWdnZXIgdGhpcyBidWcgc2NlbmFyaW8uIEkgc2hvdWxkIGFsc28gaGF2ZSBhbiBleWUgb3V0IGZvciBob3cgYGV4dDRfbWFya19pbG9jX2RpcnR5YCBiZWhhdmVzIHdoZW4gZGVhbGluZyB3aXRoIGZhc3QgY29tbWl0IHJlcGxheS4gRnVuY3Rpb25zIHN1Y2ggYXMgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgb3Igc2ltaWxhciBmdW5jdGlvbiBjYWxscywgYXJlIG9mIGhpZ2ggaW50ZXJlc3QuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6NDQuODQ2NTAxNzU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzUwMTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZmNfcmVwbGF5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvZXh0NC5oPTE1ODY9c3RydWN0IGV4dDRfc2JfaW5mbyB7XFxuLS1cXG5mcy9leHQ0L2V4dDQuaC0xODYxLSNlbmRpZlxcbmZzL2V4dDQvZXh0NC5oOjE4NjI6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlIHNfZmNfcmVwbGF5X3N0YXRlO1xcbmZzL2V4dDQvZXh0NC5oLTE4NjMtfTtcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMwNzk9dm9pZCBleHQ0X2ZjX2RlbChzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcXG5mcy9leHQ0L2V4dDQuaDozMDgwOmJvb2wgZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgZXh0NF9mc2Jsa190IGJsb2NrKTtcXG5mcy9leHQ0L2V4dDQuaDozMDgxOnZvaWQgZXh0NF9mY19yZXBsYXlfY2xlYW51cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcXG5mcy9leHQ0L2V4dDQuaC0zMDgyLWludCBleHQ0X2ZjX2NvbW1pdChqb3VybmFsX3QgKmpvdXJuYWwsIHRpZF90IGNvbW1pdF90aWQpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTE4MDQ9c3RhdGljIGlubGluZSB2b2lkIGV4dDRfZmNfZ2V0X3RsKHN0cnVjdCBleHQ0X2ZjX3RsX21lbSAqdGwsIHU4ICp2YWwpXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxMy0vKiBVbmxpbmsgcmVwbGF5IGZ1bmN0aW9uICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4MTQ6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV91bmxpbmsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTgxNS1cXHRcXHRcXHRcXHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODIzLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODI0OlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19VTkxJTkssIGRhcmcuaW5vLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODI1LVxcdFxcdFxcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTItXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4NTM6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9saW5rX2ludGVybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4NTQtXFx0XFx0XFx0XFx0c3RydWN0IGRlbnRyeV9pbmZvX2FyZ3MgKmRhcmcsXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTg4OC0vKiBMaW5rIHJlcGxheSBmdW5jdGlvbiAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxODg5OnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfbGluayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODkwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXh0NF9mY190bF9tZW0gKnRsLCB1OCAqdmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE4OTYtXFx0dGxfdG9fZGFyZyhcXHUwMDI2ZGFyZywgdGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE4OTc6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0xJTkssIGRhcmcuaW5vLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xODk4LVxcdFxcdFxcdGRhcmcucGFyZW50X2lubywgZGFyZy5kbmFtZV9sZW4pO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5MDUtXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MDY6XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzYiwgXFx1MDAyNmRhcmcsIGlub2RlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkwNy1cXHRpcHV0KGlub2RlKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0xOTE1PXN0YXRpYyBpbnQgZXh0NF9mY19yZWNvcmRfbW9kaWZpZWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubylcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkxNi17XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE5MTc6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTkxOC1cXHRpbnQgaTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTQzLSAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoxOTQ0OnN0YXRpYyBpbnQgZXh0NF9mY19yZXBsYXlfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMTk0NS1cXHRcXHRcXHRcXHRzdHJ1Y3QgZXh0NF9mY190bF9tZW0gKnRsLCB1OCAqdmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE5NTgtXFx0aW5vID0gbGUzMl90b19jcHUoZmNfaW5vZGUuZmNfaW5vKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MTk1OTpcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgdGFnLCBpbm8sIDAsIDApO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xOTYwLVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNDktICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwNTA6c3RhdGljIGludCBleHQ0X2ZjX3JlcGxheV9jcmVhdGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA1MS1cXHRcXHRcXHRcXHQgc3RydWN0IGV4dDRfZmNfdGxfbWVtICp0bCwgdTggKnZhbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMDU5LVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMDYwOlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19DUkVBVCwgZGFyZy5pbm8sXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIwNjEtXFx0XFx0XFx0ZGFyZy5wYXJlbnRfaW5vLCBkYXJnLmRuYW1lX2xlbik7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5Mi1cXHR9XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIwOTM6XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfbGlua19pbnRlcm5hbChzYiwgXFx1MDAyNmRhcmcsIGlub2RlKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjA5NC1cXHRpZiAocmV0KVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIxMDg9aW50IGV4dDRfZmNfcmVjb3JkX3JlZ2lvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGlubyxcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTEwLXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjExMTpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTEyLVxcdHN0cnVjdCBleHQ0X2ZjX2FsbG9jX3JlZ2lvbiAqcmVnaW9uO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNDctLyogUmVwbGF5IGFkZCByYW5nZSB0YWcgKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjE0ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1OCAqdmFsKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTQ5LXtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMTYyLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyMTYzOlxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCBFWFQ0X0ZDX1RBR19BRERfUkFOR0UsXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIxNjQtXFx0XFx0bGUzMl90b19jcHUoZmNfYWRkX2V4LmZjX2lubyksIGxlMzJfdG9fY3B1KGV4LVxcdTAwM2VlZV9ibG9jayksXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjI2Nz1zdGF0aWMgaW50XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyNjg6ZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU4ICp2YWwpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNjkte1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIyNzktXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIyODA6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXkoc2IsIEVYVDRfRkNfVEFHX0RFTF9SQU5HRSxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjI4MS1cXHRcXHRsZTMyX3RvX2NwdShscmFuZ2UuZmNfaW5vKSwgY3VyLCByZW1haW5pbmcpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTIzMjg9c3RhdGljIHZvaWQgZXh0NF9mY19zZXRfYml0bWFwc19hbmRfY291bnRlcnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjMyOS17XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzMzA6XFx0c3RydWN0IGV4dDRfZmNfcmVwbGF5X3N0YXRlICpzdGF0ZTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjMzMS1cXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTIzODYtICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjIzODc6Ym9vbCBleHQ0X2ZjX3JlcGxheV9jaGVja19leGNsdWRlZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBleHQ0X2ZzYmxrX3QgYmxrKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzg4LXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjM4OS1cXHRpbnQgaTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjM5MDpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yMzkxLVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MDQtLyogQ2xlYW51cCBmdW5jdGlvbiBjYWxsZWQgYWZ0ZXIgcmVwbGF5ICovXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI0MDU6dm9pZCBleHQ0X2ZjX3JlcGxheV9jbGVhbnVwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI0MDYte1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI0MTQ9c3RhdGljIGJvb2wgZXh0NF9mY192YWx1ZV9sZW5faXN2YWxpZChzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmksXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1Ny0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ1ODpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5X3NjYW4oam91cm5hbF90ICpqb3VybmFsLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDU5LVxcdFxcdFxcdFxcdHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBvZmYsXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ2My1cXHRzdHJ1Y3QgZXh0NF9zYl9pbmZvICpzYmkgPSBFWFQ0X1NCKHNiKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2NDpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNDY1LVxcdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTcyLW91dF9lcnI6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI1NzM6XFx0dHJhY2VfZXh0NF9mY19yZXBsYXlfc2NhbihzYiwgcmV0LCBvZmYpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU4MC0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4MTpzdGF0aWMgaW50IGV4dDRfZmNfcmVwbGF5KGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjU4Mi1cXHRcXHRcXHRcXHRlbnVtIHBhc3N0eXBlIHBhc3MsIGludCBvZmYsIHRpZF90IGV4cGVjdGVkX3RpZClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTg4LVxcdGludCByZXQgPSBKQkQyX0ZDX1JFUExBWV9DT05USU5VRTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU4OTpcXHRzdHJ1Y3QgZXh0NF9mY19yZXBsYXlfc3RhdGUgKnN0YXRlID0gXFx1MDAyNnNiaS1cXHUwMDNlc19mY19yZXBsYXlfc3RhdGU7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTAtXFx0c3RydWN0IGV4dDRfZmNfdGFpbCB0YWlsO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI1OTMtXFx0XFx0c3RhdGUtXFx1MDAzZWZjX2N1cnJlbnRfcGFzcyA9IFBBU1NfU0NBTjtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjU5NDpcXHRcXHRyZXR1cm4gZXh0NF9mY19yZXBsYXlfc2Nhbihqb3VybmFsLCBiaCwgb2ZmLCBleHBlY3RlZF90aWQpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNTk1LVxcdH1cXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjMxLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfTElOSzpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjYzMjpcXHRcXHRcXHRyZXQgPSBleHQ0X2ZjX3JlcGxheV9saW5rKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzMtXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzQtXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19VTkxJTks6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2MzU6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfdW5saW5rKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzYtXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2MzctXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19BRERfUkFOR0U6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2Mzg6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfYWRkX3JhbmdlKHNiLCB2YWwpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjM5LVxcdFxcdFxcdGJyZWFrO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQwLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfQ1JFQVQ6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDE6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfY3JlYXRlKHNiLCBcXHUwMDI2dGwsIHZhbCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDItXFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NDMtXFx0XFx0Y2FzZSBFWFQ0X0ZDX1RBR19ERUxfUkFOR0U6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDQ6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfZGVsX3JhbmdlKHNiLCB2YWwpO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ1LVxcdFxcdFxcdGJyZWFrO1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjQ2LVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfSU5PREU6XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjI2NDc6XFx0XFx0XFx0cmV0ID0gZXh0NF9mY19yZXBsYXlfaW5vZGUoc2IsIFxcdTAwMjZ0bCwgdmFsKTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OC1cXHRcXHRcXHRicmVhaztcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY0OS1cXHRcXHRjYXNlIEVYVDRfRkNfVEFHX1BBRDpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1MDpcXHRcXHRcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfUEFELCAwLFxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjUxLVxcdFxcdFxcdFxcdFxcdCAgICAgdGwuZmNfbGVuLCAwKTtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjUzLVxcdFxcdGNhc2UgRVhUNF9GQ19UQUdfVEFJTDpcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY1NDpcXHRcXHRcXHR0cmFjZV9leHQ0X2ZjX3JlcGxheShzYiwgRVhUNF9GQ19UQUdfVEFJTCxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY1NS1cXHRcXHRcXHRcXHRcXHQgICAgIDAsIHRsLmZjX2xlbiwgMCk7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjY2MS1cXHRcXHRkZWZhdWx0OlxcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjYyOlxcdFxcdFxcdHRyYWNlX2V4dDRfZmNfcmVwbGF5KHNiLCB0bC5mY190YWcsIDAsIHRsLmZjX2xlbiwgMCk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2NjMtXFx0XFx0XFx0cmV0ID0gLUVDQU5DRUxFRDtcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYz0yNjczPXZvaWQgZXh0NF9mY19pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGpvdXJuYWxfdCAqam91cm5hbClcXG4tLVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0yNjc5LVxcdCAqL1xcbmZzL2V4dDQvZmFzdF9jb21taXQuYzoyNjgwOlxcdGpvdXJuYWwtXFx1MDAzZWpfZmNfcmVwbGF5X2NhbGxiYWNrID0gZXh0NF9mY19yZXBsYXk7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODEtXFx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oPTEzOT1zdHJ1Y3QgZXh0NF9mY19hbGxvY19yZWdpb24ge1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0Ny0gKi9cXG5mcy9leHQ0L2Zhc3RfY29tbWl0Lmg6MTQ4OnN0cnVjdCBleHQ0X2ZjX3JlcGxheV9zdGF0ZSB7XFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5oLTE0OS1cXHRpbnQgZmNfcmVwbGF5X251bV90YWdzO1xcbi0tXFxuZnMvZXh0NC9tYmFsbG9jLmM9NjE2Mj1leHQ0X21iX25ld19ibG9ja3Nfc2ltcGxlKHN0cnVjdCBleHQ0X2FsbG9jYXRpb25fcmVxdWVzdCAqYXIsIGludCAqZXJycClcXG4tLVxcbmZzL2V4dDQvbWJhbGxvYy5jLTYxOTMtXFx0XFx0XFx0XFx0YnJlYWs7XFxuZnMvZXh0NC9tYmFsbG9jLmM6NjE5NDpcXHRcXHRcXHRpZiAoZXh0NF9mY19yZXBsYXlfY2hlY2tfZXhjbHVkZWQoc2IsXFxuZnMvZXh0NC9tYmFsbG9jLmMtNjE5NS1cXHRcXHRcXHRcXHRleHQ0X2dyb3VwX2ZpcnN0X2Jsb2NrX25vKHNiLCBncm91cCkgK1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNDY9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTY0NS1cXHR9XFxuZnMvZXh0NC9zdXBlci5jOjU2NDY6XFx0ZXh0NF9mY19yZXBsYXlfY2xlYW51cChzYik7XFxuZnMvZXh0NC9zdXBlci5jLTU2NDctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjQ0Ljg5NDI1NTc1NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NjIxMzk5ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRmFzdCBDb21taXQgUmVwbGF5IEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgdGhlIGNvcmUgb2YgdGhpcyBmYXN0IGNvbW1pdCByZXBsYXkgc3R1ZmYgc2VlbXMgdG8gYmUgY2VudGVyZWQgYXJvdW5kIHRoZXNlIGZ1bmN0aW9uczogYGV4dDRfZmNfcmVwbGF5YCwgYGV4dDRfZmNfcmVwbGF5X2lub2RlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBgZXh0NF9mY19yZXBsYXlfdW5saW5rYCwgYGV4dDRfZmNfcmVwbGF5X2FkZF9yYW5nZWAsIGBleHQ0X2ZjX3JlcGxheV9jcmVhdGVgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X2RlbF9yYW5nZWAuIFRoZXkncmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnkgbmFtZXMsIGFuZCB0aG9zZSBmdW5jdGlvbiBzeW1ib2xzIGFyZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBkaXZpbmcgZGVlcGVyIGludG8gdGhlIGltcGxlbWVudGF0aW9uLiBTZWVtcyBsaWtlIHRoZXkgaGFuZGxlIGRpZmZlcmVudCBhc3BlY3RzIG9mIHJlcGxheWluZyB0aGUgZmFzdCBjb21taXQgZGF0YSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3QuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZlYXR1cmUgZGVwZW5kcyBvbiwgbGV0J3MgY2hlY2sgdGhlIEtjb25maWcuXG5cblRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjb25maWd1cmVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyAqZmFzdCBjb21taXQqIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXMgdGhlcmUgYSBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24ganVzdCBmb3IgdGhlIGZhc3QgY29tbWl0IGZlYXR1cmU/IE9yLCBpcyBpdCBqdXN0IGltcGxpY2l0bHkgZW5hYmxlZC9kaXNhYmxlZCBhcyBwYXJ0IG9mIHRoZSBicm9hZGVyIEVYVDRfRlMgY29uZmlndXJhdGlvbj8gSSBoYXZlIGEgZmVlbGluZyB0aGUgYW5zd2VyIGxpZXMgaW4gdW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gZmFzdCBjb21taXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjUwLjQ1NjM5ODQxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTYyNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSk9VUk5BTF9GQVNUX0NPTU1JVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L2V4dDQuaD0xMDQ4PXN0cnVjdCBleHQ0X2lub2RlX2luZm8ge1xcbi0tXFxuZnMvZXh0NC9leHQ0LmgtMTMwOC1cXG5mcy9leHQ0L2V4dDQuaDoxMzA5OiNkZWZpbmUgRVhUNF9NT1VOVDJfSk9VUk5BTF9GQVNUX0NPTU1JVFxcdDB4MDAwMDAwMTAgLyogSm91cm5hbCBmYXN0IGNvbW1pdCAqL1xcbmZzL2V4dDQvZXh0NC5oLTEzMTAtI2RlZmluZSBFWFQ0X01PVU5UMl9EQVhfTkVWRVJcXHRcXHQweDAwMDAwMDIwIC8qIERvIG5vdCBhbGxvdyBEaXJlY3QgQWNjZXNzICovXFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MjQ0PXN0YXRpYyBib29sIGV4dDRfZmNfZGlzYWJsZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ1LXtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjQ2OlxcdHJldHVybiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgfHxcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmMtMjQ3LVxcdFxcdChFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSk7XFxuLS1cXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM9MTU4Nj1pbnQgZXh0NF9mY19jb21taXQoam91cm5hbF90ICpqb3VybmFsLCB0aWRfdCBjb21taXRfdGlkKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTE1OTUtXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jOjE1OTY6XFx0aWYgKCF0ZXN0X29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbmZzL2V4dDQvZmFzdF9jb21taXQuYy0xNTk3LVxcdFxcdHJldHVybiBqYmQyX2NvbXBsZXRlX3RyYW5zYWN0aW9uKGpvdXJuYWwsIGNvbW1pdF90aWQpO1xcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jPTI2NzM9dm9pZCBleHQ0X2ZjX2luaXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgam91cm5hbF90ICpqb3VybmFsKVxcbi0tXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODAtXFx0am91cm5hbC1cXHUwMDNlal9mY19yZXBsYXlfY2FsbGJhY2sgPSBleHQ0X2ZjX3JlcGxheTtcXG5mcy9leHQ0L2Zhc3RfY29tbWl0LmM6MjY4MTpcXHRpZiAoIXRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkpXFxuZnMvZXh0NC9mYXN0X2NvbW1pdC5jLTI2ODItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTM0NTQ9c3RhdGljIGJvb2wgZXh0NF9pbm9kZV9kYXRhc3luY19kaXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTM0NjItXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmZzL2V4dDQvaW5vZGUuYzozNDYzOlxcdFxcdGlmICh0ZXN0X29wdDIoaW5vZGUtXFx1MDAzZWlfc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpKVxcbmZzL2V4dDQvaW5vZGUuYy0zNDY0LVxcdFxcdFxcdHJldHVybiAhbGlzdF9lbXB0eShcXHUwMDI2RVhUNF9JKGlub2RlKS1cXHUwMDNlaV9mY19saXN0KTtcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYz0zNzk3PXN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpcixcXG4tLVxcbmZzL2V4dDQvbmFtZWkuYy00MDA3LVxcdFxcdFxcdGV4dDRfZmNfdHJhY2tfdW5saW5rKGhhbmRsZSwgbmV3LmRlbnRyeSk7XFxuZnMvZXh0NC9uYW1laS5jOjQwMDg6XFx0XFx0aWYgKHRlc3Rfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCkgXFx1MDAyNlxcdTAwMjZcXG5mcy9leHQ0L25hbWVpLmMtNDAwOS1cXHRcXHQgICAgIShFWFQ0X1NCKHNiKS1cXHUwMDNlc19tb3VudF9zdGF0ZSBcXHUwMDI2IEVYVDRfRkNfUkVQTEFZKSBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTE4ODc9c3RhdGljIGNvbnN0IHN0cnVjdCBtb3VudF9vcHRzIHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xOTU0LSNpZmRlZiBDT05GSUdfRVhUNF9ERUJVR1xcbmZzL2V4dDQvc3VwZXIuYzoxOTU1OlxcdHtPcHRfZmNfZGVidWdfZm9yY2UsIEVYVDRfTU9VTlQyX0pPVVJOQUxfRkFTVF9DT01NSVQsXFxuZnMvZXh0NC9zdXBlci5jLTE5NTYtXFx0IE1PUFRfU0VUIHwgTU9QVF8yIHwgTU9QVF9FWFQ0X09OTFl9LFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTQzOTY9c3RhdGljIHZvaWQgZXh0NF9zZXRfZGVmX29wdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy00NDE1LVxcdGlmIChleHQ0X2hhc19mZWF0dXJlX2Zhc3RfY29tbWl0KHNiKSlcXG5mcy9leHQ0L3N1cGVyLmM6NDQxNjpcXHRcXHRzZXRfb3B0MihzYiwgSk9VUk5BTF9GQVNUX0NPTU1JVCk7XFxuZnMvZXh0NC9zdXBlci5jLTQ0MTctXFx0LyogZG9uJ3QgZm9yZ2V0IHRvIGVuYWJsZSBqb3VybmFsX2NzdW0gd2hlbiBtZXRhZGF0YV9jc3VtIGlzIGVuYWJsZWQuICovXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NDk2ND1zdGF0aWMgaW50IGV4dDRfbG9hZF9hbmRfaW5pdF9qb3VybmFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNDk4Ny1cXG5mcy9leHQ0L3N1cGVyLmM6NDk4ODpcXHRpZiAodGVzdF9vcHQyKHNiLCBKT1VSTkFMX0ZBU1RfQ09NTUlUKSBcXHUwMDI2XFx1MDAyNlxcbmZzL2V4dDQvc3VwZXIuYy00OTg5LVxcdFxcdCFqYmQyX2pvdXJuYWxfc2V0X2ZlYXR1cmVzKEVYVDRfU0Ioc2IpLVxcdTAwM2VzX2pvdXJuYWwsIDAsIDAsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTA0OD1zdGF0aWMgaW50IGV4dDRfY2hlY2tfam91cm5hbF9kYXRhX21vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01MDU1LVxcdFxcdGNsZWFyX29wdChzYiwgRElPUkVBRF9OT0xPQ0spO1xcbmZzL2V4dDQvc3VwZXIuYzo1MDU2OlxcdFxcdGNsZWFyX29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpO1xcbmZzL2V4dDQvc3VwZXIuYy01MDU3LVxcdFxcdGlmICh0ZXN0X29wdDIoc2IsIEVYUExJQ0lUX0RFTEFMTE9DKSkge1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTUzNDY9c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTU0NC1cXHRcXHRjbGVhcl9vcHQoc2IsIERBVEFfRkxBR1MpO1xcbmZzL2V4dDQvc3VwZXIuYzo1NTQ1OlxcdFxcdGNsZWFyX29wdDIoc2IsIEpPVVJOQUxfRkFTVF9DT01NSVQpO1xcbmZzL2V4dDQvc3VwZXIuYy01NTQ2LVxcdFxcdHNiaS1cXHUwMDNlc19qb3VybmFsID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTI6MTU6NTAuNTAxNjU5NDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzU0MzQ2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBleHQ0J3MgRmFzdCBDb21taXQgRmVhdHVyZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBleHQ0J3MgXCJmYXN0IGNvbW1pdFwiIGZlYXR1cmUsIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGV4dDQgZmlsZXN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCBoYXZlIHRoZSBgZmFzdF9jb21taXRgIGZsYWcgc2V0LiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBhIHNlbnNpYmxlIGRlZmF1bHQgaXMgYWx3YXlzIGFwcHJlY2lhdGVkLiBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG5vdy4gSXMgdGhlcmUgYSBzcGVjaWZpYyBLY29uZmlnIG9wdGlvbiBkZWRpY2F0ZWQgdG8gY29udHJvbGxpbmcgZmFzdCBjb21taXQ/IExldCBtZSBpbnZlc3RpZ2F0ZSB0aGF0IGZ1cnRoZXIuIFNlZW1zIGxpa2UgdGhlcmUgaXNuJ3Qgb25lIHNwZWNpZmljYWxseSBmb3IgZmFzdCBjb21taXQsIGFuZCBpdCdzIGxpa2VseSBnb3Zlcm5lZCBieSB0aGUgbW9yZSBnZW5lcmFsIGBDT05GSUdfRVhUNF9GU2AgY29uZmlndXJhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGV4dDQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoaXMuIEkgbmVlZCB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGl0J3MgYWN0aXZhdGVkIGFuZCBkZWFjdGl2YXRlZCBpbiB0aGUgYnVpbGQgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NzYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNTo1NS44NzcwOTYzMDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzM3OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFWFQ0X0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEyOjE1OjU1LjkyMTg0MDEzOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTM3MzAzMTEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gRVhUNCBGYXN0IENvbW1pdCBSZXBsYXkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBFWFQ0X0ZTYC4gTGV0J3MgZGlnIGludG8gdGhpcyBwYXRjaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWFzb25pbmcgYmVoaW5kIGl0LiBJdCdzIGFkZHJlc3NpbmcgYSBidWcgaW4gYGV4dDRfbWFya19pbG9jX2RpcnR5YC4gU3BlY2lmaWNhbGx5LCBpdCBjb25jZXJucyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHByb2Nlc3MsIHdoZXJlIHRoZSBjb2RlIHdhcyBpbmFwcHJvcHJpYXRlbHkgYXR0ZW1wdGluZyB0byBhdHRhY2ggYW4gaW5vZGUgdG8gd3JpdGViYWNrIGJlZm9yZSB0aGUgZmlsZXN5c3RlbSdzIHdyaXRlYmFjayBwYXRocyBhcmUgZnVsbHkgc2V0IHVwLiBUaGF0J3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBUaGUgZml4IGludm9sdmVzIGNvbmRpdGlvbmFsbHkgc2tpcHBpbmcgdGhpcyBpbm9kZSBhdHRhY2htZW50IGR1cmluZyByZXBsYXkgaWYgZWl0aGVyIGBFWFQ0X0ZDX1JFUExBWWAgaXMgc2V0IGluIGBzX21vdW50X3N0YXRlYCBvciB0aGUgaGFuZGxlIGl0c2VsZiBpc24ndCB2YWxpZC5cblxuVGhpcyBjaGFuZ2UgaXMgc3F1YXJlbHkgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoYXQgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEZ1bmN0aW9uYWxseSBzcGVha2luZywgaXQncyBhIGNyaXRpY2FsIGZpeC4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gZnV6eiB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIHJvYnVzdGx5LlxuXG5JIG5lZWQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpYyBzeW1ib2xzIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgYXJlIGBleHQ0X21hcmtfaWxvY19kaXJ0eWAsIG9mIGNvdXJzZSwgYWxvbmcgd2l0aCB0aGUgcmVwbGF5LXJlbGF0ZWQgZnVuY3Rpb25zOiBgZXh0NF9mY19yZXBsYXlgLCBgZXh0NF9mY19yZXBsYXlfaW5vZGVgLCBgZXh0NF9mY19yZXBsYXlfY3JlYXRlYCwgYGV4dDRfZmNfcmVwbGF5X2xpbmtgLCBhbmQgYGV4dDRfZmNfcmVwbGF5X3VubGlua2AuXG5cbk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCBpdCBsb29rcyBsaWtlIG9ubHkgYEVYVDRfRlNgIGlzIGludm9sdmVkIGhlcmUsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBObyBvdGhlciByZWxhdGVkIGNvbmZpZ3MuXG5cblNvLCBsZXQgbWUgc29saWRpZnkgdGhlIHJlYXNvbmluZzogVGhpcyBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIHByZXZlbnQgYXR0YWNoaW5nIGFuIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSBiZWNhdXNlIHRob3NlIHdyaXRlYmFjayBwYXRocyBhcmVuJ3QgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoaXMgY2hhbmdlIGlzIGRpcmVjdGx5IGZ1bmN0aW9uYWwsIG1vZGlmeWluZyBleHQ0J3MgY29yZSBjb2RlIHNwZWNpZmljYWxseSBpbXBhY3RpbmcgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBiZWhhdmlvci4gSXQncyBhIHJlYWNoYWJsZSBjb2RlIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBtYW5hZ2VzIGlub2RlIGRpcnR5aW5nIGVmZmVjdGl2ZWx5LiBPa2F5LCBJIHRoaW5rIHRoYXQncyBhIGdvb2Qgc3VtbWFyeS4gSSdsbCBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTUyLCJPdXRwdXRUb2tlbnMiOjE5MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMjoxNjowNy4yOTQ4NzM2MDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTMxNjc4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfbWFya19pbG9jX2RpcnR5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfaW5vZGVcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5X2NyZWF0ZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfbGlua1wiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGV4dDRfbWFya19pbG9jX2RpcnR5YCB0byBhdm9pZCBhdHRhY2hpbmcgdGhlIGlub2RlIHRvIHdyaXRlYmFjayBkdXJpbmcgZmFzdCBjb21taXQgcmVwbGF5IChgRVhUNF9GQ19SRVBMQVlgKSwgYXMgdGhlIGZpbGVzeXN0ZW0gd3JpdGViYWNrIHBhdGhzIGFyZSBub3QgZnVsbHkgaW5pdGlhbGl6ZWQgYXQgdGhhdCBwb2ludC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGV4dDQgY29kZSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgZmFzdCBjb21taXQgcmVwbGF5IHBhdGguIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZhc3QgY29tbWl0IHJlcGxheSBsb2dpYyBoYW5kbGVzIGlub2RlIGRpcnR5aW5nIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9tYXJrX2lsb2NfZGlydHlcIixcbiAgICBcImV4dDRfZmNfcmVwbGF5XCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9pbm9kZVwiLFxuICAgIFwiZXh0NF9mY19yZXBsYXlfY3JlYXRlXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV9saW5rXCIsXG4gICAgXCJleHQ0X2ZjX3JlcGxheV91bmxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZXh0NF9tYXJrX2lsb2NfZGlydHlgIHRvIGF2b2lkIGF0dGFjaGluZyB0aGUgaW5vZGUgdG8gd3JpdGViYWNrIGR1cmluZyBmYXN0IGNvbW1pdCByZXBsYXkgKGBFWFQ0X0ZDX1JFUExBWWApLCBhcyB0aGUgZmlsZXN5c3RlbSB3cml0ZWJhY2sgcGF0aHMgYXJlIG5vdCBmdWxseSBpbml0aWFsaXplZCBhdCB0aGF0IHBvaW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZXh0NCBjb2RlLCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBmYXN0IGNvbW1pdCByZXBsYXkgcGF0aC4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZmFzdCBjb21taXQgcmVwbGF5IGxvZ2ljIGhhbmRsZXMgaW5vZGUgZGlydHlpbmcgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[1] Phase: Succeeded StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 12:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 12:16:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2] Phase: Succeeded StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 12:16:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 12:16:18 +0000 UTC FinishedAt: 2026-08-04 12:16:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8pddt/series-workflow8pddt-convert-artifact-2609744786/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 12:16:28 +0000 UTC FinishedAt: 2026-08-04 12:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 12:16:28 +0000 UTC FinishedAt: 2026-08-04 12:37:59 +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:*bb975af7-36c6-4e8f-a17e-9fc577fab556,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-workflow8pddt/series-workflow8pddt-convert-artifact-2609744786/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": "d1246064-852c-492e-9e93-9dc9643544ed", "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-workflow8pddt/series-workflow8pddt-build-action-732433680/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 12:16:28 +0000 UTC FinishedAt: 2026-08-04 12:37:49 +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:*bb975af7-36c6-4e8f-a17e-9fc577fab556,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-workflow8pddt/series-workflow8pddt-convert-artifact-2609744786/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": "d1246064-852c-492e-9e93-9dc9643544ed", "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-workflow8pddt/series-workflow8pddt-build-action-732433680/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 12:37:59 +0000 UTC FinishedAt: 2026-08-04 12:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 12:37:59 +0000 UTC FinishedAt: 2026-08-04 12:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 12:37:59 +0000 UTC FinishedAt: 2026-08-04 12:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 12:37:59 +0000 UTC FinishedAt: 2026-08-04 12:38:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow8pddt/series-workflow8pddt-convert-artifact-4143598253/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 12:38:09 +0000 UTC FinishedAt: 2026-08-04 12:40:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 12:38:09 +0000 UTC FinishedAt: 2026-08-04 12:40:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d1246064-852c-492e-9e93-9dc9643544ed,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-workflow8pddt/series-workflow8pddt-build-action-732433680/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-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 12:40:27 +0000 UTC FinishedAt: 2026-08-04 12:40:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 12:40:27 +0000 UTC FinishedAt: 2026-08-04 12:40:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 12:40:27 +0000 UTC FinishedAt: 2026-08-04 12:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 12:40:27 +0000 UTC FinishedAt: 2026-08-04 12:56:51 +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:*bb975af7-36c6-4e8f-a17e-9fc577fab556,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-workflow8pddt/series-workflow8pddt-convert-artifact-4143598253/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": "fccf1fcb-bda6-47a8-a05d-43aa8a548411", "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-workflow8pddt/series-workflow8pddt-build-action-3896413961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 12:40:27 +0000 UTC FinishedAt: 2026-08-04 12:56:41 +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:*bb975af7-36c6-4e8f-a17e-9fc577fab556,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-workflow8pddt/series-workflow8pddt-convert-artifact-4143598253/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": "fccf1fcb-bda6-47a8-a05d-43aa8a548411", "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-workflow8pddt/series-workflow8pddt-build-action-3896413961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 12:56:51 +0000 UTC FinishedAt: 2026-08-04 12:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 12:56:51 +0000 UTC FinishedAt: 2026-08-04 12:56:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 12:56:51 +0000 UTC FinishedAt: 2026-08-04 12:58:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 12:56:51 +0000 UTC FinishedAt: 2026-08-04 12:58:40 +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:*fccf1fcb-bda6-47a8-a05d-43aa8a548411,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-workflow8pddt/series-workflow8pddt-build-action-3896413961/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-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"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:*d1246064-852c-492e-9e93-9dc9643544ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fccf1fcb-bda6-47a8-a05d-43aa8a548411,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-workflow8pddt/series-workflow8pddt-build-action-732433680/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-workflow8pddt/series-workflow8pddt-build-action-3896413961/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 12:58:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 12:58:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"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-workflow8pddt/series-workflow8pddt-convert-artifact-3923968530/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 12:58:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 12:58:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 12:58:45 +0000 UTC FinishedAt: 2026-08-04 12:58:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 12:58:55 +0000 UTC FinishedAt: 2026-08-04 16:00:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8pddt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_mark_iloc_dirty","ext4_fc_replay","ext4_fc_replay_inode","ext4_fc_replay_create","ext4_fc_replay_link","ext4_fc_replay_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"974d0be0cb8e48d63b9d413a2e1a8fba16cd2583","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"7b906041-0d7c-46b2-babf-cb64ec558a94","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 12:58:55 +0000 UTC FinishedAt: 2026-08-04 16:00:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d1246064-852c-492e-9e93-9dc9643544ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fccf1fcb-bda6-47a8-a05d-43aa8a548411,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-workflow8pddt/series-workflow8pddt-build-action-732433680/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-workflow8pddt/series-workflow8pddt-build-action-3896413961/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-workflow8pddt/series-workflow8pddt-convert-artifact-3923968530/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,}