Name: series-workflow6r94c Phase: Succeeded StartedAt: 2026-06-30 19:15:46 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[0] Phase: Succeeded StartedAt: 2026-06-30 19:15:46 +0000 UTC FinishedAt: 2026-06-30 19:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 19:15:46 +0000 UTC FinishedAt: 2026-06-30 19:37:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "a325cbb7-73d5-4408-beb9-e131c41ebe4d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "__rhtab_map_lookup_and_delete_batch" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE5OjMxOjQ0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGFzaHRhYi5jIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbmluZGV4IDlmMzk0ZTFhYTJlODViLi5kM2YyZjhhMzc5ZTg2YSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuQEAgLTMyOTksNiAmIzQzOzMyOTksNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHRkc3RfdmFsID0gdmFsdWVzO1xuIFx0dG90YWwgPSAwO1xuIFxuJiM0MztcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0LypcbkBAIC0zMzEzLDYgJiM0MzszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuIFx0XHRlbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpO1xuIFx0XHRpZiAoIWVsZW0pIHtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdFx0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIFx0XHRcdGdvdG8gZnJlZTtcbiBcdFx0fVxuQEAgLTMzNTAsNiAmIzQzOzMzNTIsNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpO1xuIFxuIFx0aWYgKHRvdGFsID09IDApIHtcbiBcdFx0cmV0ID0gLUVOT0VOVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE5OjMxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oYXNodGFiLmMgYi9rZXJuZWwvYnBmL2hhc2h0YWIuYwppbmRleCA5ZjM5NGUxYWEyZTg1Yi4uZDNmMmY4YTM3OWU4NmEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jCkBAIC0zMjk5LDYgJiM0MzszMjk5LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCWRzdF92YWwgPSB2YWx1ZXM7CiAJdG90YWwgPSAwOwogCiYjNDM7CWJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpOwogCXJjdV9yZWFkX2xvY2soKTsKIAogCS8qCkBAIC0zMzEzLDYgJiM0MzszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCQllbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpOwogCQlpZiAoIWVsZW0pIHsKIAkJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJCWJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKCk7CiAJCQlyZXQgPSAtRUFHQUlOOwogCQkJZ290byBmcmVlOwogCQl9CkBAIC0zMzUwLDYgJiM0MzszMzUyLDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCX0KIAogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpOwogCiAJaWYgKHRvdGFsID09IDApIHsKIAkJcmV0ID0gLUVOT0VOVDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIEJQRiBJbnN0cnVtZW50YXRpb24gSXNzdWUqKgoKUmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFyb3VuZCBhIHNwZWNpZmljIGNvZGUgc2VjdGlvbi4gVGhlIHRhcmdldCBpcyB0aGUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBmdW5jdGlvbiwgbG9jYXRlZCB3aXRoaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2h5ICp0aGlzKiBmdW5jdGlvbj8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBmb3Igc3VzcGVjdGluZyBhIG5lZWQgdG8gZGlzYWJsZSBpbnN0cnVtZW50YXRpb24gYXJvdW5kIHRoaXMgcGFydGljdWxhciBiaXQgb2YgbG9naWM/JiMzNDsgVGhpcyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBwb3RlbnRpYWxseSBhIHBlcmZvcm1hbmNlIG9yIGluc3RydW1lbnRhdGlvbi1yZWxhdGVkIGlzc3VlIHN1cmZhY2luZy4gIEkgbmVlZCB0byBkaXZlIGludG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGEgcG90ZW50aWFsIGNyaXRpY2FsIHNlY3Rpb24gbmVlZGluZyBwcm90ZWN0aW9uPyBJcyB0aGVyZSBhIGtub3duIGludGVyYWN0aW9uIHdpdGggQlBGIGluc3RydW1lbnRhdGlvbiB0aGF0JiMzOTtzIGNhdXNpbmcgcHJvYmxlbXM/IE15IGV4cGVydGlzZSBraWNrcyBpbiDigJMgSSBjYW4gcXVpY2tseSBzdGFydCB0byBhbmFseXplIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIGZsb3cgYW5kIGRldGVybWluZSB3aGVyZSBpbnN0cnVtZW50YXRpb24gbWlnaHQgYmUgY29uZmxpY3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgYmF0Y2ggbG9va3VwL2RlbGV0ZSBvcGVyYXRpb24gaW50ZXJhY3RzIHdpdGggQlBGIHByb2dyYW1zIGFuZCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGxldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyMzU9c3RhdGljIHU2NCByaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMzI0NC1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMyNDU6c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzI0Ni1cdFx0XHRcdFx0ICAgICAgIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMzODQ9c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODYte1xua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NzpcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg4LX1cbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMzkwPXN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzOTIte1xua2VybmVsL2JwZi9oYXNodGFiLmM6MzM5MzpcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCB0cnVlKTtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzOTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSW5zdHJ1bWVudGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGNhbGxzIHdpdGhpbiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLiBJbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBjb250cm9sbGluZyB0aGUgdHJhY2luZyBvciBwcm9maWxpbmcgb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIEJQRiBtYXAgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYm90aCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCB3aGljaCBhcmUgY29yZSBmdW5jdGlvbnMgZm9yIGJhdGNoIGxvb2t1cHMgaW4sIHByZXN1bWFibHksIGEgcmFkaXggaGFzaCB0YWJsZSAocmh0YWIpLiBNYWtlcyBzZW5zZSB0aGF0IGJhdGNoIG9wZXJhdGlvbnMgbWlnaHQgYmUgY2FuZGlkYXRlcyBmb3IgaW5zdHJ1bWVudGF0aW9uIGNvbnRyb2wg4oCTIHdlIHByb2JhYmx5IGRvbiYjMzk7dCB3YW50IHRvIGFsd2F5cyBiZSBwYXlpbmcgdGhlIGNvc3QuCgpCdXQsIEkgbmVlZCBtb3JlIGNvbnRleHQuIEkgZG9uJiMzOTt0IGtub3cgdGhlIGV4YWN0IHNlbWFudGljcyBvZiB0aG9zZSBpbnN0cnVtZW50YXRpb24gZnVuY3Rpb25zIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQsIHBhcnRpY3VsYXJseSB3aGVuIHRoZXkmIzM5O3JlIGludGVyYWN0aW5nIHdpdGggQlBGIG1hcHMuIExldCBtZSBkaWcgaW50byB0aGUgZGVmaW5pdGlvbnMgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlYWxseSBnb2luZyBvbiBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29udHJvbCB0aGUgQlBGIG1hcCYjMzk7cyBiZWhhdmlvdXIgaW4gdGhlc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTI2NjE9ZXh0ZXJuIHN0cnVjdCBtdXRleCBicGZfc3RhdHNfZW5hYmxlZF9tdXRleDtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI2NjgtICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI2Njk6c3RhdGljIGlubGluZSB2b2lkIGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbih2b2lkKVxuaW5jbHVkZS9saW51eC9icGYuaC0yNjcwLXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0xNzczPV9faHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0xODQ0LWFnYWluOlxua2VybmVsL2JwZi9oYXNodGFiLmM6MTg0NTpcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtMTg0Ni1cdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yOTQwPXN0YXRpYyBpbnQgcmh0YWJfZGVsZXRlX2VsZW0oc3RydWN0IGJwZl9yaHRhYiAqcmh0YWIsIHN0cnVjdCByaHRhYl9lbGVtICplbGVtLCB2b2lkICpjb3B5LFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI5NDctXHQgKiByaGFzaHRhYmxlIGxvY2tzIGJ1Y2tldCB3aXRoIGxvY2FsX2lycV9zYXZlKCkuIE9ubHkgTk1JIHByb2dyYW1zIG1heSByZWVudGVyXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyOTQ4Olx0ICogcmhhc2h0YWJsZSBjb2RlLCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKSBkaXNhYmxlcyBwcm9ncmFtcyBydW5uaW5nIGluIE5NSSwgZXhjZXB0XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yOTQ5LVx0ICogcmF3IHRyYWNlcG9pbnRzLCB3aGljaCB3ZSBkb24mIzM5O3QgaGF2ZSBpbiByaGFzaHRhYmxlLlxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1MC1cdCAqL1xua2VybmVsL2JwZi9oYXNodGFiLmM6Mjk1MTpcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1Mi1cbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDM0PXN0YXRpYyBsb25nIHJodGFiX21hcF91cGRhdGVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKnZhbHVlLCB1NjQgbWFwX2ZsYWdzKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMwNzMtXHQvKiBQcmV2ZW50IGRlYWRsb2NrIGZvciBOTUkgcHJvZ3JhbXMgYXR0ZW1wdGluZyB0byB0YWtlIGJ1Y2tldCBsb2NrICovXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMDc0Olx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMDc1LVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzMDEtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzAyOlx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzAzLVx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MT1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yNzAtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyNzE6XHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI3Mi1cdGlmIChtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1BFUkNQVV9IQVNIIHx8XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA5PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE4Olx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTktXHRpZiAobWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCB8fFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE4OTc9c3RhdGljIGludCBtYXBfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE5MzItXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxOTMzOlx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xOTM0LVx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTIwMDY9aW50IGdlbmVyaWNfbWFwX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIwNDQtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMDQ1Olx0XHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIwNDYtXHRcdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3NS1cdFx0aWYgKCFicGZfbWFwX2lzX29mZmxvYWRlZChtYXApKSB7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMjc2Olx0XHRcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Ny1cdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tLVxuc2FtcGxlcy9icGYvdHJhY2V4Ni5icGYuYz0yOT1pbnQgYnBmX3Byb2cxKHN0cnVjdCBwdF9yZWdzICpjdHgpXG4tLVxuc2FtcGxlcy9icGYvdHJhY2V4Ni5icGYuYy01MC0gKiBTaW5jZSAqX21hcF9sb29rdXBfZWxlbSBjYW4mIzM5O3QgYmUgZXhwZWN0ZWQgdG8gdHJpZ2dlciBicGYgcHJvZ3JhbXNcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmM6NTE6ICogZHVlIHRvIHBvdGVudGlhbCBkZWFkbG9ja3MgKGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbiksIHRoaXMgYnBmXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jLTUyLSAqIHByb2dyYW0gd2lsbCBiZSBhdHRhY2hlZCB0byBicGZfbWFwX2NvcHlfdmFsdWUgKHdoaWNoIGlzIGNhbGxlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBpbmNyZW1lbnRzIGEgcGVyLUNQVSBjb3VudGVyLCBzb21ldGhpbmcgbGlrZSBgYnBmX3Byb2dfYWN0aXZlYCwgYW5kIHRoYXQgdGhpcyBpcyBkZXNpZ25lZCB0byBzdG9wIEJQRiBwcm9ncmFtcyBmcm9tIHJ1bm5pbmcuIEl0JiMzOTtzIHVzZWQgdG8gcHJldmVudCBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHRpZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIEJQRiBtYXAgb3BlcmF0aW9ucy4gUmlnaHQsIGRlYWRsb2NrIHByZXZlbnRpb24uCgpXYWl0LCBpcyB0aGlzIGFjdHVhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0IGRvZXMgcHJldmVudCBkZWFkbG9ja3Mgd2hlbiB3ZSYjMzk7cmUgdHJhY2luZyBCUEYgbWFwIG9wZXJhdGlvbnMsIHNvIHllcywgaXQgKmlzKiBjaGFuZ2luZyBob3cgdGhlIHN5c3RlbSBiZWhhdmVzLiBOb3cgSSYjMzk7bSB0aGlua2luZywgZG9lcyB0aGlzIG5lY2Vzc2l0YXRlIGZ1enppbmc/CgpJdCYjMzk7cyB0ZW1wdGluZyB0byBkaXNtaXNzIGl0LiBJdCAqaXMqIGp1c3QgYSBkZWFkbG9jayBwcmV2ZW50aW9uIG1lY2hhbmlzbS4gSXQmIzM5O3Mgbm90IGFkZGluZyBuZXcgZmVhdHVyZXMgb3IgbG9naWMgdGhhdCBhIGZ1enplciB3b3VsZCB0eXBpY2FsbHkgbGF0Y2ggb250by4gQnV0IGhvbGQgb24uLi4gaWYgaXQmIzM5O3MgZml4aW5nIGEgZGVhZGxvY2ssIHRoYXQgKmlzKiBhIGJ1ZyBmaXguIFNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/CgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGRvZXMgdGhlIG9mZmljaWFsIGd1aWRhbmNlIHNheT8gQWgsIHJpZ2h0LiBJdCBzYXlzIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZSBwYXRjaCBvbmx5IGluY2x1ZGVzOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGNoYW5nZXMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIHRoYXQgZG9uJiMzOTt0IGNoYW5nZSBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuCgpUaGlzIGZ1bmN0aW9uICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCAqaXMqIHJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgQlBGIHByb2dyYW1zIGZyb20gcnVubmluZy4gSXQgKmRlZmluaXRlbHkqIGNoYW5nZXMgZXhlY3V0aW9uIGZsb3cuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGV2ZW4gaWYgaXQmIzM5O3MgZml4aW5nIGEgZGVhZGxvY2ssIGlzIHRoYXQgd29ydGggZnV6emluZz8gRnV6emluZyBtaWdodCBub3QgZmluZCBhbnl0aGluZyBuZXcsIHdoaWNoIGlzIGEgd2FzdGUgb2YgdGltZSwgYnV0IGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4KCk9rYXksIGxldCYjMzk7cyBzZWUuIE5lZWQgdG8gY2hlY2sgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbmAgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY2MDpcdERFQ0xBUkVfUEVSX0NQVShpbnQsIGJwZl9wcm9nX2FjdGl2ZSk7XG4yNjYxOlx0ZXh0ZXJuIHN0cnVjdCBtdXRleCBicGZfc3RhdHNfZW5hYmxlZF9tdXRleDtcbjI2NjI6XHRcbjI2NjM6XHQvKlxuMjY2NDpcdCAqIEJsb2NrIGV4ZWN1dGlvbiBvZiBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gaW5zdHJ1bWVudGF0aW9uIChwZXJmLFxuMjY2NTpcdCAqIGtwcm9iZXMsIHRyYWNlcG9pbnRzKSB0byBwcmV2ZW50IGRlYWRsb2NrcyBvbiBtYXAgb3BlcmF0aW9ucyBhcyBhbnkgb2ZcbjI2NjY6XHQgKiB0aGVzZSBldmVudHMgY2FuIGhhcHBlbiBpbnNpZGUgYSByZWdpb24gd2hpY2ggaG9sZHMgYSBtYXAgYnVja2V0IGxvY2tcbjI2Njc6XHQgKiBhbmQgY2FuIGRlYWRsb2NrIG9uIGl0LlxuMjY2ODpcdCAqL1xuMjY2OTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24odm9pZClcbjI2NzA6XHR7XG4yNjcxOlx0XHRtaWdyYXRlX2Rpc2FibGUoKTtcbjI2NzI6XHRcdHRoaXNfY3B1X2luYyhicGZfcHJvZ19hY3RpdmUpO1xuMjY3MzpcdH1cbjI2NzQ6XHRcbjI2NzU6XHRzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24odm9pZClcbjI2NzY6XHR7XG4yNjc3Olx0XHR0aGlzX2NwdV9kZWMoYnBmX3Byb2dfYWN0aXZlKTtcbjI2Nzg6XHRcdG1pZ3JhdGVfZW5hYmxlKCk7XG4yNjc5Olx0fVxuMjY4MDpcdFxuMjY4MTpcdGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBicGZfc3VwZXJfb3BzO1xuMjY4MjpcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9tYXBfZm9wcztcbjI2ODM6XHRleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBicGZfcHJvZ19mb3BzO1xuMjY4NDpcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9pdGVyX2ZvcHM7XG4yNjg1Olx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX3Rva2VuX2ZvcHM7XG4yNjg2Olx0XG4yNjg3Olx0I2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXG4yNjg4Olx0XHRleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyBfbmFtZSAjIyBfcHJvZ19vcHM7IFxcXG4yNjg5Olx0XHRleHRlcm4gY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgX25hbWUgIyMgX3ZlcmlmaWVyX29wcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQ0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEJQRiBNYXAgQmF0Y2ggT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBkaXNhYmxlcyBtaWdyYXRpb24gYW5kIGluY3JlbWVudHMgYGJwZl9wcm9nX2FjdGl2ZWAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgaXQgZG9lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyByb2J1c3QuCgpMZXQmIzM5O3MgZm9jdXMgdGhlIGZ1enppbmcgb24gc3BlY2lmaWMgc3ltYm9scy4gSSBuZWVkIHRvIHRhcmdldCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAsIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gV2FpdCBhIHNlY29uZOKApiBpc24mIzM5O3QgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBzdGF0aWM/IFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgc25hZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGJlZm9yZSBJIHB1dCB0b28gbXVjaCBlZmZvcnQgaW50byBmdXp6aW5nIGl0LiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0IHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkLCBhbmQgdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgdGltZSB0byBmdXp6IGl0LCBiZWZvcmUgd2UgaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzc1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLgoKKipJbnZlc3RpZ2F0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBVc2FnZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gV2hhdCYjMzk7cyB1cHN0cmVhbSBvZiBpdD8gV2hhdCYjMzk7cyBkb3duc3RyZWFtPyBXaGF0IHByb2Nlc3NlcyBhcmUgcmVseWluZyBvbiBpdHMgcmVzdWx0cz8gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgZ29hbCBoZXJlIGlzIGEgcXVpY2sgYnV0IHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIHVuZmFtaWxpYXIgY29kZSwgZXNwZWNpYWxseSB3aXRoIHN1Y2ggYSBwb3RlbnRpYWxseSBjZW50cmFsIGZ1bmN0aW9uIG5hbWUuIExldCYjMzk7cyBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzMzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQXNzZXNzaW5nIFRhc2sgQXNzaWdubWVudCBpbiBhIENvbXBsZXggU3lzdGVtKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgYXNzaWdubWVudC4gV2hlcmUgZXhhY3RseSBpcyB0aGlzIHRhc2ssIHRoaXMgb3BlcmF0aW9uLCBtYXBwZWQgd2l0aGluIHRoZSBzeXN0ZW0/IEkgY2FuJiMzOTt0IGp1c3QganVtcCBpbnRvIHNvbHV0aW9ucyB3aXRob3V0IGtub3dpbmcgdGhlIG9yaWdpbmF0aW5nIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlICYjMzQ7bWFwIG9wcywmIzM0OyBhcyBpbiwgdGhlIG9wZXJhdGlvbmFsIG1hcHBpbmcgb3IgdGhlIHRhc2sgYXNzaWdubWVudHMuIFVuZGVyc3RhbmRpbmcgdGhlIGFzc2lnbm1lbnQgc2NoZW1lIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRldGVybWluZSBhbnl0aGluZyBlbHNlLiBLbm93aW5nIHRoZSBvcmlnaW5hdGluZyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIG90aGVyd2lzZSBJIGNvdWxkIGJlIGFkZHJlc3NpbmcgdGhlIHdyb25nIGlzc3VlLCBvciBldmVuIG1ha2luZyB0aGUgc3lzdGVtIHdvcnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaHRhYl9tYXBfbG9va3VwX2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkJQRiBIYXNodGFibGUgTG9jYXRpb24gU2VhcmNoKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQgZ2V0cyBhc3NpZ25lZCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgYXNzaWdubWVudCBwcm9jZXNzIGlzIHR1Y2tlZCBhd2F5IHdpdGhpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGNvbnNpZGVyaW5nIHRoYXQgZmlsZSYjMzk7cyBzcGVjaWZpYyByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGhhc2h0YWJsZSBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBCUEYgc3Vic3lzdGVtLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gb3Igc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM4MDpcdFx0a3ZmcmVlKGRlbF9lbGVtcyk7XG4zMzgxOlx0XHRyZXR1cm4gcmV0O1xuMzM4MjpcdH1cbjMzODM6XHRcbjMzODQ6XHRzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG4zMzg1Olx0XHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4zMzg2Olx0e1xuMzM4NzpcdFx0cmV0dXJuIF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKG1hcCwgYXR0ciwgdWF0dHIsIGZhbHNlKTtcbjMzODg6XHR9XG4zMzg5Olx0XG4zMzkwOlx0c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG4zMzkxOlx0XHRcdFx0XHRcdCAgICAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcbjMzOTI6XHR7XG4zMzkzOlx0XHRyZXR1cm4gX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gobWFwLCBhdHRyLCB1YXR0ciwgdHJ1ZSk7XG4zMzk0Olx0fVxuMzM5NTpcdFxuMzM5NjpcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8ge1xuMzM5NzpcdFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcbjMzOTg6XHRcdHN0cnVjdCBicGZfcmh0YWIgKnJodGFiO1xuMzM5OTpcdFx0c3RydWN0IHJoYXNodGFibGVfaXRlciBpdGVyO1xuMzQwMDpcdH07XG4zNDAxOlx0XG4zNDAyOlx0c3RhdGljIHZvaWQgKmJwZl9yaGFzaF9tYXBfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbjM0MDM6XHRcdF9fYWNxdWlyZXMoUkNVKVxuMzQwNDpcdHtcbjM0MDU6XHRcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjM0MDY6XHRcdHN0cnVjdCByaHRhYl9lbGVtICplbGVtO1xuMzQwNzpcdFxuMzQwODpcdFx0cmhhc2h0YWJsZV93YWxrX3N0YXJ0KFx1MDAyNmluZm8tXHUwMDNlaXRlcik7XG4zNDA5Olx0XHQvKlxuMzQxMDpcdFx0ICogUmUtZGVsaXZlciB0aGUgZWxlbWVudCByZXR1cm5lZCBieSB3YWxrX25leHQoKSBhdCB0aGUgZW5kIG9mIHRoZVxuMzQxMTpcdFx0ICogcHJldmlvdXMgcmVhZCgpIOKAlCBicGZfc2VxX3JlYWQgbWF5IGhhdmUgc3RvcHBlZCBiZWZvcmUgc2hvdygpXG4zNDEyOlx0XHQgKiBjb25zdW1lZCBpdC4gUmVoYXNoIHJld2luZHMgdGhlIHdhbGtlcjsgcmV0cnkgb24gLUVBR0FJTi5cbjM0MTM6XHRcdCAqL1xuMzQxNDpcdFx0ZG8ge1xuMzQxNTpcdFx0XHRlbGVtID0gcmhhc2h0YWJsZV93YWxrX3BlZWsoXHUwMDI2aW5mby1cdTAwM2VpdGVyKTtcbjM0MTY6XHRcdH0gd2hpbGUgKFBUUl9FUlIoZWxlbSkgPT0gLUVBR0FJTik7XG4zNDE3Olx0XG4zNDE4Olx0XHRpZiAoSVNfRVJSKGVsZW0pKVxuMzQxOTpcdFx0XHRyZXR1cm4gTlVMTDtcbjM0MjA6XHRcbjM0MjE6XHRcdGlmIChlbGVtIFx1MDAyNlx1MDAyNiAqcG9zID09IDApXG4zNDIyOlx0XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzQyMzpcdFx0cmV0dXJuIGVsZW07XG4zNDI0Olx0fVxuMzQyNTpcdFxuMzQyNjpcdHN0YXRpYyB2b2lkICpicGZfcmhhc2hfbWFwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbjM0Mjc6XHR7XG4zNDI4Olx0XHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvICppbmZvID0gc2VxLVx1MDAzZXByaXZhdGU7XG4zNDI5Olx0XHRzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbTtcbjM0MzA6XHRcbjM0MzE6XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzQzMjpcdFxuMzQzMzpcdFx0LyogUmVoYXNoIHJld2luZHMgdGhlIHdhbGtlcjsgcmV0cnkgdW50aWwgaXQgc3RvcHMgcmV0dXJuaW5nIC1FQUdBSU4uICovXG4zNDM0Olx0XHRkbyB7XG4zNDM1Olx0XHRcdGVsZW0gPSByaGFzaHRhYmxlX3dhbGtfbmV4dChcdTAwMjZpbmZvLVx1MDAzZWl0ZXIpO1xuMzQzNjpcdFx0fSB3aGlsZSAoUFRSX0VSUihlbGVtKSA9PSAtRUFHQUlOKTtcbjM0Mzc6XHRcbjM0Mzg6XHRcdGlmIChJU19FUlIoZWxlbSkpXG4zNDM5Olx0XHRcdHJldHVybiBOVUxMO1xuMzQ0MDpcdFx0cmV0dXJuIGVsZW07XG4zNDQxOlx0fVxuMzQ0MjpcdFxuMzQ0MzpcdHN0YXRpYyBpbnQgX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuMzQ0NDpcdFx0XHRcdFx0ICAgIHN0cnVjdCByaHRhYl9lbGVtICplbGVtKVxuMzQ0NTpcdHtcbjM0NDY6XHRcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjM0NDc6XHRcdHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtIGN0eCA9IHt9O1xuMzQ0ODpcdFx0c3RydWN0IGJwZl9pdGVyX21ldGEgbWV0YTtcbjM0NDk6XHRcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbjM0NTA6XHRcdGludCByZXQgPSAwO1xuMzQ1MTpcdFxuMzQ1MjpcdFx0bWV0YS5zZXEgPSBzZXE7XG4zNDUzOlx0XHRwcm9nID0gYnBmX2l0ZXJfZ2V0X2luZm8oXHUwMDI2bWV0YSwgZWxlbSA9PSBOVUxMKTtcbjM0NTQ6XHRcdGlmIChwcm9nKSB7XG4zNDU1Olx0XHRcdGN0eC5tZXRhID0gXHUwMDI2bWV0YTtcbjM0NTY6XHRcdFx0Y3R4Lm1hcCA9IGluZm8tXHUwMDNlbWFwO1xuMzQ1NzpcdFx0XHRpZiAoZWxlbSkge1xuMzQ1ODpcdFx0XHRcdGN0eC5rZXkgPSBlbGVtLVx1MDAzZWRhdGE7XG4zNDU5Olx0XHRcdFx0Y3R4LnZhbHVlID0gcmh0YWJfZWxlbV92YWx1ZShlbGVtLCBpbmZvLVx1MDAzZW1hcC1cdTAwM2VrZXlfc2l6ZSk7XG4zNDYwOlx0XHRcdH1cbjM0NjE6XHRcdFx0cmV0ID0gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXHUwMDI2Y3R4KTtcbjM0NjI6XHRcdH1cbjM0NjM6XHRcbjM0NjQ6XHRcdHJldHVybiByZXQ7XG4zNDY1Olx0fVxuMzQ2NjpcdFxuMzQ2NzpcdHN0YXRpYyBpbnQgYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbjM0Njg6XHR7XG4zNDY5Olx0XHRyZXR1cm4gX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHNlcSwgdik7XG4zNDcwOlx0fVxuMzQ3MTpcdFxuMzQ3MjpcdHN0YXRpYyB2b2lkIGJwZl9yaGFzaF9tYXBfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4zNDczOlx0XHRfX3JlbGVhc2VzKFJDVSlcbjM0NzQ6XHR7XG4zNDc1Olx0XHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvICppbmZvID0gc2VxLVx1MDAzZXByaXZhdGU7XG4zNDc2Olx0XG4zNDc3Olx0XHRpZiAoIXYpXG4zNDc4Olx0XHRcdCh2b2lkKV9fYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzZXEsIE5VTEwpO1xuMzQ3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzg1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBiZWluZyB1c2VkIGFuZCB3aGVyZSBpdCYjMzk7cyBnZXR0aW5nIGl0cyB2YWx1ZXMgZnJvbS4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCwgb2YgY291cnNlLCBpcyB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICphc3NpZ25lZCogb3IgZGVmaW5lZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgZm9yIGl0cyBhcHBsaWNhdGlvbiwgYW5kIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCB0aGUgZmxvdyBvZiBkYXRhIGludG8gaXQuIEtub3dpbmcgaXRzIGFzc2lnbmVyIGlzIHRoZSBrZXkgdG8gYWxsIG9mIHRoaXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9sb29rdXBfYmF0Y2guKnJodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBzdWJqZWN0LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkluc3BlY3RpbmcgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgKioKClJpZ2h0LCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSBhIGZldyB0aGluZ3MuICYjMzQ7QmF0Y2gmIzM0OyBzdWdnZXN0cyBhbiBvcHRpbWl6YXRpb24gZm9yIGhhbmRsaW5nIG11bHRpcGxlIGxvb2t1cHMgc2ltdWx0YW5lb3VzbHksIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UgZ2FpbnMgYnkgcmVkdWNpbmcgb3ZlcmhlYWQuICYjMzQ7TWFwJiMzNDsgaGludHMgYXQgYSBrZXktdmFsdWUgZGF0YSBzdHJ1Y3R1cmUsIHByb2JhYmx5IGEgaGFzaCBtYXAgb3Igc2ltaWxhci4gJiMzNDtSSHRhYiYjMzQ7IGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBzcGVjaWZpYywgYnV0IEkmIzM5O2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlIGl0IHJlcHJlc2VudHMuIEtub3dpbmcgdGhlIHByZWNpc2UgZGF0YSBzdHJ1Y3R1cmUgZm9ybWF0IGlzIGtleSBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gdGhhdCBJIGNhbiB0aGVuIGluZmVyIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGFsZ29yaXRobSBiZWluZyBkZXBsb3llZC4gSXMgaXQgbG9jay1mcmVlLCBjb25jdXJyZW50LXNhZmU/IFRoZSBkZXNpZ24gaGVyZSBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB1bmRlciBoaWdoIGxvYWQgYW5kIG11bHRpLXRocmVhZGVkIGFjY2Vzcy4gV2hhdCYjMzk7cyB0aGUgdHJhZGUtb2ZmIGluIHNwYWNlIHZlcnN1cyBzcGVlZD8gQXJlIHdlIG9wdGltaXppbmcgZm9yIG1lbW9yeSBsb2NhbGl0eT8gQXJlIHRoZXJlIHBvdGVudGlhbCBjYWNoZSBjb2hlcmVuY2UgaXNzdWVzPyBBcmUgdGhlcmUgZGlmZmVyZW50IGxvb2t1cCBzdHJhdGVnaWVzIGZvciBkaWZmZXJlbnQga2V5cz8gTGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlIGl0c2VsZiBhbmQvb3IgdGhlIGRvY3VtZW50YXRpb24gdG8gY2xhcmlmeSB0aGVzZSBwb2ludHMuIEkmIzM5O20gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGJhdGNoIG9wZXJhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5LiBXaGF0IGlzIHRoZSBiYXRjaGluZyBzdHJhdGVneT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGFueSBlZGdlIGNhc2VzLCBsaWtlIGVtcHR5IGJhdGNoZXMsIGFuZCB3aGF0IGhhcHBlbnMgd2hlbiBrZXlzIGFyZW4mIzM5O3QgZm91bmQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gd2l0aGluIHRoaXMgZnVuY3Rpb24sIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIGEgbGFyZ2UgbnVtYmVyIG9mIGVsZW1lbnRzIGF0IG9uY2UuIEkgd2FudCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaHRhYl9tYXBfbG9va3VwX2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MjcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlVuYXNzaWduZWQgQlBGIERhdGEgU3RydWN0dXJlIC0gV2hlcmUmIzM5O3MgdGhlIExpbms/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgdGhpcyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0JiMzOTtzIG5vdCBiZWluZyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvIGFueSBwYXJ0aWN1bGFyIEJQRiBwcm9ncmFtIG9yIGNvbnRleHQuIFRoYXQgcmFpc2VzIGEgcmVkIGZsYWcuIEJlZm9yZSBqdW1waW5nIHRvIGNvbmNsdXNpb25zIGFib3V0IGxlYWtzIG9yIGRhbmdsaW5nIHJlZmVyZW5jZXMsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCB0aGUgaW50ZW5kZWQgbGlua2luZyBpc24mIzM5O3QgaGFwcGVuaW5nIHNvbWV3aGVyZSBvYnNjdXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgKmVuZCogb2YgYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiBpbiB0aGUga2VybmVsIGZvciBsaW5raW5nIHRvIGhhcHBlbiBlaXRoZXIgaW5saW5lIGF0IHRoZSBwb2ludCBvZiBhbGxvY2F0aW9uIG9yLCBvY2Nhc2lvbmFsbHksIGp1c3QgYmVmb3JlIGBtb2R1bGVfZXhpdGAgb3IgYXQgdGhlIHRhaWwgZW5kIG9mIHRoZSByZWxldmFudCBmaWxlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgaGVscGVyIGZ1bmN0aW9uIG9yIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgdGhhdCBJIGFtIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipQb3RlbnRpYWwgUmVkdW5kYW5jeSBEZXRlY3RlZDogVW51c2VkIEZ1bmN0aW9uPyoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJJiMzOTttIHNlZWluZyBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgZGVmaW5lZCwgYnV0IGlzIGl0IGFjdHVhbGx5IGJlaW5nICp1c2VkKiBhbnl3aGVyZT8gVGhhdCYjMzk7cyBhIGNsYXNzaWMgY29kZSBzbWVsbCDigJMgcG90ZW50aWFsbHkgZGVhZCBjb2RlLCBhIGxlZnRvdmVyIGZyb20gYW4gZWFybGllciBpdGVyYXRpb24sIG9yIG1heWJlIGp1c3QgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBpbnRlbmRlZCB1c2FnZSB3YXMgbmV2ZXIgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMsIHRob3VnaC4KCkZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBgcmh0YWJfbWFwX29wc2AuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBtZWFudCB0byBiZSBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoYXQgc3RydWN0LiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFuIG9wZXJhdGlvbiBkaXNwYXRjaCBvciBzb21ldGhpbmcgc2ltaWxhciB1c2luZyB0aGlzIGZ1bmN0aW9uIHBvaW50ZXIuIElmIGl0JiMzOTtzIHRoZXJlIGFuZCBuZXZlciBjYWxsZWQsIHRoZW4gd2UgbWF5IGhhdmUgYW4gaXNzdWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyOTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpdmluZyBpbnRvIGByaHRhYl9tYXBfb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuICYjMzQ7TGV0JiMzOTtzIHJlYWQgYHJodGFiX21hcF9vcHNgLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGNvcmUgZm9jdXMgcmlnaHQgbm93LiBXaGF0JiMzOTtzIHRoZSBnb2FsPyBUbyB1bmRlcnN0YW5kIGl0LCBvZiBjb3Vyc2UuIFRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFwIGFsbCB0aGUgdmFyaWFibGVzLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gaW4gbXkgaGVhZCwgYW5kIEkmIzM5O20gc3VyZSBJJiMzOTtsbCBwcm9iYWJseSBiZSBtYWtpbmcgYSBtZW50YWwgbW9kZWwgYXMgSSBnby4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBub3ZlbCBhcHByb2FjaGVzLCBvcHRpbWl6YXRpb25zLCBwb3RlbnRpYWwgcGl0ZmFsbHMuIEFyZSB0aGVyZSBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVnaWVzPyBXaGF0IGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBIb3cgcm9idXN0IGlzIHRoZSBlcnJvciBoYW5kbGluZz8gTW9yZSBpbXBvcnRhbnRseSwgY2FuIEkgc2VlIHRoZSBwb3RlbnRpYWwgYm90dGxlbmVjaz8gVGhpcyBsaWtlbHkgaXNuJiMzOTt0IGEgc2ltcGxlIHJlYWQuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWV0aGluZyBudWFuY2VkLCBzb21ldGhpbmcgdGhhdCBoYXMgbGlrZWx5IGJlZW4gb3B0aW1pemVkIGZvciBwZXJmb3JtYW5jZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW4uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTE1Olx0fTtcbjM1MTY6XHRcbjM1MTc6XHRCVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxuMzUxODpcdGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xuMzUxOTpcdFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuMzUyMDpcdFx0Lm1hcF9hbGxvY19jaGVjayA9IHJodGFiX21hcF9hbGxvY19jaGVjayxcbjM1MjE6XHRcdC5tYXBfYWxsb2MgPSByaHRhYl9tYXBfYWxsb2MsXG4zNTIyOlx0XHQubWFwX2ZyZWUgPSByaHRhYl9tYXBfZnJlZSxcbjM1MjM6XHRcdC5tYXBfZ2V0X25leHRfa2V5ID0gcmh0YWJfbWFwX2dldF9uZXh0X2tleSxcbjM1MjQ6XHRcdC5tYXBfcmVsZWFzZV91cmVmID0gcmh0YWJfbWFwX2ZyZWVfaW50ZXJuYWxfc3RydWN0cyxcbjM1MjU6XHRcdC5tYXBfY2hlY2tfYnRmID0gcmh0YWJfbWFwX2NoZWNrX2J0ZixcbjM1MjY6XHRcdC5tYXBfbG9va3VwX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2VsZW0sXG4zNTI3Olx0XHQubWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfZWxlbSxcbjM1Mjg6XHRcdC5tYXBfdXBkYXRlX2VsZW0gPSByaHRhYl9tYXBfdXBkYXRlX2VsZW0sXG4zNTI5Olx0XHQubWFwX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2RlbGV0ZV9lbGVtLFxuMzUzMDpcdFx0Lm1hcF9nZW5fbG9va3VwID0gcmh0YWJfbWFwX2dlbl9sb29rdXAsXG4zNTMxOlx0XHQubWFwX3NlcV9zaG93X2VsZW0gPSByaHRhYl9tYXBfc2VxX3Nob3dfZWxlbSxcbjM1MzI6XHRcdC5tYXBfc2V0X2Zvcl9lYWNoX2NhbGxiYWNrX2FyZ3MgPSBtYXBfc2V0X2Zvcl9lYWNoX2NhbGxiYWNrX2FyZ3MsXG4zNTMzOlx0XHQubWFwX2Zvcl9lYWNoX2NhbGxiYWNrID0gYnBmX2VhY2hfcmhhc2hfZWxlbSxcbjM1MzQ6XHRcdC5tYXBfbWVtX3VzYWdlID0gcmh0YWJfbWFwX21lbV91c2FnZSxcbjM1MzU6XHRcdEJBVENIX09QUyhyaHRhYiksXG4zNTM2Olx0XHQubWFwX2J0Zl9pZCA9IFx1MDAyNnJodGFiX21hcF9idGZfaWRzWzBdLFxuMzUzNzpcdFx0Lml0ZXJfc2VxX2luZm8gPSBcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxuMzUzODpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTY3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgYEJBVENIX09QU2AgTGFuZHNjYXBlKioKClJpZ2h0LCBgQkFUQ0hfT1BTKHJodGFiKWAuLi4gdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgQkFUQ0hfT1BTYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdXAgdG8gc3BlZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBwZWVrIGF0IGl0cyBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCB0aGUgbW9zdCByZWNlbnQgY2hhbmdlcyBhcmUuIEhvcGVmdWxseSBpdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBCQVRDSF9PUFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYy0yNS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI2OiNkZWZpbmUgQkFUQ0hfT1BTKF9uYW1lKVx0XHRcdFxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNy1cdC5tYXBfbG9va3VwX2JhdGNoID1cdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQxOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gcmh0YWJfbWFwX29wcyoqCgpSaWdodCwgc28gSSBzZWUgdGhlc2UgZnVuY3Rpb25zLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBiZWluZyB1c2VkLiBIbW0sIHRoZXkmIzM5O3JlIGNsZWFybHkgcGFydCBvZiB0aGUgYHJodGFiX21hcF9vcHNgIHN0cnVjdHVyZSBvciBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBXaGF0IGV4YWN0bHkgKmlzKiBgcmh0YWJfbWFwX29wc2AgZGVzaWduZWQgZm9yPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBJcyBpdCBzb21lIHNvcnQgb2YgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgaGFzaCB0YWJsZSwgYSBrZXktdmFsdWUgc3RvcmUsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgZmFjdCB0aGF0IGJhdGNoIG9wZXJhdGlvbnMgYXJlIHByZXNlbnQgc3VnZ2VzdHMgYSBkZXNpZ24gcHJpb3JpdGl6aW5nIGVmZmljaWVuY3kgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIGxvb2t1cHMgb3IgZGVsZXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2UgY2FzZSBvZiBgcmh0YWJfbWFwX29wc2Agd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2Ugc3BlY2lmaWMgYmF0Y2ggZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gd29yayB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIGEgZGVmaW5pdGlvbiBvciBleGFtcGxlcyBvZiBob3cgYHJodGFiX21hcF9vcHNgIGlzIHVzZWQgZWxzZXdoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmh0YWJfbWFwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTM1MTc9QlRGX0lEX0xJU1RfU0lOR0xFKHJodGFiX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9yaHRhYilcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zNTE5LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFja2luZyBEb3duIGEgRnVuY3Rpb24gQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJodGFiX21hcF9vcHNgLi4uIEkga25vdyBpdCYjMzk7cyBwcm9iYWJseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgZ2V0dGluZyB1c2VkLiBLbm93aW5nIGl0cyBsb2NhdGlvbiBpcyB0aGUgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaC4gTGV0JiMzOTtzIHNlZS4uLiB3aGVyZSBkb2VzIHRoZSBjb2RlICphY3R1YWxseSogaW52b2tlIGByaHRhYl9tYXBfb3BzYD8gSSBuZWVkIHRvIGZpbmQgdGhlIHJlZmVyZW5jZXMgdG8gaXQgYmVmb3JlIEkgY2FuIGZpZ3VyZSBvdXQgaXRzIHNpZ25pZmljYW5jZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzdGFydCBzZWFyY2hpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMzY9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLCBpbnNuX2FycmF5X21hcF9vcHMpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMzgtXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUxODpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MTktXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjc4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IEJQRiBSSEFTSCBCYXRjaCBPcGVyYXRpb25zKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIGBCUEZfTUFQX1RZUEVfUkhBU0hgLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBpdHMgYmF0Y2ggbG9va3VwIGFuZCBkZWxldGUgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHksIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBiZWhhdmUsIHNvIHRoYXQmIzM5O3MgYSBkZWZpbml0ZSB5ZXMuCgpUaGUgY29yZSBmb2N1cyBmb3IgbWUgaGVyZSBpcyB0aGUgZnVuY3Rpb24gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQuIEhtbSwgYnV0IGl0JiMzOTtzIG1hcmtlZCBhcyBgc3RhdGljYC4gQ2FuIHN5emthbGxlciBldmVuIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgdGhhdCBpcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyBpdCYjMzk7cyB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZS4KCkhvd2V2ZXIsIEkmIzM5O20gbm93IHNlY29uZC1ndWVzc2luZyBteXNlbGYgYSBiaXQuIFdvdWxkIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIHByb3ZpZGluZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludD8gSSYjMzk7bGwgc3RpY2sgd2l0aCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGZvciBub3cuCgpCZWZvcmUgZGl2aW5nIGRlZXBlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBhbnkgQlBGLXJlbGF0ZWQgd29yaywgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBCUEZfTUFQX1RZUEVfUkhBU0hgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZW1hbmQgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gZWxpbWluYXRlIGFueSBkZXBlbmRlbmN5IGlzc3VlcyBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX01BUF9UWVBFX1JIQVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTM2PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfSU5TTl9BUlJBWSwgaW5zbl9hcnJheV9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDoxMzc6QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9SSEFTSCwgcmh0YWJfbWFwX29wcylcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDAwPWVudW0gYnBmX21hcF90eXBlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA0OS1cdEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwNTA6XHRCUEZfTUFQX1RZUEVfUkhBU0gsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA1MS1cdF9fTUFYX0JQRl9NQVBfVFlQRVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1Ny1cdFx0ICpcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxNTU4Olx0XHQgKiBCUEZfTUFQX1RZUEVfUkhBU0ggLSBpbml0aWFsIHRhYmxlIHNpemUgaGludFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE1NTktXHRcdCAqIChuZWxlbV9oaW50KS4gMCA9IHVzZSByaGFzaHRhYmxlIGRlZmF1bHQuIE11c3QgYmVcbi0tXG5rZXJuZWwvYnBmL21hcF9pdGVyLmM9MTAwPXN0YXRpYyBpbnQgYnBmX2l0ZXJfYXR0YWNoX21hcChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jLTEyNi1cdFx0IG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQVJSQVkgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL21hcF9pdGVyLmM6MTI3Olx0XHQgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSClcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xMjgtXHRcdGdvdG8gcHV0X21hcDtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQ0PXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjg4LVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyODk6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyOTAtXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUlJBWSBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzAzLVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMDQ6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEzMDUtXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9MUlVfSEFTSCBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzE1LVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMTY6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEzMTctXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcxPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwOS1cdCAgICBhdHRyLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUkVOQSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MTA6XHQgICAgYXR0ci1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDExLVx0ICAgIGF0dHItXHUwMDNlbWFwX2V4dHJhICE9IDApIHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgxLVx0Y2FzZSBCUEZfTUFQX1RZUEVfSEFTSDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0ODI6XHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0ODMtXHRjYXNlIEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSDpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Mi1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9MUlVfUEVSQ1BVX0hBU0ggfHxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIyNzM6XHRcdCAgIG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0ggfHxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIyNzQtXHRcdCAgIG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU1RBQ0tfVFJBQ0UpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3NDY9c3RhdGljIGludCBjaGVja19tYXBfcHJvZ19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkyLVx0XHRjYXNlIEJQRl9NQVBfVFlQRV9IQVNIOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzkzOlx0XHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NC1cdFx0Y2FzZSBCUEZfTUFQX1RZUEVfTFJVX0hBU0g6XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwMDA9ZW51bSBicGZfbWFwX3R5cGUge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDQ5LVx0QlBGX01BUF9UWVBFX0lOU05fQVJSQVksXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA1MDpcdEJQRl9NQVBfVFlQRV9SSEFTSCxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDUxLVx0X19NQVhfQlBGX01BUF9UWVBFXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU3LVx0XHQgKlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE1NTg6XHRcdCAqIEJQRl9NQVBfVFlQRV9SSEFTSCAtIGluaXRpYWwgdGFibGUgc2l6ZSBoaW50XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1OS1cdFx0ICogKG5lbGVtX2hpbnQpLiAwID0gdXNlIHJoYXNodGFibGUgZGVmYXVsdC4gTXVzdCBiZVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTYzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWFwX3R5cGVfbmFtZVtdID0ge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTk4LVx0W0JQRl9NQVBfVFlQRV9JTlNOX0FSUkFZXVx0XHQ9IFwmIzM0O2luc25fYXJyYXlcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjE5OTpcdFtCUEZfTUFQX1RZUEVfUkhBU0hdXHRcdFx0PSBcJiMzNDtyaGFzaFwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjAwLX07XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MjkyPXN0YXRpYyBpbnQgcHJvYmVfbWFwX2NyZWF0ZShlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYy0zMTEtXHRcdGJyZWFrO1xudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM6MzEyOlx0Y2FzZSBCUEZfTUFQX1RZUEVfUkhBU0g6XG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYy0zMTMtXHRcdG9wdHMubWFwX2ZsYWdzXHQ9IEJQRl9GX05PX1BSRUFMTE9DO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYz0zNz1zdGF0aWMgdm9pZCBoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYy01MC1cdGJwZl9tYXBfX3NldF90eXBlKGN0eC5za2VsLVx1MDAzZW1hcHMuaGFzaF9tYXBfYmVuY2gsIG1hcF90eXBlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYzo1MTpcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtNTItXHRcdGJwZl9tYXBfX3NldF9tYXBfZmxhZ3MoY3R4LnNrZWwtXHUwMDNlbWFwcy5oYXNoX21hcF9iZW5jaCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM9ODA9c3RhdGljIHZvaWQgcmhhc2hfc2V0dXAodm9pZClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYy04MS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM6ODI6XHRoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtODMtfVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MTUxPXN0YXRpYyB2b2lkIGhhc2htYXBfbG9va3VwX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMTY3LVx0bWFwX2ZsYWdzID0gYXJncy5tYXBfZmxhZ3M7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjE2ODpcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTE2OS1cdFx0bWFwX2ZsYWdzIHw9IEJQRl9GX05PX1BSRUFMTE9DO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MjExPXN0YXRpYyB2b2lkIHJoYXNoX3NldHVwKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTIxMi17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjIxMzpcdGhhc2htYXBfbG9va3VwX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTIxNC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jPTE1NT1zdGF0aWMgdm9pZCBodGFiX21lbV9zZXR1cF9pbXBsKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYy0xODQtXHRicGZfbWFwX19zZXRfbWF4X2VudHJpZXMobWFwLCBNQVgoODE5MiwgNjQgKiBlbnYubnJfY3B1cykpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jOjE4NTpcdGlmIChtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXHUwMDI2XHUwMDI2IGFyZ3MucHJlYWxsb2NhdGVkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jLTE4Ni1cdFx0YnBmX21hcF9fc2V0X21hcF9mbGFncyhtYXAsIGJwZl9tYXBfX21hcF9mbGFncyhtYXApIFx1MDAyNiB+QlBGX0ZfTk9fUFJFQUxMT0MpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYz0yMjk9c3RhdGljIHZvaWQgcmh0YWJfbWVtX3NldHVwKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMwLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYzoyMzE6XHRodGFiX21lbV9zZXR1cF9pbXBsKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMyLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jPTQ2PXN0YXRpYyBpbnQgcmhhc2hfbWFwX2NyZWF0ZShfX3UzMiBtYXhfZW50cmllcywgX191NjQgbWFwX2V4dHJhKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmMtNTEtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jOjUyOlx0cmV0dXJuIGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9SSEFTSCwgXCYjMzQ7cmhhc2hfZXh0cmFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUzLVx0XHRcdCAgICAgIHNpemVvZihfX3UzMiksIHNpemVvZihfX3U2NCksIG1heF9lbnRyaWVzLCBcdTAwMjZvcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jPTg9c3RydWN0IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl9icGZfcmhhc2hfbWFwLmM6OTpcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUkhBU0gpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX2JwZl9yaGFzaF9tYXAuYy0xMC1cdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX05PX1BSRUFMTE9DKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvcmhhc2guYz0yMj1zdHJ1Y3Qge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JoYXNoLmM6MjM6XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1JIQVNIKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jLTI0LVx0X191aW50KG1hcF9mbGFncywgQlBGX0ZfTk9fUFJFQUxMT0MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjIxNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYEJQRl9NQVBfVFlQRV9SSEFTSGAgTWFwIFR5cGUqKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYEJQRl9NQVBfVFlQRV9SSEFTSGAgaGVyZS4gUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXQmIzM5O3MganVzdCB0aGF0IG1hcCB0eXBlIGl0c2VsZi4gU2VlbXMgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBzaG91bGQgYmUgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgSSBuZWVkIHRvIHdvcnJ5IGFib3V0LiBCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIHRoaW5rIEkgcmVtZW1iZXIgYEJQRl9NQVBfVFlQRV9SSEFTSGAgYmVpbmcgYSBuZXdlciBhZGRpdGlvbiwgb3IgcGVyaGFwcyBpdCYjMzk7cyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSBzaG91bGQgcmVhbGx5IHZlcmlmeSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGVuYWJsZSBvciByZWxhdGUgdG8gdGhpcyBwYXJ0aWN1bGFyIG1hcCB0eXBlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9NQVBfVFlQRV9SSEFTSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTMzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQlBGIEhhc2h0YWJsZSBEaXZlKioKCkFscmlnaHQsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIHVzZSBvZiBgcmh0YWJfbWFwX29wc2Agd2l0aGluIHRoZSBCUEYgaGFzaHRhYmxlIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyDigJMgeW91IGtub3csIHRob3NlIHBlc2t5IGAjaWZkZWZgIHN0YXRlbWVudHMuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBibG9ja3Mgb2YgY29kZSB0aGF0IG1pZ2h0IGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGJhc2VkIG9uIHNvbWUgYnVpbGQtdGltZSBmbGFnIHJlbGF0ZWQgdG8gYHJodGFiX21hcF9vcHNgLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY29uZGl0aW9uYWxseSBlbmFibGVkLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgaXMgcHJvYmFibHkgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgYWN0aXZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCAtIExpbmUgMzUxOCoqCgpBbHJpZ2h0LCBteSBicmFpbiBpcyBzYXlpbmcsICYjMzQ7VGltZSB0byBmb2N1cy4mIzM0OyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDM1MTggaW4gdGhlIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGxpbmUgY29udGFpbnMgc29tZXRoaW5nIHNpZ25pZmljYW50IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBjcml0aWNhbCBqdW5jdHVyZSBpbiB0aGUgYWxnb3JpdGhtIG9yIGRhdGEgc3RydWN0dXJlIG1hbmFnZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGFyb3VuZCB0aGF0IHBvaW50LiBUaGlzIGNvdWxkIGJlIHdoZXJlIHdlJiMzOTtyZSBleHBlcmllbmNpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBhIHBvdGVudGlhbCBidWcsIGEgY3JpdGljYWwgZGF0YSBsb29rdXAsIG9yIG1heWJlIGp1c3Qgc29tZSBpbnRlcmVzdGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSYjMzk7dmUgYmVlbiBtZWFuaW5nIHRvIGV4YW1pbmUuIExldCBtZSBnbyBmaW5kIHRoYXQgbGluZSBhbmQgZ2V0IHRvIHRoZSBib3R0b20gb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBqb3VybmV5IGJlZ2lucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzUwMDpcdFx0YnBmX21hcF9wdXRfd2l0aF91cmVmKGluZm8tXHUwMDNlbWFwKTtcbjM1MDE6XHR9XG4zNTAyOlx0XG4zNTAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBicGZfcmhhc2hfbWFwX3NlcV9vcHMgPSB7XG4zNTA0Olx0XHQuc3RhcnQgPSBicGZfcmhhc2hfbWFwX3NlcV9zdGFydCxcbjM1MDU6XHRcdC5uZXh0ID0gYnBmX3JoYXNoX21hcF9zZXFfbmV4dCxcbjM1MDY6XHRcdC5zdG9wID0gYnBmX3JoYXNoX21hcF9zZXFfc3RvcCxcbjM1MDc6XHRcdC5zaG93ID0gYnBmX3JoYXNoX21hcF9zZXFfc2hvdyxcbjM1MDg6XHR9O1xuMzUwOTpcdFxuMzUxMDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2l0ZXJfc2VxX2luZm8gcmhhc2hfaXRlcl9zZXFfaW5mbyA9IHtcbjM1MTE6XHRcdC5zZXFfb3BzID0gXHUwMDI2YnBmX3JoYXNoX21hcF9zZXFfb3BzLFxuMzUxMjpcdFx0LmluaXRfc2VxX3ByaXZhdGUgPSBicGZfaXRlcl9pbml0X3JoYXNoX21hcCxcbjM1MTM6XHRcdC5maW5pX3NlcV9wcml2YXRlID0gYnBmX2l0ZXJfZmluaV9yaGFzaF9tYXAsXG4zNTE0Olx0XHQuc2VxX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvKSxcbjM1MTU6XHR9O1xuMzUxNjpcdFxuMzUxNzpcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG4zNTE4Olx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XG4zNTE5Olx0XHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4zNTIwOlx0XHQubWFwX2FsbG9jX2NoZWNrID0gcmh0YWJfbWFwX2FsbG9jX2NoZWNrLFxuMzUyMTpcdFx0Lm1hcF9hbGxvYyA9IHJodGFiX21hcF9hbGxvYyxcbjM1MjI6XHRcdC5tYXBfZnJlZSA9IHJodGFiX21hcF9mcmVlLFxuMzUyMzpcdFx0Lm1hcF9nZXRfbmV4dF9rZXkgPSByaHRhYl9tYXBfZ2V0X25leHRfa2V5LFxuMzUyNDpcdFx0Lm1hcF9yZWxlYXNlX3VyZWYgPSByaHRhYl9tYXBfZnJlZV9pbnRlcm5hbF9zdHJ1Y3RzLFxuMzUyNTpcdFx0Lm1hcF9jaGVja19idGYgPSByaHRhYl9tYXBfY2hlY2tfYnRmLFxuMzUyNjpcdFx0Lm1hcF9sb29rdXBfZWxlbSA9IHJodGFiX21hcF9sb29rdXBfZWxlbSxcbjM1Mjc6XHRcdC5tYXBfbG9va3VwX2FuZF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtLFxuMzUyODpcdFx0Lm1hcF91cGRhdGVfZWxlbSA9IHJodGFiX21hcF91cGRhdGVfZWxlbSxcbjM1Mjk6XHRcdC5tYXBfZGVsZXRlX2VsZW0gPSByaHRhYl9tYXBfZGVsZXRlX2VsZW0sXG4zNTMwOlx0XHQubWFwX2dlbl9sb29rdXAgPSByaHRhYl9tYXBfZ2VuX2xvb2t1cCxcbjM1MzE6XHRcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHJodGFiX21hcF9zZXFfc2hvd19lbGVtLFxuMzUzMjpcdFx0Lm1hcF9zZXRfZm9yX2VhY2hfY2FsbGJhY2tfYXJncyA9IG1hcF9zZXRfZm9yX2VhY2hfY2FsbGJhY2tfYXJncyxcbjM1MzM6XHRcdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZWFjaF9yaGFzaF9lbGVtLFxuMzUzNDpcdFx0Lm1hcF9tZW1fdXNhZ2UgPSByaHRhYl9tYXBfbWVtX3VzYWdlLFxuMzUzNTpcdFx0QkFUQ0hfT1BTKHJodGFiKSxcbjM1MzY6XHRcdC5tYXBfYnRmX2lkID0gXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXG4zNTM3Olx0XHQuaXRlcl9zZXFfaW5mbyA9IFx1MDAyNnJoYXNoX2l0ZXJfc2VxX2luZm8sXG4zNTM4Olx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMzkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU3VtbWFyeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBUaGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyAoYCNpZmRlZmBzKSB0byB3b3JyeSBhYm91dCBoZXJlLCBzbyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmcuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MgYSBsb3QuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBzdW1tYXJ5IG9mIHRoZSBzaXR1YXRpb246CgoqICAgKipXb3J0aEZ1enppbmcqKjogRGVmaW5pdGVseSB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWx0ZXJpbmcgY29yZSBrZXJuZWwgbG9naWMuCiogICAqKkZvY3VzU3ltYm9scyoqOiBNeSBwcmltYXJ5IHRhcmdldCB3aWxsIGJlIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgYXMgZXhwZWN0ZWQuCiogICAqKlJlYXNvbmluZyoqOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgY2FsbHMgd2l0aGluIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBpbnRlbmRlZCB0byByZXNvbHZlIHBvdGVudGlhbCBkZWFkbG9ja3MgdGhhdCBjYW4gb2NjdXIgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCB0aGlzIG1vZGlmaWVzIGtlcm5lbCBsb2dpYyB0aGF0JiMzOTtzIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IGl0IGludm9sdmVzIEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGAuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciBmdW5jdGlvbiB2aXNpYmlsaXR5LiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGlzIGEgKnN0YXRpYyogZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGFyZSBhbHNvIHN0YXRpYy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBgcmh0YWJfbWFwX29wc2AgdmlhIGBCQVRDSF9PUFMocmh0YWIpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBUaGV5IGJlY29tZSByZWFjaGFibGUgdGhyb3VnaCBgc3lzX2JwZmAgd2l0aCBgQlBGX01BUF9MT09LVVBfQkFUQ0hgIGFuZCBgQlBGX01BUF9MT09LVVBfQU5EX0RFTEVURV9CQVRDSGAgY29tbWFuZHMgYXBwbGllZCB0byBhIGBCUEZfTUFQX1RZUEVfUkhBU0hgIG1hcC4gU3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5IGVuZCB1cCBpbiB0aGUga2VybmVsIGltYWdlLCBzbyBJJiMzOTttIGNvbmZpZGVudCBJIGNhbiB0YXJnZXQgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBkaXJlY3RseS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga2VybmVsL2JwZi9oYXNodGFiLmNgIGlzIGluZGVlZCBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaHRhYi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTcwCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIENvbmZpcm1hdGlvbiBhbmQgQWN0aW9uIFBsYW4qKgoKWWVzLCB0aGF0JiMzOTtzIHRoZSByaWdodCBkaXJlY3Rpb24uIE9rYXksIGxldCYjMzk7cyBjcnlzdGFsbGl6ZSB0aGlzIGRlY2lzaW9uIGFuZCBhc3NpZ24gdGhlIGFwcHJvcHJpYXRlIGxhYmVsIHRvIGl0LiBJJiMzOTtsbCBuZWVkIGEgd2F5IHRvIHRyYWNrIHRoaXMsIHNvIEkgd2lsbCBuYW1lIHRoZSBtZXRob2Qgb3IgdmFyaWFibGUgdGhhdCBJJiMzOTttIGdvaW5nIHRvIHVzZSBhcyBgc2V0LXJlc3VsdHNgLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIGFjY3VyYXRlbHkgZGVzY3JpYmVzIGl0cyBmdW5jdGlvbiBhbmQgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZWNhbGwgbGF0ZXIgd2hlbiBJIG5lZWQgdG8gcmVmZXJlbmNlIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCB0byBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGRlYWRsb2NrcyB3aGVuIEJQRiBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zIGZvciBgQlBGX01BUF9UWVBFX1JIQVNIYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzE6NDYuMjE2OTQ3NDQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNjU2MTAyOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCB0byBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGRlYWRsb2NrcyB3aGVuIEJQRiBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zIGZvciBgQlBGX01BUF9UWVBFX1JIQVNIYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjMxOjQ2LjIxNjk1OTA0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExMzcwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxOTozMTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuaW5kZXggOWYzOTRlMWFhMmU4NWIuLmQzZjJmOGEzNzllODZhIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuKysrIGIva2VybmVsL2JwZi9oYXNodGFiLmNcXG5AQCAtMzI5OSw2ICszMjk5LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbiBcXHRkc3RfdmFsID0gdmFsdWVzO1xcbiBcXHR0b3RhbCA9IDA7XFxuIFxcbitcXHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXG4gXFx0LypcXG5AQCAtMzMxMyw2ICszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbiBcXHRcXHRlbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpO1xcbiBcXHRcXHRpZiAoIWVsZW0pIHtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdFxcdGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxuIFxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuIFxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gXFx0XFx0fVxcbkBAIC0zMzUwLDYgKzMzNTIsNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuIFxcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbiBcXG4gXFx0aWYgKHRvdGFsID09IDApIHtcXG4gXFx0XFx0cmV0ID0gLUVOT0VOVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzE6NDYuODMxNTkyNjU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEwNDE0Mzc3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjQ3ZDFiNmI4ZjBmYThlZThiMWMwYmYxODllMjNkMmIxOTdmNTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6MzE6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXG5pbmRleCA5ZjM5NGUxYWEyZTg1Yi4uZDNmMmY4YTM3OWU4NmEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuKysrIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbkBAIC0zMjk5LDYgKzMyOTksNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHRkc3RfdmFsID0gdmFsdWVzO1xuIFx0dG90YWwgPSAwO1xuIFxuK1x0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXG4gXHQvKlxuQEAgLTMzMTMsNiArMzMxNCw3IEBAIHN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbiBcdFx0ZWxlbSA9IHJodGFiX2xvb2t1cF9lbGVtKG1hcCwgY3Vyc29yKTtcbiBcdFx0aWYgKCFlbGVtKSB7XG4gXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIFx0XHRcdGdvdG8gZnJlZTtcbiBcdFx0fVxuQEAgLTMzNTAsNiArMzM1Miw3IEBAIHN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcbiBcdGlmICh0b3RhbCA9PSAwKSB7XG4gXHRcdHJldCA9IC1FTk9FTlQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMTo0Ni44MzE1OTc4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTQwMjM3NDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQlBGIEluc3RydW1lbnRhdGlvbiBJc3N1ZSoqXG5cblJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFyb3VuZCBhIHNwZWNpZmljIGNvZGUgc2VjdGlvbi4gVGhlIHRhcmdldCBpcyB0aGUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBmdW5jdGlvbiwgbG9jYXRlZCB3aXRoaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2h5ICp0aGlzKiBmdW5jdGlvbj8gV2hhdCdzIHRoZSBjb250ZXh0IGZvciBzdXNwZWN0aW5nIGEgbmVlZCB0byBkaXNhYmxlIGluc3RydW1lbnRhdGlvbiBhcm91bmQgdGhpcyBwYXJ0aWN1bGFyIGJpdCBvZiBsb2dpYz9cIiBUaGlzIHRlbGxzIG1lIHRoZXJlJ3MgcG90ZW50aWFsbHkgYSBwZXJmb3JtYW5jZSBvciBpbnN0cnVtZW50YXRpb24tcmVsYXRlZCBpc3N1ZSBzdXJmYWNpbmcuICBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIHBvdGVudGlhbCBjcml0aWNhbCBzZWN0aW9uIG5lZWRpbmcgcHJvdGVjdGlvbj8gSXMgdGhlcmUgYSBrbm93biBpbnRlcmFjdGlvbiB3aXRoIEJQRiBpbnN0cnVtZW50YXRpb24gdGhhdCdzIGNhdXNpbmcgcHJvYmxlbXM/IE15IGV4cGVydGlzZSBraWNrcyBpbiDigJMgSSBjYW4gcXVpY2tseSBzdGFydCB0byBhbmFseXplIHRoZSBmdW5jdGlvbidzIGNvZGUgZmxvdyBhbmQgZGV0ZXJtaW5lIHdoZXJlIGluc3RydW1lbnRhdGlvbiBtaWdodCBiZSBjb25mbGljdGluZy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGJhdGNoIGxvb2t1cC9kZWxldGUgb3BlcmF0aW9uIGludGVyYWN0cyB3aXRoIEJQRiBwcm9ncmFtcyBhbmQgdGhlaXIgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGxldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMjowMi4yMzQwMDc5MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3NDkxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyMzU9c3RhdGljIHU2NCByaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMjQ0LVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMyNDU6c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMyNDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MzM4ND1zdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg2LXtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg3OlxcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4OC19XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMzkwPXN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM5Mi17XFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM5MzpcXHRyZXR1cm4gX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gobWFwLCBhdHRyLCB1YXR0ciwgdHJ1ZSk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM5NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjMyOjAyLjY2MTUyNjYxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjk2MjYzODk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBJbnN0cnVtZW50YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCBjYWxscyB3aXRoaW4gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gY29udHJvbGxpbmcgdGhlIHRyYWNpbmcgb3IgcHJvZmlsaW5nIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBCUEYgbWFwIG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGJvdGggYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCwgd2hpY2ggYXJlIGNvcmUgZnVuY3Rpb25zIGZvciBiYXRjaCBsb29rdXBzIGluLCBwcmVzdW1hYmx5LCBhIHJhZGl4IGhhc2ggdGFibGUgKHJodGFiKS4gTWFrZXMgc2Vuc2UgdGhhdCBiYXRjaCBvcGVyYXRpb25zIG1pZ2h0IGJlIGNhbmRpZGF0ZXMgZm9yIGluc3RydW1lbnRhdGlvbiBjb250cm9sIOKAkyB3ZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGFsd2F5cyBiZSBwYXlpbmcgdGhlIGNvc3QuXG5cbkJ1dCwgSSBuZWVkIG1vcmUgY29udGV4dC4gSSBkb24ndCBrbm93IHRoZSBleGFjdCBzZW1hbnRpY3Mgb2YgdGhvc2UgaW5zdHJ1bWVudGF0aW9uIGZ1bmN0aW9ucyBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBwYXJ0aWN1bGFybHkgd2hlbiB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggQlBGIG1hcHMuIExldCBtZSBkaWcgaW50byB0aGUgZGVmaW5pdGlvbnMgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb250cm9sIHRoZSBCUEYgbWFwJ3MgYmVoYXZpb3VyIGluIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMzo1OS42MjQxNzA1NjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NDAyMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MjY2MT1leHRlcm4gc3RydWN0IG11dGV4IGJwZl9zdGF0c19lbmFibGVkX211dGV4O1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjY4LSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MjY2OTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKHZvaWQpXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjcwLXtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTE3NzM9X19odGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMTg0NC1hZ2FpbjpcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoxODQ1OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTE4NDYtXFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9Mjk0MD1zdGF0aWMgaW50IHJodGFiX2RlbGV0ZV9lbGVtKHN0cnVjdCBicGZfcmh0YWIgKnJodGFiLCBzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbSwgdm9pZCAqY29weSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI5NDctXFx0ICogcmhhc2h0YWJsZSBsb2NrcyBidWNrZXQgd2l0aCBsb2NhbF9pcnFfc2F2ZSgpLiBPbmx5IE5NSSBwcm9ncmFtcyBtYXkgcmVlbnRlclxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI5NDg6XFx0ICogcmhhc2h0YWJsZSBjb2RlLCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKSBkaXNhYmxlcyBwcm9ncmFtcyBydW5uaW5nIGluIE5NSSwgZXhjZXB0XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk0OS1cXHQgKiByYXcgdHJhY2Vwb2ludHMsIHdoaWNoIHdlIGRvbid0IGhhdmUgaW4gcmhhc2h0YWJsZS5cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yOTUwLVxcdCAqL1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI5NTE6XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMwMzQ9c3RhdGljIGxvbmcgcmh0YWJfbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsIHU2NCBtYXBfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMDczLVxcdC8qIFByZXZlbnQgZGVhZGxvY2sgZm9yIE5NSSBwcm9ncmFtcyBhdHRlbXB0aW5nIHRvIHRha2UgYnVja2V0IGxvY2sgKi9cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMDc0OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMwNzUtXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzMDEtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzMwMjpcXHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzAzLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MT1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI3MC1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyNzE6XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjcyLVxcdGlmIChtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCB8fFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA5PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE4OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTMxOS1cXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0hBU0ggfHxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE4OTc9c3RhdGljIGludCBtYXBfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTkzMi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxOTMzOlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE5MzQtXFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjAwNj1pbnQgZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMDQ0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIwNDU6XFx0XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjA0Ni1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMjc1LVxcdFxcdGlmICghYnBmX21hcF9pc19vZmZsb2FkZWQobWFwKSkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIyNzY6XFx0XFx0XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Ny1cXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jPTI5PWludCBicGZfcHJvZzEoc3RydWN0IHB0X3JlZ3MgKmN0eClcXG4tLVxcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmMtNTAtICogU2luY2UgKl9tYXBfbG9va3VwX2VsZW0gY2FuJ3QgYmUgZXhwZWN0ZWQgdG8gdHJpZ2dlciBicGYgcHJvZ3JhbXNcXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jOjUxOiAqIGR1ZSB0byBwb3RlbnRpYWwgZGVhZGxvY2tzIChicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24pLCB0aGlzIGJwZlxcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmMtNTItICogcHJvZ3JhbSB3aWxsIGJlIGF0dGFjaGVkIHRvIGJwZl9tYXBfY29weV92YWx1ZSAod2hpY2ggaXMgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjA1LjEwODIwMTk0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NDY4MzIzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQgaW5jcmVtZW50cyBhIHBlci1DUFUgY291bnRlciwgc29tZXRoaW5nIGxpa2UgYGJwZl9wcm9nX2FjdGl2ZWAsIGFuZCB0aGF0IHRoaXMgaXMgZGVzaWduZWQgdG8gc3RvcCBCUEYgcHJvZ3JhbXMgZnJvbSBydW5uaW5nLiBJdCdzIHVzZWQgdG8gcHJldmVudCBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHRpZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIEJQRiBtYXAgb3BlcmF0aW9ucy4gUmlnaHQsIGRlYWRsb2NrIHByZXZlbnRpb24uXG5cbldhaXQsIGlzIHRoaXMgYWN0dWFsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZT8gSXQgZG9lcyBwcmV2ZW50IGRlYWRsb2NrcyB3aGVuIHdlJ3JlIHRyYWNpbmcgQlBGIG1hcCBvcGVyYXRpb25zLCBzbyB5ZXMsIGl0ICppcyogY2hhbmdpbmcgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4gTm93IEknbSB0aGlua2luZywgZG9lcyB0aGlzIG5lY2Vzc2l0YXRlIGZ1enppbmc/XG5cbkl0J3MgdGVtcHRpbmcgdG8gZGlzbWlzcyBpdC4gSXQgKmlzKiBqdXN0IGEgZGVhZGxvY2sgcHJldmVudGlvbiBtZWNoYW5pc20uIEl0J3Mgbm90IGFkZGluZyBuZXcgZmVhdHVyZXMgb3IgbG9naWMgdGhhdCBhIGZ1enplciB3b3VsZCB0eXBpY2FsbHkgbGF0Y2ggb250by4gQnV0IGhvbGQgb24uLi4gaWYgaXQncyBmaXhpbmcgYSBkZWFkbG9jaywgdGhhdCAqaXMqIGEgYnVnIGZpeC4gU28gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz9cblxuTGV0J3Mgc2VlLCB3aGF0IGRvZXMgdGhlIG9mZmljaWFsIGd1aWRhbmNlIHNheT8gQWgsIHJpZ2h0LiBJdCBzYXlzIGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcgY2hhbmdlcywgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBjaGFuZ2UgZXhlY3V0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuXG5UaGlzIGZ1bmN0aW9uICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCAqaXMqIHJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgQlBGIHByb2dyYW1zIGZyb20gcnVubmluZy4gSXQgKmRlZmluaXRlbHkqIGNoYW5nZXMgZXhlY3V0aW9uIGZsb3cuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGV2ZW4gaWYgaXQncyBmaXhpbmcgYSBkZWFkbG9jaywgaXMgdGhhdCB3b3J0aCBmdXp6aW5nPyBGdXp6aW5nIG1pZ2h0IG5vdCBmaW5kIGFueXRoaW5nIG5ldywgd2hpY2ggaXMgYSB3YXN0ZSBvZiB0aW1lLCBidXQgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5Pa2F5LCBsZXQncyBzZWUuIE5lZWQgdG8gY2hlY2sgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbmAgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjExLjU1NTAzNzA5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NjA6XFx0REVDTEFSRV9QRVJfQ1BVKGludCwgYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjYxOlxcdGV4dGVybiBzdHJ1Y3QgbXV0ZXggYnBmX3N0YXRzX2VuYWJsZWRfbXV0ZXg7XFxuMjY2MjpcXHRcXG4yNjYzOlxcdC8qXFxuMjY2NDpcXHQgKiBCbG9jayBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGluc3RydW1lbnRhdGlvbiAocGVyZixcXG4yNjY1OlxcdCAqIGtwcm9iZXMsIHRyYWNlcG9pbnRzKSB0byBwcmV2ZW50IGRlYWRsb2NrcyBvbiBtYXAgb3BlcmF0aW9ucyBhcyBhbnkgb2ZcXG4yNjY2OlxcdCAqIHRoZXNlIGV2ZW50cyBjYW4gaGFwcGVuIGluc2lkZSBhIHJlZ2lvbiB3aGljaCBob2xkcyBhIG1hcCBidWNrZXQgbG9ja1xcbjI2Njc6XFx0ICogYW5kIGNhbiBkZWFkbG9jayBvbiBpdC5cXG4yNjY4OlxcdCAqL1xcbjI2Njk6XFx0c3RhdGljIGlubGluZSB2b2lkIGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbih2b2lkKVxcbjI2NzA6XFx0e1xcbjI2NzE6XFx0XFx0bWlncmF0ZV9kaXNhYmxlKCk7XFxuMjY3MjpcXHRcXHR0aGlzX2NwdV9pbmMoYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjczOlxcdH1cXG4yNjc0OlxcdFxcbjI2NzU6XFx0c3RhdGljIGlubGluZSB2b2lkIGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKHZvaWQpXFxuMjY3NjpcXHR7XFxuMjY3NzpcXHRcXHR0aGlzX2NwdV9kZWMoYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjc4OlxcdFxcdG1pZ3JhdGVfZW5hYmxlKCk7XFxuMjY3OTpcXHR9XFxuMjY4MDpcXHRcXG4yNjgxOlxcdGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBicGZfc3VwZXJfb3BzO1xcbjI2ODI6XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX21hcF9mb3BzO1xcbjI2ODM6XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX3Byb2dfZm9wcztcXG4yNjg0OlxcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9pdGVyX2ZvcHM7XFxuMjY4NTpcXHRleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBicGZfdG9rZW5fZm9wcztcXG4yNjg2OlxcdFxcbjI2ODc6XFx0I2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXFxcXG4yNjg4OlxcdFxcdGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfb3BzIF9uYW1lICMjIF9wcm9nX29wczsgXFxcXFxcbjI2ODk6XFx0XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIF9uYW1lICMjIF92ZXJpZmllcl9vcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjExLjU1NTI5NDg0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjYxMzAwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIE1hcCBCYXRjaCBPcGVyYXRpb25zKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgZGlzYWJsZXMgbWlncmF0aW9uIGFuZCBpbmNyZW1lbnRzIGBicGZfcHJvZ19hY3RpdmVgLiBUaGF0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgaXQgZG9lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCdzIHJvYnVzdC5cblxuTGV0J3MgZm9jdXMgdGhlIGZ1enppbmcgb24gc3BlY2lmaWMgc3ltYm9scy4gSSBuZWVkIHRvIHRhcmdldCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAsIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gV2FpdCBhIHNlY29uZOKApiBpc24ndCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIHN0YXRpYz8gVGhhdCdzIGEgcG90ZW50aWFsIHNuYWcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBiZWZvcmUgSSBwdXQgdG9vIG11Y2ggZWZmb3J0IGludG8gZnV6emluZyBpdC4gV2UgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXNlZCwgYW5kIHRoYXQgaXQncyB3b3J0aCB0aGUgdGltZSB0byBmdXp6IGl0LCBiZWZvcmUgd2UgaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDoxNS42ODE0MzA4MjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjAwNzA3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MTYuMTYzNDUwMDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NjQ2NjU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipJbnZlc3RpZ2F0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBVc2FnZSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBXaGF0J3MgdXBzdHJlYW0gb2YgaXQ/IFdoYXQncyBkb3duc3RyZWFtPyBXaGF0IHByb2Nlc3NlcyBhcmUgcmVseWluZyBvbiBpdHMgcmVzdWx0cz8gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgaW5zdGFuY2Ugb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljayBidXQgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIHdoZW4gSSdtIGRlYWxpbmcgd2l0aCB1bmZhbWlsaWFyIGNvZGUsIGVzcGVjaWFsbHkgd2l0aCBzdWNoIGEgcG90ZW50aWFsbHkgY2VudHJhbCBmdW5jdGlvbiBuYW1lLiBMZXQncyBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDoxOS40NDk5MTk3ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDQ5MDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MTkuNTUwNDIxODA4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NTE2MjkzNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBc3Nlc3NpbmcgVGFzayBBc3NpZ25tZW50IGluIGEgQ29tcGxleCBTeXN0ZW0qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGFzc2lnbm1lbnQuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB0YXNrLCB0aGlzIG9wZXJhdGlvbiwgbWFwcGVkIHdpdGhpbiB0aGUgc3lzdGVtPyBJIGNhbid0IGp1c3QganVtcCBpbnRvIHNvbHV0aW9ucyB3aXRob3V0IGtub3dpbmcgdGhlIG9yaWdpbmF0aW5nIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIFwibWFwIG9wcyxcIiBhcyBpbiwgdGhlIG9wZXJhdGlvbmFsIG1hcHBpbmcgb3IgdGhlIHRhc2sgYXNzaWdubWVudHMuIFVuZGVyc3RhbmRpbmcgdGhlIGFzc2lnbm1lbnQgc2NoZW1lIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRldGVybWluZSBhbnl0aGluZyBlbHNlLiBLbm93aW5nIHRoZSBvcmlnaW5hdGluZyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIG90aGVyd2lzZSBJIGNvdWxkIGJlIGFkZHJlc3NpbmcgdGhlIHdyb25nIGlzc3VlLCBvciBldmVuIG1ha2luZyB0aGUgc3lzdGVtIHdvcnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzMzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MzYuMDY2NzE4ODFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTQzOTM4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX2xvb2t1cF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmM9MzI0NT1zdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMzODQ6c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXFx0XFx0XFx0XFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDozOS4wODExMjQ1NTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MzAzNjEzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQlBGIEhhc2h0YWJsZSBMb2NhdGlvbiBTZWFyY2gqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQgZ2V0cyBhc3NpZ25lZCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgYXNzaWdubWVudCBwcm9jZXNzIGlzIHR1Y2tlZCBhd2F5IHdpdGhpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZywgY29uc2lkZXJpbmcgdGhhdCBmaWxlJ3Mgc3BlY2lmaWMgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBoYXNodGFibGUgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBCUEYgc3Vic3lzdGVtLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gb3Igc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTAuNTExNDkwNzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM4MDpcXHRcXHRrdmZyZWUoZGVsX2VsZW1zKTtcXG4zMzgxOlxcdFxcdHJldHVybiByZXQ7XFxuMzM4MjpcXHR9XFxuMzM4MzpcXHRcXG4zMzg0OlxcdHN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG4zMzg1OlxcdFxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG4zMzg2OlxcdHtcXG4zMzg3OlxcdFxcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XFxuMzM4ODpcXHR9XFxuMzM4OTpcXHRcXG4zMzkwOlxcdHN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbjMzOTE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxcbjMzOTI6XFx0e1xcbjMzOTM6XFx0XFx0cmV0dXJuIF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKG1hcCwgYXR0ciwgdWF0dHIsIHRydWUpO1xcbjMzOTQ6XFx0fVxcbjMzOTU6XFx0XFxuMzM5NjpcXHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvIHtcXG4zMzk3OlxcdFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuMzM5ODpcXHRcXHRzdHJ1Y3QgYnBmX3JodGFiICpyaHRhYjtcXG4zMzk5OlxcdFxcdHN0cnVjdCByaGFzaHRhYmxlX2l0ZXIgaXRlcjtcXG4zNDAwOlxcdH07XFxuMzQwMTpcXHRcXG4zNDAyOlxcdHN0YXRpYyB2b2lkICpicGZfcmhhc2hfbWFwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuMzQwMzpcXHRcXHRfX2FjcXVpcmVzKFJDVSlcXG4zNDA0OlxcdHtcXG4zNDA1OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzQwNjpcXHRcXHRzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbTtcXG4zNDA3OlxcdFxcbjM0MDg6XFx0XFx0cmhhc2h0YWJsZV93YWxrX3N0YXJ0KFxcdTAwMjZpbmZvLVxcdTAwM2VpdGVyKTtcXG4zNDA5OlxcdFxcdC8qXFxuMzQxMDpcXHRcXHQgKiBSZS1kZWxpdmVyIHRoZSBlbGVtZW50IHJldHVybmVkIGJ5IHdhbGtfbmV4dCgpIGF0IHRoZSBlbmQgb2YgdGhlXFxuMzQxMTpcXHRcXHQgKiBwcmV2aW91cyByZWFkKCkg4oCUIGJwZl9zZXFfcmVhZCBtYXkgaGF2ZSBzdG9wcGVkIGJlZm9yZSBzaG93KClcXG4zNDEyOlxcdFxcdCAqIGNvbnN1bWVkIGl0LiBSZWhhc2ggcmV3aW5kcyB0aGUgd2Fsa2VyOyByZXRyeSBvbiAtRUFHQUlOLlxcbjM0MTM6XFx0XFx0ICovXFxuMzQxNDpcXHRcXHRkbyB7XFxuMzQxNTpcXHRcXHRcXHRlbGVtID0gcmhhc2h0YWJsZV93YWxrX3BlZWsoXFx1MDAyNmluZm8tXFx1MDAzZWl0ZXIpO1xcbjM0MTY6XFx0XFx0fSB3aGlsZSAoUFRSX0VSUihlbGVtKSA9PSAtRUFHQUlOKTtcXG4zNDE3OlxcdFxcbjM0MTg6XFx0XFx0aWYgKElTX0VSUihlbGVtKSlcXG4zNDE5OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbjM0MjA6XFx0XFxuMzQyMTpcXHRcXHRpZiAoZWxlbSBcXHUwMDI2XFx1MDAyNiAqcG9zID09IDApXFxuMzQyMjpcXHRcXHRcXHQrKypwb3M7XFxuMzQyMzpcXHRcXHRyZXR1cm4gZWxlbTtcXG4zNDI0OlxcdH1cXG4zNDI1OlxcdFxcbjM0MjY6XFx0c3RhdGljIHZvaWQgKmJwZl9yaGFzaF9tYXBfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbjM0Mjc6XFx0e1xcbjM0Mjg6XFx0XFx0c3RydWN0IGJwZl9pdGVyX3NlcV9yaGFzaF9tYXBfaW5mbyAqaW5mbyA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zNDI5OlxcdFxcdHN0cnVjdCByaHRhYl9lbGVtICplbGVtO1xcbjM0MzA6XFx0XFxuMzQzMTpcXHRcXHQrKypwb3M7XFxuMzQzMjpcXHRcXG4zNDMzOlxcdFxcdC8qIFJlaGFzaCByZXdpbmRzIHRoZSB3YWxrZXI7IHJldHJ5IHVudGlsIGl0IHN0b3BzIHJldHVybmluZyAtRUFHQUlOLiAqL1xcbjM0MzQ6XFx0XFx0ZG8ge1xcbjM0MzU6XFx0XFx0XFx0ZWxlbSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZpbmZvLVxcdTAwM2VpdGVyKTtcXG4zNDM2OlxcdFxcdH0gd2hpbGUgKFBUUl9FUlIoZWxlbSkgPT0gLUVBR0FJTik7XFxuMzQzNzpcXHRcXG4zNDM4OlxcdFxcdGlmIChJU19FUlIoZWxlbSkpXFxuMzQzOTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4zNDQwOlxcdFxcdHJldHVybiBlbGVtO1xcbjM0NDE6XFx0fVxcbjM0NDI6XFx0XFxuMzQ0MzpcXHRzdGF0aWMgaW50IF9fYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4zNDQ0OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbSlcXG4zNDQ1OlxcdHtcXG4zNDQ2OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzQ0NzpcXHRcXHRzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSBjdHggPSB7fTtcXG4zNDQ4OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9tZXRhIG1ldGE7XFxuMzQ0OTpcXHRcXHRzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7XFxuMzQ1MDpcXHRcXHRpbnQgcmV0ID0gMDtcXG4zNDUxOlxcdFxcbjM0NTI6XFx0XFx0bWV0YS5zZXEgPSBzZXE7XFxuMzQ1MzpcXHRcXHRwcm9nID0gYnBmX2l0ZXJfZ2V0X2luZm8oXFx1MDAyNm1ldGEsIGVsZW0gPT0gTlVMTCk7XFxuMzQ1NDpcXHRcXHRpZiAocHJvZykge1xcbjM0NTU6XFx0XFx0XFx0Y3R4Lm1ldGEgPSBcXHUwMDI2bWV0YTtcXG4zNDU2OlxcdFxcdFxcdGN0eC5tYXAgPSBpbmZvLVxcdTAwM2VtYXA7XFxuMzQ1NzpcXHRcXHRcXHRpZiAoZWxlbSkge1xcbjM0NTg6XFx0XFx0XFx0XFx0Y3R4LmtleSA9IGVsZW0tXFx1MDAzZWRhdGE7XFxuMzQ1OTpcXHRcXHRcXHRcXHRjdHgudmFsdWUgPSByaHRhYl9lbGVtX3ZhbHVlKGVsZW0sIGluZm8tXFx1MDAzZW1hcC1cXHUwMDNla2V5X3NpemUpO1xcbjM0NjA6XFx0XFx0XFx0fVxcbjM0NjE6XFx0XFx0XFx0cmV0ID0gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXFx1MDAyNmN0eCk7XFxuMzQ2MjpcXHRcXHR9XFxuMzQ2MzpcXHRcXG4zNDY0OlxcdFxcdHJldHVybiByZXQ7XFxuMzQ2NTpcXHR9XFxuMzQ2NjpcXHRcXG4zNDY3OlxcdHN0YXRpYyBpbnQgYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4zNDY4OlxcdHtcXG4zNDY5OlxcdFxcdHJldHVybiBfX2JwZl9yaGFzaF9tYXBfc2VxX3Nob3coc2VxLCB2KTtcXG4zNDcwOlxcdH1cXG4zNDcxOlxcdFxcbjM0NzI6XFx0c3RhdGljIHZvaWQgYnBmX3JoYXNoX21hcF9zZXFfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4zNDczOlxcdFxcdF9fcmVsZWFzZXMoUkNVKVxcbjM0NzQ6XFx0e1xcbjM0NzU6XFx0XFx0c3RydWN0IGJwZl9pdGVyX3NlcV9yaGFzaF9tYXBfaW5mbyAqaW5mbyA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zNDc2OlxcdFxcbjM0Nzc6XFx0XFx0aWYgKCF2KVxcbjM0Nzg6XFx0XFx0XFx0KHZvaWQpX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHNlcSwgTlVMTCk7XFxuMzQ3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTAuNTExNzg1MDM0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTQyNTI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIExpbmVhZ2Ugb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBiZWluZyB1c2VkIGFuZCB3aGVyZSBpdCdzIGdldHRpbmcgaXRzIHZhbHVlcyBmcm9tLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIGZpbmQgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmFzc2lnbmVkKiBvciBkZWZpbmVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBmb3IgaXRzIGFwcGxpY2F0aW9uLCBhbmQgSSBjYW4gc3RhcnQgdG8gcmVhc29uIGFib3V0IHRoZSBmbG93IG9mIGRhdGEgaW50byBpdC4gS25vd2luZyBpdHMgYXNzaWduZXIgaXMgdGhlIGtleSB0byBhbGwgb2YgdGhpcy4gSSdsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc4NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTMuMzY2MDQxNzQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDk5OTU5NDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXBfbG9va3VwX2JhdGNoLipyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTYuNDY2MDE5OTQxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTY2NzY1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIHN1YmplY3QsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjpcblxuKipJbnNwZWN0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCoqXG5cblJpZ2h0LCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSBhIGZldyB0aGluZ3MuIFwiQmF0Y2hcIiBzdWdnZXN0cyBhbiBvcHRpbWl6YXRpb24gZm9yIGhhbmRsaW5nIG11bHRpcGxlIGxvb2t1cHMgc2ltdWx0YW5lb3VzbHksIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UgZ2FpbnMgYnkgcmVkdWNpbmcgb3ZlcmhlYWQuIFwiTWFwXCIgaGludHMgYXQgYSBrZXktdmFsdWUgZGF0YSBzdHJ1Y3R1cmUsIHByb2JhYmx5IGEgaGFzaCBtYXAgb3Igc2ltaWxhci4gXCJSSHRhYlwiIGlzIGludGVyZXN0aW5nOyBpdCdzIHNwZWNpZmljLCBidXQgSSdsbCBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSBpdCByZXByZXNlbnRzLiBLbm93aW5nIHRoZSBwcmVjaXNlIGRhdGEgc3RydWN0dXJlIGZvcm1hdCBpcyBrZXkgaGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gdGhhdCBJIGNhbiB0aGVuIGluZmVyIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGFsZ29yaXRobSBiZWluZyBkZXBsb3llZC4gSXMgaXQgbG9jay1mcmVlLCBjb25jdXJyZW50LXNhZmU/IFRoZSBkZXNpZ24gaGVyZSBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB1bmRlciBoaWdoIGxvYWQgYW5kIG11bHRpLXRocmVhZGVkIGFjY2Vzcy4gV2hhdCdzIHRoZSB0cmFkZS1vZmYgaW4gc3BhY2UgdmVyc3VzIHNwZWVkPyBBcmUgd2Ugb3B0aW1pemluZyBmb3IgbWVtb3J5IGxvY2FsaXR5PyBBcmUgdGhlcmUgcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jZSBpc3N1ZXM/IEFyZSB0aGVyZSBkaWZmZXJlbnQgbG9va3VwIHN0cmF0ZWdpZXMgZm9yIGRpZmZlcmVudCBrZXlzPyBMZXQncyBjaGVjayB0aGUgY29kZSBpdHNlbGYgYW5kL29yIHRoZSBkb2N1bWVudGF0aW9uIHRvIGNsYXJpZnkgdGhlc2UgcG9pbnRzLiBJJ20gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGJhdGNoIG9wZXJhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5LiBXaGF0IGlzIHRoZSBiYXRjaGluZyBzdHJhdGVneT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGFueSBlZGdlIGNhc2VzLCBsaWtlIGVtcHR5IGJhdGNoZXMsIGFuZCB3aGF0IGhhcHBlbnMgd2hlbiBrZXlzIGFyZW4ndCBmb3VuZC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGEgbGFyZ2UgbnVtYmVyIG9mIGVsZW1lbnRzIGF0IG9uY2UuIEkgd2FudCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTgwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MTAuMDMyNzkxNjAxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI5NzEyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJodGFiX21hcF9sb29rdXBfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MTIuNzYyNTEzMjU0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODcwOTMzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVW5hc3NpZ25lZCBCUEYgRGF0YSBTdHJ1Y3R1cmUgLSBXaGVyZSdzIHRoZSBMaW5rPyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgdGhpcyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0J3Mgbm90IGJlaW5nIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8gYW55IHBhcnRpY3VsYXIgQlBGIHByb2dyYW0gb3IgY29udGV4dC4gVGhhdCByYWlzZXMgYSByZWQgZmxhZy4gQmVmb3JlIGp1bXBpbmcgdG8gY29uY2x1c2lvbnMgYWJvdXQgbGVha3Mgb3IgZGFuZ2xpbmcgcmVmZXJlbmNlcywgbGV0J3MgdmVyaWZ5IHRoYXQgdGhlIGludGVuZGVkIGxpbmtpbmcgaXNuJ3QgaGFwcGVuaW5nIHNvbWV3aGVyZSBvYnNjdXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgKmVuZCogb2YgYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gSXQncyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoZSBrZXJuZWwgZm9yIGxpbmtpbmcgdG8gaGFwcGVuIGVpdGhlciBpbmxpbmUgYXQgdGhlIHBvaW50IG9mIGFsbG9jYXRpb24gb3IsIG9jY2FzaW9uYWxseSwganVzdCBiZWZvcmUgYG1vZHVsZV9leGl0YCBvciBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIHJlbGV2YW50IGZpbGUuIEl0IGNvdWxkIGJlIHBhcnQgb2YgYSBoZWxwZXIgZnVuY3Rpb24gb3IgaW5pdGlhbGl6YXRpb24gcm91dGluZSB0aGF0IEkgYW0gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUyNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjE2LjA0OTYxMjA4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMTAzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX2xvb2t1cF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4NS1cXHRcXHRcXHRcXHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjE2LjE0NjYzMDcxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTE3ODE4MzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipQb3RlbnRpYWwgUmVkdW5kYW5jeSBEZXRlY3RlZDogVW51c2VkIEZ1bmN0aW9uPyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEknbSBzZWVpbmcgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGRlZmluZWQsIGJ1dCBpcyBpdCBhY3R1YWxseSBiZWluZyAqdXNlZCogYW55d2hlcmU/IFRoYXQncyBhIGNsYXNzaWMgY29kZSBzbWVsbCDigJMgcG90ZW50aWFsbHkgZGVhZCBjb2RlLCBhIGxlZnRvdmVyIGZyb20gYW4gZWFybGllciBpdGVyYXRpb24sIG9yIG1heWJlIGp1c3QgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBpbnRlbmRlZCB1c2FnZSB3YXMgbmV2ZXIgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucywgdGhvdWdoLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgYHJodGFiX21hcF9vcHNgLiBJdCdzIGxpa2VseSB0aGF0IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBtZWFudCB0byBiZSBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoYXQgc3RydWN0LiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IGlmIHRoZXJlJ3MgYW4gb3BlcmF0aW9uIGRpc3BhdGNoIG9yIHNvbWV0aGluZyBzaW1pbGFyIHVzaW5nIHRoaXMgZnVuY3Rpb24gcG9pbnRlci4gSWYgaXQncyB0aGVyZSBhbmQgbmV2ZXIgY2FsbGVkLCB0aGVuIHdlIG1heSBoYXZlIGFuIGlzc3VlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTEzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzEuMzI0ODE4MjY1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1NzU3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUxODpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zNTE5LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzEuNDYwNDA1MDgyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTYxNDE2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGl2aW5nIGludG8gYHJodGFiX21hcF9vcHNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiTGV0J3MgcmVhZCBgcmh0YWJfbWFwX29wc2AuXCIgVGhhdCdzIHRoZSBjb3JlIGZvY3VzIHJpZ2h0IG5vdy4gV2hhdCdzIHRoZSBnb2FsPyBUbyB1bmRlcnN0YW5kIGl0LCBvZiBjb3Vyc2UuIFRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG9wZXJhdGlvbi4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aWVzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBtYXAgYWxsIHRoZSB2YXJpYWJsZXMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlbSBpbiBteSBoZWFkLCBhbmQgSSdtIHN1cmUgSSdsbCBwcm9iYWJseSBiZSBtYWtpbmcgYSBtZW50YWwgbW9kZWwgYXMgSSBnby5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb2Ygbm92ZWwgYXBwcm9hY2hlcywgb3B0aW1pemF0aW9ucywgcG90ZW50aWFsIHBpdGZhbGxzLiBBcmUgdGhlcmUgYW55IGNsZXZlciBzeW5jaHJvbml6YXRpb24gc3RyYXRlZ2llcz8gV2hhdCBhYm91dCBtZW1vcnkgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucz8gSG93IHJvYnVzdCBpcyB0aGUgZXJyb3IgaGFuZGxpbmc/IE1vcmUgaW1wb3J0YW50bHksIGNhbiBJIHNlZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2s/IFRoaXMgbGlrZWx5IGlzbid0IGEgc2ltcGxlIHJlYWQuIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIG51YW5jZWQsIHNvbWV0aGluZyB0aGF0IGhhcyBsaWtlbHkgYmVlbiBvcHRpbWl6ZWQgZm9yIHBlcmZvcm1hbmNlLiBJdCdzIHRpbWUgdG8gZGlnIGluLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzQuODE2NTUxMzIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTE1OlxcdH07XFxuMzUxNjpcXHRcXG4zNTE3OlxcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxuMzUxODpcXHRjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG4zNTE5OlxcdFxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG4zNTIwOlxcdFxcdC5tYXBfYWxsb2NfY2hlY2sgPSByaHRhYl9tYXBfYWxsb2NfY2hlY2ssXFxuMzUyMTpcXHRcXHQubWFwX2FsbG9jID0gcmh0YWJfbWFwX2FsbG9jLFxcbjM1MjI6XFx0XFx0Lm1hcF9mcmVlID0gcmh0YWJfbWFwX2ZyZWUsXFxuMzUyMzpcXHRcXHQubWFwX2dldF9uZXh0X2tleSA9IHJodGFiX21hcF9nZXRfbmV4dF9rZXksXFxuMzUyNDpcXHRcXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxuMzUyNTpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxuMzUyNjpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbjM1Mjc6XFx0XFx0Lm1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0sXFxuMzUyODpcXHRcXHQubWFwX3VwZGF0ZV9lbGVtID0gcmh0YWJfbWFwX3VwZGF0ZV9lbGVtLFxcbjM1Mjk6XFx0XFx0Lm1hcF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9kZWxldGVfZWxlbSxcXG4zNTMwOlxcdFxcdC5tYXBfZ2VuX2xvb2t1cCA9IHJodGFiX21hcF9nZW5fbG9va3VwLFxcbjM1MzE6XFx0XFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcmh0YWJfbWFwX3NlcV9zaG93X2VsZW0sXFxuMzUzMjpcXHRcXHQubWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzID0gbWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzLFxcbjM1MzM6XFx0XFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9lYWNoX3JoYXNoX2VsZW0sXFxuMzUzNDpcXHRcXHQubWFwX21lbV91c2FnZSA9IHJodGFiX21hcF9tZW1fdXNhZ2UsXFxuMzUzNTpcXHRcXHRCQVRDSF9PUFMocmh0YWIpLFxcbjM1MzY6XFx0XFx0Lm1hcF9idGZfaWQgPSBcXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXFxuMzUzNzpcXHRcXHQuaXRlcl9zZXFfaW5mbyA9IFxcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxcbjM1Mzg6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzQuODE2ODQ2NjUzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzY1Nzk5MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBCQVRDSF9PUFNgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBgQkFUQ0hfT1BTKHJodGFiKWAuLi4gdGhhdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgcGFydCBvZiB0aGUgc3lzdGVtLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCdzIGdvaW5nIG9uIHdpdGggYEJBVENIX09QU2AuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBwZWVrIGF0IGl0cyBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCB0aGUgbW9zdCByZWNlbnQgY2hhbmdlcyBhcmUuIEhvcGVmdWxseSBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE2NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6NDYuMTgyNjUwOTA4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0MTUzNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBCQVRDSF9PUFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmMtMjUtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjY6I2RlZmluZSBCQVRDSF9PUFMoX25hbWUpXFx0XFx0XFx0XFxcXFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3LVxcdC5tYXBfbG9va3VwX2JhdGNoID1cXHRcXHRcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjQ2LjMxODA3NjQ5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg0ODU2MzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byByaHRhYl9tYXBfb3BzKipcblxuUmlnaHQsIHNvIEkgc2VlIHRoZXNlIGZ1bmN0aW9ucywgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCwgYmVpbmcgdXNlZC4gSG1tLCB0aGV5J3JlIGNsZWFybHkgcGFydCBvZiB0aGUgYHJodGFiX21hcF9vcHNgIHN0cnVjdHVyZSBvciBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBXaGF0IGV4YWN0bHkgKmlzKiBgcmh0YWJfbWFwX29wc2AgZGVzaWduZWQgZm9yPyBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIGl0IHNvbWUgc29ydCBvZiBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggYSBoYXNoIHRhYmxlLCBhIGtleS12YWx1ZSBzdG9yZSwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IFRoZSBmYWN0IHRoYXQgYmF0Y2ggb3BlcmF0aW9ucyBhcmUgcHJlc2VudCBzdWdnZXN0cyBhIGRlc2lnbiBwcmlvcml0aXppbmcgZWZmaWNpZW5jeSBmb3IgYSBsYXJnZSBudW1iZXIgb2YgbG9va3VwcyBvciBkZWxldGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIHVzZSBjYXNlIG9mIGByaHRhYl9tYXBfb3BzYCB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBzcGVjaWZpYyBiYXRjaCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGludGVuZGVkIHRvIHdvcmsgd2l0aGluIHRoZSBzeXN0ZW0uIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIGEgZGVmaW5pdGlvbiBvciBleGFtcGxlcyBvZiBob3cgYHJodGFiX21hcF9vcHNgIGlzIHVzZWQgZWxzZXdoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNTo1Ny4xNjY2NTA0N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2ODA3NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJodGFiX21hcF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjU3LjM1MzQ3MDI2MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTk5MTA1MzMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNraW5nIERvd24gYSBGdW5jdGlvbiBDYWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHJodGFiX21hcF9vcHNgLi4uIEkga25vdyBpdCdzIHByb2JhYmx5IGltcG9ydGFudCwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyB0aGluZyBpcyBhY3R1YWxseSBnZXR0aW5nIHVzZWQuIEtub3dpbmcgaXRzIGxvY2F0aW9uIGlzIHRoZSBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoLiBMZXQncyBzZWUuLi4gd2hlcmUgZG9lcyB0aGUgY29kZSAqYWN0dWFsbHkqIGludm9rZSBgcmh0YWJfbWFwX29wc2A/IEkgbmVlZCB0byBmaW5kIHRoZSByZWZlcmVuY2VzIHRvIGl0IGJlZm9yZSBJIGNhbiBmaWd1cmUgb3V0IGl0cyBzaWduaWZpY2FuY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc3RhcnQgc2VhcmNoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg3NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjEzLjM0NDUyOTg0NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1NTYzNzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNj1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX0lOU05fQVJSQVksIGluc25fYXJyYXlfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjE2LjQwMDE3ODM1NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ2MDIxODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IEJQRiBSSEFTSCBCYXRjaCBPcGVyYXRpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgQlBGX01BUF9UWVBFX1JIQVNIYCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaXRzIGJhdGNoIGxvb2t1cCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBiZWhhdmUsIHNvIHRoYXQncyBhIGRlZmluaXRlIHllcy5cblxuVGhlIGNvcmUgZm9jdXMgZm9yIG1lIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAuIEkgbmVlZCB0byBkaWcgaW50byB0aGF0LiBIbW0sIGJ1dCBpdCdzIG1hcmtlZCBhcyBgc3RhdGljYC4gQ2FuIHN5emthbGxlciBldmVuIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgdGhhdCBpcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyBpdCdzIHdpdGhpbiB0aGUga2VybmVsIGltYWdlLlxuXG5Ib3dldmVyLCBJJ20gbm93IHNlY29uZC1ndWVzc2luZyBteXNlbGYgYSBiaXQuIFdvdWxkIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIHByb3ZpZGluZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludD8gSSdsbCBzdGljayB3aXRoIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgZm9yIG5vdy5cblxuQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBhbnkgQlBGLXJlbGF0ZWQgd29yaywgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBCUEZfTUFQX1RZUEVfUkhBU0hgIGl0c2VsZiBkb2Vzbid0IGRlbWFuZCBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBlbGltaW5hdGUgYW55IGRlcGVuZGVuY3kgaXNzdWVzIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjoyMS43NDYyMDUwMTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTY5NTQ5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX01BUF9UWVBFX1JIQVNIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNj1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX0lOU05fQVJSQVksIGluc25fYXJyYXlfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwMDA9ZW51bSBicGZfbWFwX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwNDktXFx0QlBGX01BUF9UWVBFX0lOU05fQVJSQVksXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwNTA6XFx0QlBGX01BUF9UWVBFX1JIQVNILFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDUxLVxcdF9fTUFYX0JQRl9NQVBfVFlQRVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE1NTctXFx0XFx0ICpcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTU1ODpcXHRcXHQgKiBCUEZfTUFQX1RZUEVfUkhBU0ggLSBpbml0aWFsIHRhYmxlIHNpemUgaGludFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU5LVxcdFxcdCAqIChuZWxlbV9oaW50KS4gMCA9IHVzZSByaGFzaHRhYmxlIGRlZmF1bHQuIE11c3QgYmVcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYz0xMDA9c3RhdGljIGludCBicGZfaXRlcl9hdHRhY2hfbWFwKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xMjYtXFx0XFx0IG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjEyNzpcXHRcXHQgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0gpXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTEyOC1cXHRcXHRnb3RvIHB1dF9tYXA7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQ0PXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyODgtXFx0XFx0XFx0XFx0aWYgKG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0hBU0ggXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMjg5OlxcdFxcdFxcdFxcdCAgICBtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyOTAtXFx0XFx0XFx0XFx0ICAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzAzLVxcdFxcdFxcdFxcdGlmIChtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9IQVNIIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTMwNDpcXHRcXHRcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzA1LVxcdFxcdFxcdFxcdCAgICBtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9MUlVfSEFTSCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTMxNS1cXHRcXHRcXHRcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMTY6XFx0XFx0XFx0XFx0ICAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX1JIQVNIIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTMxNy1cXHRcXHRcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0hBU0ggXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEzNzE9c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDktXFx0ICAgIGF0dHItXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUkVOQSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MTA6XFx0ICAgIGF0dHItXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MTEtXFx0ICAgIGF0dHItXFx1MDAzZW1hcF9leHRyYSAhPSAwKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgxLVxcdGNhc2UgQlBGX01BUF9UWVBFX0hBU0g6XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQ4MjpcXHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgzLVxcdGNhc2UgQlBGX01BUF9UWVBFX1BFUkNQVV9IQVNIOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjIxMz1zdGF0aWMgaW50IG1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Mi1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9MUlVfUEVSQ1BVX0hBU0ggfHxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMjczOlxcdFxcdCAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1JIQVNIIHx8XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3NC1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDS19UUkFDRSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzQ2PXN0YXRpYyBpbnQgY2hlY2tfbWFwX3Byb2dfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkyLVxcdFxcdGNhc2UgQlBGX01BUF9UWVBFX0hBU0g6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzkzOlxcdFxcdGNhc2UgQlBGX01BUF9UWVBFX1JIQVNIOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NC1cXHRcXHRjYXNlIEJQRl9NQVBfVFlQRV9MUlVfSEFTSDpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDAwPWVudW0gYnBmX21hcF90eXBlIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDQ5LVxcdEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDUwOlxcdEJQRl9NQVBfVFlQRV9SSEFTSCxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA1MS1cXHRfX01BWF9CUEZfTUFQX1RZUEVcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU3LVxcdFxcdCAqXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE1NTg6XFx0XFx0ICogQlBGX01BUF9UWVBFX1JIQVNIIC0gaW5pdGlhbCB0YWJsZSBzaXplIGhpbnRcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1OS1cXHRcXHQgKiAobmVsZW1faGludCkuIDAgPSB1c2Ugcmhhc2h0YWJsZSBkZWZhdWx0LiBNdXN0IGJlXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE2Mz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG1hcF90eXBlX25hbWVbXSA9IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTk4LVxcdFtCUEZfTUFQX1RZUEVfSU5TTl9BUlJBWV1cXHRcXHQ9IFxcXCJpbnNuX2FycmF5XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjE5OTpcXHRbQlBGX01BUF9UWVBFX1JIQVNIXVxcdFxcdFxcdD0gXFxcInJoYXNoXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIwMC19O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MjkyPXN0YXRpYyBpbnQgcHJvYmVfbWFwX2NyZWF0ZShlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTMxMS1cXHRcXHRicmVhaztcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzozMTI6XFx0Y2FzZSBCUEZfTUFQX1RZUEVfUkhBU0g6XFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMzEzLVxcdFxcdG9wdHMubWFwX2ZsYWdzXFx0PSBCUEZfRl9OT19QUkVBTExPQztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYz0zNz1zdGF0aWMgdm9pZCBoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTUwLVxcdGJwZl9tYXBfX3NldF90eXBlKGN0eC5za2VsLVxcdTAwM2VtYXBzLmhhc2hfbWFwX2JlbmNoLCBtYXBfdHlwZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jOjUxOlxcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTUyLVxcdFxcdGJwZl9tYXBfX3NldF9tYXBfZmxhZ3MoY3R4LnNrZWwtXFx1MDAzZW1hcHMuaGFzaF9tYXBfYmVuY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM9ODA9c3RhdGljIHZvaWQgcmhhc2hfc2V0dXAodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtODEte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYzo4MjpcXHRoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTgzLX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MTUxPXN0YXRpYyB2b2lkIGhhc2htYXBfbG9va3VwX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAuYy0xNjctXFx0bWFwX2ZsYWdzID0gYXJncy5tYXBfZmxhZ3M7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAuYzoxNjg6XFx0aWYgKG1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9SSEFTSClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTE2OS1cXHRcXHRtYXBfZmxhZ3MgfD0gQlBGX0ZfTk9fUFJFQUxMT0M7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jPTIxMT1zdGF0aWMgdm9pZCByaGFzaF9zZXR1cCh2b2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMjEyLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjIxMzpcXHRoYXNobWFwX2xvb2t1cF9zZXR1cChCUEZfTUFQX1RZUEVfUkhBU0gpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMjE0LX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYz0xNTU9c3RhdGljIHZvaWQgaHRhYl9tZW1fc2V0dXBfaW1wbChlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYy0xODQtXFx0YnBmX21hcF9fc2V0X21heF9lbnRyaWVzKG1hcCwgTUFYKDgxOTIsIDY0ICogZW52Lm5yX2NwdXMpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmM6MTg1OlxcdGlmIChtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXFx1MDAyNlxcdTAwMjYgYXJncy5wcmVhbGxvY2F0ZWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jLTE4Ni1cXHRcXHRicGZfbWFwX19zZXRfbWFwX2ZsYWdzKG1hcCwgYnBmX21hcF9fbWFwX2ZsYWdzKG1hcCkgXFx1MDAyNiB+QlBGX0ZfTk9fUFJFQUxMT0MpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jPTIyOT1zdGF0aWMgdm9pZCByaHRhYl9tZW1fc2V0dXAodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmM6MjMxOlxcdGh0YWJfbWVtX3NldHVwX2ltcGwoQlBGX01BUF9UWVBFX1JIQVNIKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMyLX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmM9NDY9c3RhdGljIGludCByaGFzaF9tYXBfY3JlYXRlKF9fdTMyIG1heF9lbnRyaWVzLCBfX3U2NCBtYXBfZXh0cmEpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmM6NTI6XFx0cmV0dXJuIGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9SSEFTSCwgXFxcInJoYXNoX2V4dHJhXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUzLVxcdFxcdFxcdCAgICAgIHNpemVvZihfX3UzMiksIHNpemVvZihfX3U2NCksIG1heF9lbnRyaWVzLCBcXHUwMDI2b3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jPTg9c3RydWN0IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jOjk6XFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9SSEFTSCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX2JwZl9yaGFzaF9tYXAuYy0xMC1cXHRfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9OT19QUkVBTExPQyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvcmhhc2guYz0yMj1zdHJ1Y3Qge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jOjIzOlxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUkhBU0gpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jLTI0LVxcdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX05PX1BSRUFMTE9DKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MjYuMTQzMTc4OTQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTkwMTk1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgQlBGX01BUF9UWVBFX1JIQVNIYCBNYXAgVHlwZSoqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYEJQRl9NQVBfVFlQRV9SSEFTSGAgaGVyZS4gUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXQncyBqdXN0IHRoYXQgbWFwIHR5cGUgaXRzZWxmLiBTZWVtcyBsaWtlIGBDT05GSUdfQlBGX1NZU0NBTExgIHNob3VsZCBiZSB0aGUgb25seSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBJIG5lZWQgdG8gd29ycnkgYWJvdXQuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIEkgdGhpbmsgSSByZW1lbWJlciBgQlBGX01BUF9UWVBFX1JIQVNIYCBiZWluZyBhIG5ld2VyIGFkZGl0aW9uLCBvciBwZXJoYXBzIGl0J3MgYWx3YXlzIGluY2x1ZGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSB2ZXJpZnkgd2hldGhlciB0aGVyZSBhcmUgYW55IG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBlbmFibGUgb3IgcmVsYXRlIHRvIHRoaXMgcGFydGljdWxhciBtYXAgdHlwZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjoyOS43MDIyMDMwNjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTIxMTEyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX01BUF9UWVBFX1JIQVNIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MjkuOTY3NDI4MTg2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjI0ODkwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQlBGIEhhc2h0YWJsZSBEaXZlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwgdXNlIG9mIGByaHRhYl9tYXBfb3BzYCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgaW1wbGVtZW50YXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoYXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyDigJMgeW91IGtub3csIHRob3NlIHBlc2t5IGAjaWZkZWZgIHN0YXRlbWVudHMuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGJsb2NrcyBvZiBjb2RlIHRoYXQgbWlnaHQgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQgYmFzZWQgb24gc29tZSBidWlsZC10aW1lIGZsYWcgcmVsYXRlZCB0byBgcmh0YWJfbWFwX29wc2AuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGVuYWJsZWQuIE15IGh5cG90aGVzaXMgaXMgdGhpcyBpcyBwcm9iYWJseSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCdzIGFjdGl2ZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MzIuOTg5OTIxOTRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTIzMTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTM1MTc9QlRGX0lEX0xJU1RfU0lOR0xFKHJodGFiX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9yaHRhYilcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MTktXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjozMy4xNTUxNjI4MDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3MDE5OTEzOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AgLSBMaW5lIDM1MTgqKlxuXG5BbHJpZ2h0LCBteSBicmFpbiBpcyBzYXlpbmcsIFwiVGltZSB0byBmb2N1cy5cIiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgQlBGIGhhc2h0YWJsZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzUxOCBpbiB0aGUgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhhdCBsaW5lIGNvbnRhaW5zIHNvbWV0aGluZyBzaWduaWZpY2FudCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGEgY3JpdGljYWwganVuY3R1cmUgaW4gdGhlIGFsZ29yaXRobSBvciBkYXRhIHN0cnVjdHVyZSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBhcm91bmQgdGhhdCBwb2ludC4gVGhpcyBjb3VsZCBiZSB3aGVyZSB3ZSdyZSBleHBlcmllbmNpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBhIHBvdGVudGlhbCBidWcsIGEgY3JpdGljYWwgZGF0YSBsb29rdXAsIG9yIG1heWJlIGp1c3Qgc29tZSBpbnRlcmVzdGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSd2ZSBiZWVuIG1lYW5pbmcgdG8gZXhhbWluZS4gTGV0IG1lIGdvIGZpbmQgdGhhdCBsaW5lIGFuZCBnZXQgdG8gdGhlIGJvdHRvbSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgam91cm5leSBiZWdpbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NDQuODU3MTYwOTQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTAwOlxcdFxcdGJwZl9tYXBfcHV0X3dpdGhfdXJlZihpbmZvLVxcdTAwM2VtYXApO1xcbjM1MDE6XFx0fVxcbjM1MDI6XFx0XFxuMzUwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9yaGFzaF9tYXBfc2VxX29wcyA9IHtcXG4zNTA0OlxcdFxcdC5zdGFydCA9IGJwZl9yaGFzaF9tYXBfc2VxX3N0YXJ0LFxcbjM1MDU6XFx0XFx0Lm5leHQgPSBicGZfcmhhc2hfbWFwX3NlcV9uZXh0LFxcbjM1MDY6XFx0XFx0LnN0b3AgPSBicGZfcmhhc2hfbWFwX3NlcV9zdG9wLFxcbjM1MDc6XFx0XFx0LnNob3cgPSBicGZfcmhhc2hfbWFwX3NlcV9zaG93LFxcbjM1MDg6XFx0fTtcXG4zNTA5OlxcdFxcbjM1MTA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9zZXFfaW5mbyByaGFzaF9pdGVyX3NlcV9pbmZvID0ge1xcbjM1MTE6XFx0XFx0LnNlcV9vcHMgPSBcXHUwMDI2YnBmX3JoYXNoX21hcF9zZXFfb3BzLFxcbjM1MTI6XFx0XFx0LmluaXRfc2VxX3ByaXZhdGUgPSBicGZfaXRlcl9pbml0X3JoYXNoX21hcCxcXG4zNTEzOlxcdFxcdC5maW5pX3NlcV9wcml2YXRlID0gYnBmX2l0ZXJfZmluaV9yaGFzaF9tYXAsXFxuMzUxNDpcXHRcXHQuc2VxX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvKSxcXG4zNTE1OlxcdH07XFxuMzUxNjpcXHRcXG4zNTE3OlxcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxuMzUxODpcXHRjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG4zNTE5OlxcdFxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG4zNTIwOlxcdFxcdC5tYXBfYWxsb2NfY2hlY2sgPSByaHRhYl9tYXBfYWxsb2NfY2hlY2ssXFxuMzUyMTpcXHRcXHQubWFwX2FsbG9jID0gcmh0YWJfbWFwX2FsbG9jLFxcbjM1MjI6XFx0XFx0Lm1hcF9mcmVlID0gcmh0YWJfbWFwX2ZyZWUsXFxuMzUyMzpcXHRcXHQubWFwX2dldF9uZXh0X2tleSA9IHJodGFiX21hcF9nZXRfbmV4dF9rZXksXFxuMzUyNDpcXHRcXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxuMzUyNTpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxuMzUyNjpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbjM1Mjc6XFx0XFx0Lm1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0sXFxuMzUyODpcXHRcXHQubWFwX3VwZGF0ZV9lbGVtID0gcmh0YWJfbWFwX3VwZGF0ZV9lbGVtLFxcbjM1Mjk6XFx0XFx0Lm1hcF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9kZWxldGVfZWxlbSxcXG4zNTMwOlxcdFxcdC5tYXBfZ2VuX2xvb2t1cCA9IHJodGFiX21hcF9nZW5fbG9va3VwLFxcbjM1MzE6XFx0XFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcmh0YWJfbWFwX3NlcV9zaG93X2VsZW0sXFxuMzUzMjpcXHRcXHQubWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzID0gbWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzLFxcbjM1MzM6XFx0XFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9lYWNoX3JoYXNoX2VsZW0sXFxuMzUzNDpcXHRcXHQubWFwX21lbV91c2FnZSA9IHJodGFiX21hcF9tZW1fdXNhZ2UsXFxuMzUzNTpcXHRcXHRCQVRDSF9PUFMocmh0YWIpLFxcbjM1MzY6XFx0XFx0Lm1hcF9idGZfaWQgPSBcXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXFxuMzUzNzpcXHRcXHQuaXRlcl9zZXFfaW5mbyA9IFxcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxcbjM1Mzg6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NDQuODU3NTg1NDM3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTYwNjY0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU3VtbWFyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gVGhlcmUgYXJlIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgKGAjaWZkZWZgcykgdG8gd29ycnkgYWJvdXQgaGVyZSwgc28gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgbG90LlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnkgb2YgdGhlIHNpdHVhdGlvbjpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IERlZmluaXRlbHkgdHJ1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFsdGVyaW5nIGNvcmUga2VybmVsIGxvZ2ljLlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IE15IHByaW1hcnkgdGFyZ2V0IHdpbGwgYmUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC5cbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgYXMgZXhwZWN0ZWQuXG4qICAgKipSZWFzb25pbmcqKjogVGhlIHBhdGNoIGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGNhbGxzIHdpdGhpbiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgaW50ZW5kZWQgdG8gcmVzb2x2ZSBwb3RlbnRpYWwgZGVhZGxvY2tzIHRoYXQgY2FuIG9jY3VyIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgaW52b2tlZCB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoYXQgdGhpcyBtb2RpZmllcyBrZXJuZWwgbG9naWMgdGhhdCdzIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IGl0IGludm9sdmVzIEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGAuXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uIHZpc2liaWxpdHkuIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaXMgYSAqc3RhdGljKiBmdW5jdGlvbi4gSG93ZXZlciwgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYXJlIGFsc28gc3RhdGljLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzc2lnbmVkIHRvIGByaHRhYl9tYXBfb3BzYCB2aWEgYEJBVENIX09QUyhyaHRhYilgLiBUaGF0J3MgdGhlIGtleS4gVGhleSBiZWNvbWUgcmVhY2hhYmxlIHRocm91Z2ggYHN5c19icGZgIHdpdGggYEJQRl9NQVBfTE9PS1VQX0JBVENIYCBhbmQgYEJQRl9NQVBfTE9PS1VQX0FORF9ERUxFVEVfQkFUQ0hgIGNvbW1hbmRzIGFwcGxpZWQgdG8gYSBgQlBGX01BUF9UWVBFX1JIQVNIYCBtYXAuIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBlbmQgdXAgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gSSdtIGNvbmZpZGVudCBJIGNhbiB0YXJnZXQgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBkaXJlY3RseS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkndmUgY29uZmlybWVkIHRoYXQgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBpcyBpbmRlZWQgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NTEuNDczNjU2MTM5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI1ODY1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaHRhYi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjUxLjcxNjI1NzcxNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTk0NjM3NDg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBDb25maXJtYXRpb24gYW5kIEFjdGlvbiBQbGFuKipcblxuWWVzLCB0aGF0J3MgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gT2theSwgbGV0J3MgY3J5c3RhbGxpemUgdGhpcyBkZWNpc2lvbiBhbmQgYXNzaWduIHRoZSBhcHByb3ByaWF0ZSBsYWJlbCB0byBpdC4gSSdsbCBuZWVkIGEgd2F5IHRvIHRyYWNrIHRoaXMsIHNvIEkgd2lsbCBuYW1lIHRoZSBtZXRob2Qgb3IgdmFyaWFibGUgdGhhdCBJJ20gZ29pbmcgdG8gdXNlIGFzIGBzZXQtcmVzdWx0c2AuIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gYWNjdXJhdGVseSBkZXNjcmliZXMgaXRzIGZ1bmN0aW9uIGFuZCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIHJlY2FsbCBsYXRlciB3aGVuIEkgbmVlZCB0byByZWZlcmVuY2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTcwLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM3OjA3LjY2MjYzNzM0MloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDM4MDIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow6r94c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 19:15:46 +0000 UTC FinishedAt: 2026-06-30 19:37:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "53435562a725962e4de0c29653223129ba11643a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "a325cbb7-73d5-4408-beb9-e131c41ebe4d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "__rhtab_map_lookup_and_delete_batch" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE5OjMxOjQ0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGFzaHRhYi5jIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbmluZGV4IDlmMzk0ZTFhYTJlODViLi5kM2YyZjhhMzc5ZTg2YSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuQEAgLTMyOTksNiAmIzQzOzMyOTksNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHRkc3RfdmFsID0gdmFsdWVzO1xuIFx0dG90YWwgPSAwO1xuIFxuJiM0MztcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFxuIFx0LypcbkBAIC0zMzEzLDYgJiM0MzszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuIFx0XHRlbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpO1xuIFx0XHRpZiAoIWVsZW0pIHtcbiBcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRcdFx0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIFx0XHRcdGdvdG8gZnJlZTtcbiBcdFx0fVxuQEAgLTMzNTAsNiAmIzQzOzMzNTIsNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHR9XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpO1xuIFxuIFx0aWYgKHRvdGFsID09IDApIHtcbiBcdFx0cmV0ID0gLUVOT0VOVDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE5OjMxOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oYXNodGFiLmMgYi9rZXJuZWwvYnBmL2hhc2h0YWIuYwppbmRleCA5ZjM5NGUxYWEyZTg1Yi4uZDNmMmY4YTM3OWU4NmEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jCkBAIC0zMjk5LDYgJiM0MzszMjk5LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCWRzdF92YWwgPSB2YWx1ZXM7CiAJdG90YWwgPSAwOwogCiYjNDM7CWJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpOwogCXJjdV9yZWFkX2xvY2soKTsKIAogCS8qCkBAIC0zMzEzLDYgJiM0MzszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCQllbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpOwogCQlpZiAoIWVsZW0pIHsKIAkJCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwkJCWJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKCk7CiAJCQlyZXQgPSAtRUFHQUlOOwogCQkJZ290byBmcmVlOwogCQl9CkBAIC0zMzUwLDYgJiM0MzszMzUyLDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLAogCX0KIAogCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwlicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpOwogCiAJaWYgKHRvdGFsID09IDApIHsKIAkJcmV0ID0gLUVOT0VOVDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIEJQRiBJbnN0cnVtZW50YXRpb24gSXNzdWUqKgoKUmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFyb3VuZCBhIHNwZWNpZmljIGNvZGUgc2VjdGlvbi4gVGhlIHRhcmdldCBpcyB0aGUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBmdW5jdGlvbiwgbG9jYXRlZCB3aXRoaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgd2h5ICp0aGlzKiBmdW5jdGlvbj8gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBmb3Igc3VzcGVjdGluZyBhIG5lZWQgdG8gZGlzYWJsZSBpbnN0cnVtZW50YXRpb24gYXJvdW5kIHRoaXMgcGFydGljdWxhciBiaXQgb2YgbG9naWM/JiMzNDsgVGhpcyB0ZWxscyBtZSB0aGVyZSYjMzk7cyBwb3RlbnRpYWxseSBhIHBlcmZvcm1hbmNlIG9yIGluc3RydW1lbnRhdGlvbi1yZWxhdGVkIGlzc3VlIHN1cmZhY2luZy4gIEkgbmVlZCB0byBkaXZlIGludG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJcyB0aGlzIGEgcG90ZW50aWFsIGNyaXRpY2FsIHNlY3Rpb24gbmVlZGluZyBwcm90ZWN0aW9uPyBJcyB0aGVyZSBhIGtub3duIGludGVyYWN0aW9uIHdpdGggQlBGIGluc3RydW1lbnRhdGlvbiB0aGF0JiMzOTtzIGNhdXNpbmcgcHJvYmxlbXM/IE15IGV4cGVydGlzZSBraWNrcyBpbiDigJMgSSBjYW4gcXVpY2tseSBzdGFydCB0byBhbmFseXplIHRoZSBmdW5jdGlvbiYjMzk7cyBjb2RlIGZsb3cgYW5kIGRldGVybWluZSB3aGVyZSBpbnN0cnVtZW50YXRpb24gbWlnaHQgYmUgY29uZmxpY3RpbmcuIEkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgYmF0Y2ggbG9va3VwL2RlbGV0ZSBvcGVyYXRpb24gaW50ZXJhY3RzIHdpdGggQlBGIHByb2dyYW1zIGFuZCB0aGVpciBwb3RlbnRpYWwgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eS4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGxldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyMzU9c3RhdGljIHU2NCByaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMzI0NC1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMyNDU6c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzI0Ni1cdFx0XHRcdFx0ICAgICAgIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMzODQ9c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODYte1xua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NzpcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg4LX1cbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMzkwPXN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzOTIte1xua2VybmVsL2JwZi9oYXNodGFiLmM6MzM5MzpcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCB0cnVlKTtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzOTQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTAKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSW5zdHJ1bWVudGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGNhbGxzIHdpdGhpbiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLiBJbnRlcmVzdGluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBjb250cm9sbGluZyB0aGUgdHJhY2luZyBvciBwcm9maWxpbmcgb3ZlcmhlYWQgYXNzb2NpYXRlZCB3aXRoIEJQRiBtYXAgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbmRpcmVjdGx5IHRocm91Z2ggYm90aCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCB3aGljaCBhcmUgY29yZSBmdW5jdGlvbnMgZm9yIGJhdGNoIGxvb2t1cHMgaW4sIHByZXN1bWFibHksIGEgcmFkaXggaGFzaCB0YWJsZSAocmh0YWIpLiBNYWtlcyBzZW5zZSB0aGF0IGJhdGNoIG9wZXJhdGlvbnMgbWlnaHQgYmUgY2FuZGlkYXRlcyBmb3IgaW5zdHJ1bWVudGF0aW9uIGNvbnRyb2wg4oCTIHdlIHByb2JhYmx5IGRvbiYjMzk7dCB3YW50IHRvIGFsd2F5cyBiZSBwYXlpbmcgdGhlIGNvc3QuCgpCdXQsIEkgbmVlZCBtb3JlIGNvbnRleHQuIEkgZG9uJiMzOTt0IGtub3cgdGhlIGV4YWN0IHNlbWFudGljcyBvZiB0aG9zZSBpbnN0cnVtZW50YXRpb24gZnVuY3Rpb25zIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQsIHBhcnRpY3VsYXJseSB3aGVuIHRoZXkmIzM5O3JlIGludGVyYWN0aW5nIHdpdGggQlBGIG1hcHMuIExldCBtZSBkaWcgaW50byB0aGUgZGVmaW5pdGlvbnMgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlYWxseSBnb2luZyBvbiBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29udHJvbCB0aGUgQlBGIG1hcCYjMzk7cyBiZWhhdmlvdXIgaW4gdGhlc2UgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTI2NjE9ZXh0ZXJuIHN0cnVjdCBtdXRleCBicGZfc3RhdHNfZW5hYmxlZF9tdXRleDtcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTI2NjgtICovXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjI2Njk6c3RhdGljIGlubGluZSB2b2lkIGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbih2b2lkKVxuaW5jbHVkZS9saW51eC9icGYuaC0yNjcwLXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0xNzczPV9faHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0xODQ0LWFnYWluOlxua2VybmVsL2JwZi9oYXNodGFiLmM6MTg0NTpcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtMTg0Ni1cdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yOTQwPXN0YXRpYyBpbnQgcmh0YWJfZGVsZXRlX2VsZW0oc3RydWN0IGJwZl9yaHRhYiAqcmh0YWIsIHN0cnVjdCByaHRhYl9lbGVtICplbGVtLCB2b2lkICpjb3B5LFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI5NDctXHQgKiByaGFzaHRhYmxlIGxvY2tzIGJ1Y2tldCB3aXRoIGxvY2FsX2lycV9zYXZlKCkuIE9ubHkgTk1JIHByb2dyYW1zIG1heSByZWVudGVyXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyOTQ4Olx0ICogcmhhc2h0YWJsZSBjb2RlLCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKSBkaXNhYmxlcyBwcm9ncmFtcyBydW5uaW5nIGluIE5NSSwgZXhjZXB0XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yOTQ5LVx0ICogcmF3IHRyYWNlcG9pbnRzLCB3aGljaCB3ZSBkb24mIzM5O3QgaGF2ZSBpbiByaGFzaHRhYmxlLlxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1MC1cdCAqL1xua2VybmVsL2JwZi9oYXNodGFiLmM6Mjk1MTpcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1Mi1cbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMDM0PXN0YXRpYyBsb25nIHJodGFiX21hcF91cGRhdGVfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKnZhbHVlLCB1NjQgbWFwX2ZsYWdzKVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMwNzMtXHQvKiBQcmV2ZW50IGRlYWRsb2NrIGZvciBOTUkgcHJvZ3JhbXMgYXR0ZW1wdGluZyB0byB0YWtlIGJ1Y2tldCBsb2NrICovXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMDc0Olx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMDc1LVxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzMDEtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzAyOlx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzAzLVx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MT1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yNzAtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyNzE6XHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI3Mi1cdGlmIChtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1BFUkNQVV9IQVNIIHx8XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA5PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzE3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE4Olx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTktXHRpZiAobWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCB8fFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE4OTc9c3RhdGljIGludCBtYXBfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE5MzItXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxOTMzOlx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xOTM0LVx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTIwMDY9aW50IGdlbmVyaWNfbWFwX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIwNDQtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMDQ1Olx0XHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIwNDYtXHRcdHJjdV9yZWFkX2xvY2soKTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3NS1cdFx0aWYgKCFicGZfbWFwX2lzX29mZmxvYWRlZChtYXApKSB7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMjc2Olx0XHRcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Ny1cdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tLVxuc2FtcGxlcy9icGYvdHJhY2V4Ni5icGYuYz0yOT1pbnQgYnBmX3Byb2cxKHN0cnVjdCBwdF9yZWdzICpjdHgpXG4tLVxuc2FtcGxlcy9icGYvdHJhY2V4Ni5icGYuYy01MC0gKiBTaW5jZSAqX21hcF9sb29rdXBfZWxlbSBjYW4mIzM5O3QgYmUgZXhwZWN0ZWQgdG8gdHJpZ2dlciBicGYgcHJvZ3JhbXNcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmM6NTE6ICogZHVlIHRvIHBvdGVudGlhbCBkZWFkbG9ja3MgKGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbiksIHRoaXMgYnBmXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jLTUyLSAqIHByb2dyYW0gd2lsbCBiZSBhdHRhY2hlZCB0byBicGZfbWFwX2NvcHlfdmFsdWUgKHdoaWNoIGlzIGNhbGxlZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCBpbmNyZW1lbnRzIGEgcGVyLUNQVSBjb3VudGVyLCBzb21ldGhpbmcgbGlrZSBgYnBmX3Byb2dfYWN0aXZlYCwgYW5kIHRoYXQgdGhpcyBpcyBkZXNpZ25lZCB0byBzdG9wIEJQRiBwcm9ncmFtcyBmcm9tIHJ1bm5pbmcuIEl0JiMzOTtzIHVzZWQgdG8gcHJldmVudCBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHRpZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIEJQRiBtYXAgb3BlcmF0aW9ucy4gUmlnaHQsIGRlYWRsb2NrIHByZXZlbnRpb24uCgpXYWl0LCBpcyB0aGlzIGFjdHVhbGx5IGEgZnVuY3Rpb25hbCBjaGFuZ2U/IEl0IGRvZXMgcHJldmVudCBkZWFkbG9ja3Mgd2hlbiB3ZSYjMzk7cmUgdHJhY2luZyBCUEYgbWFwIG9wZXJhdGlvbnMsIHNvIHllcywgaXQgKmlzKiBjaGFuZ2luZyBob3cgdGhlIHN5c3RlbSBiZWhhdmVzLiBOb3cgSSYjMzk7bSB0aGlua2luZywgZG9lcyB0aGlzIG5lY2Vzc2l0YXRlIGZ1enppbmc/CgpJdCYjMzk7cyB0ZW1wdGluZyB0byBkaXNtaXNzIGl0LiBJdCAqaXMqIGp1c3QgYSBkZWFkbG9jayBwcmV2ZW50aW9uIG1lY2hhbmlzbS4gSXQmIzM5O3Mgbm90IGFkZGluZyBuZXcgZmVhdHVyZXMgb3IgbG9naWMgdGhhdCBhIGZ1enplciB3b3VsZCB0eXBpY2FsbHkgbGF0Y2ggb250by4gQnV0IGhvbGQgb24uLi4gaWYgaXQmIzM5O3MgZml4aW5nIGEgZGVhZGxvY2ssIHRoYXQgKmlzKiBhIGJ1ZyBmaXguIFNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/CgpMZXQmIzM5O3Mgc2VlLCB3aGF0IGRvZXMgdGhlIG9mZmljaWFsIGd1aWRhbmNlIHNheT8gQWgsIHJpZ2h0LiBJdCBzYXlzIGl0JiMzOTtzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZSBwYXRjaCBvbmx5IGluY2x1ZGVzOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGNoYW5nZXMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIHRoYXQgZG9uJiMzOTt0IGNoYW5nZSBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMuCgpUaGlzIGZ1bmN0aW9uICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCAqaXMqIHJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgQlBGIHByb2dyYW1zIGZyb20gcnVubmluZy4gSXQgKmRlZmluaXRlbHkqIGNoYW5nZXMgZXhlY3V0aW9uIGZsb3cuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGV2ZW4gaWYgaXQmIzM5O3MgZml4aW5nIGEgZGVhZGxvY2ssIGlzIHRoYXQgd29ydGggZnV6emluZz8gRnV6emluZyBtaWdodCBub3QgZmluZCBhbnl0aGluZyBuZXcsIHdoaWNoIGlzIGEgd2FzdGUgb2YgdGltZSwgYnV0IGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4KCk9rYXksIGxldCYjMzk7cyBzZWUuIE5lZWQgdG8gY2hlY2sgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbmAgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY2MDpcdERFQ0xBUkVfUEVSX0NQVShpbnQsIGJwZl9wcm9nX2FjdGl2ZSk7XG4yNjYxOlx0ZXh0ZXJuIHN0cnVjdCBtdXRleCBicGZfc3RhdHNfZW5hYmxlZF9tdXRleDtcbjI2NjI6XHRcbjI2NjM6XHQvKlxuMjY2NDpcdCAqIEJsb2NrIGV4ZWN1dGlvbiBvZiBCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gaW5zdHJ1bWVudGF0aW9uIChwZXJmLFxuMjY2NTpcdCAqIGtwcm9iZXMsIHRyYWNlcG9pbnRzKSB0byBwcmV2ZW50IGRlYWRsb2NrcyBvbiBtYXAgb3BlcmF0aW9ucyBhcyBhbnkgb2ZcbjI2NjY6XHQgKiB0aGVzZSBldmVudHMgY2FuIGhhcHBlbiBpbnNpZGUgYSByZWdpb24gd2hpY2ggaG9sZHMgYSBtYXAgYnVja2V0IGxvY2tcbjI2Njc6XHQgKiBhbmQgY2FuIGRlYWRsb2NrIG9uIGl0LlxuMjY2ODpcdCAqL1xuMjY2OTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24odm9pZClcbjI2NzA6XHR7XG4yNjcxOlx0XHRtaWdyYXRlX2Rpc2FibGUoKTtcbjI2NzI6XHRcdHRoaXNfY3B1X2luYyhicGZfcHJvZ19hY3RpdmUpO1xuMjY3MzpcdH1cbjI2NzQ6XHRcbjI2NzU6XHRzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24odm9pZClcbjI2NzY6XHR7XG4yNjc3Olx0XHR0aGlzX2NwdV9kZWMoYnBmX3Byb2dfYWN0aXZlKTtcbjI2Nzg6XHRcdG1pZ3JhdGVfZW5hYmxlKCk7XG4yNjc5Olx0fVxuMjY4MDpcdFxuMjY4MTpcdGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBicGZfc3VwZXJfb3BzO1xuMjY4MjpcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9tYXBfZm9wcztcbjI2ODM6XHRleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBicGZfcHJvZ19mb3BzO1xuMjY4NDpcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9pdGVyX2ZvcHM7XG4yNjg1Olx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX3Rva2VuX2ZvcHM7XG4yNjg2Olx0XG4yNjg3Olx0I2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXG4yNjg4Olx0XHRleHRlcm4gY29uc3Qgc3RydWN0IGJwZl9wcm9nX29wcyBfbmFtZSAjIyBfcHJvZ19vcHM7IFxcXG4yNjg5Olx0XHRleHRlcm4gY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgX25hbWUgIyMgX3ZlcmlmaWVyX29wcztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQ0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEJQRiBNYXAgQmF0Y2ggT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBkaXNhYmxlcyBtaWdyYXRpb24gYW5kIGluY3JlbWVudHMgYGJwZl9wcm9nX2FjdGl2ZWAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgaXQgZG9lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyByb2J1c3QuCgpMZXQmIzM5O3MgZm9jdXMgdGhlIGZ1enppbmcgb24gc3BlY2lmaWMgc3ltYm9scy4gSSBuZWVkIHRvIHRhcmdldCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAsIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gV2FpdCBhIHNlY29uZOKApiBpc24mIzM5O3QgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBzdGF0aWM/IFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgc25hZy4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGJlZm9yZSBJIHB1dCB0b28gbXVjaCBlZmZvcnQgaW50byBmdXp6aW5nIGl0LiBXZSBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGF0IHN0YXRpYyBmdW5jdGlvbiBpcyBhY3R1YWxseSB1c2VkLCBhbmQgdGhhdCBpdCYjMzk7cyB3b3J0aCB0aGUgdGltZSB0byBmdXp6IGl0LCBiZWZvcmUgd2UgaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzc1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLgoKKipJbnZlc3RpZ2F0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBVc2FnZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYC4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gV2hhdCYjMzk7cyB1cHN0cmVhbSBvZiBpdD8gV2hhdCYjMzk7cyBkb3duc3RyZWFtPyBXaGF0IHByb2Nlc3NlcyBhcmUgcmVseWluZyBvbiBpdHMgcmVzdWx0cz8gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IGluc3RhbmNlIG9mIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgZ29hbCBoZXJlIGlzIGEgcXVpY2sgYnV0IHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIHVuZmFtaWxpYXIgY29kZSwgZXNwZWNpYWxseSB3aXRoIHN1Y2ggYSBwb3RlbnRpYWxseSBjZW50cmFsIGZ1bmN0aW9uIG5hbWUuIExldCYjMzk7cyBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzMzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQXNzZXNzaW5nIFRhc2sgQXNzaWdubWVudCBpbiBhIENvbXBsZXggU3lzdGVtKioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgYXNzaWdubWVudC4gV2hlcmUgZXhhY3RseSBpcyB0aGlzIHRhc2ssIHRoaXMgb3BlcmF0aW9uLCBtYXBwZWQgd2l0aGluIHRoZSBzeXN0ZW0/IEkgY2FuJiMzOTt0IGp1c3QganVtcCBpbnRvIHNvbHV0aW9ucyB3aXRob3V0IGtub3dpbmcgdGhlIG9yaWdpbmF0aW5nIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlICYjMzQ7bWFwIG9wcywmIzM0OyBhcyBpbiwgdGhlIG9wZXJhdGlvbmFsIG1hcHBpbmcgb3IgdGhlIHRhc2sgYXNzaWdubWVudHMuIFVuZGVyc3RhbmRpbmcgdGhlIGFzc2lnbm1lbnQgc2NoZW1lIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRldGVybWluZSBhbnl0aGluZyBlbHNlLiBLbm93aW5nIHRoZSBvcmlnaW5hdGluZyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIG90aGVyd2lzZSBJIGNvdWxkIGJlIGFkZHJlc3NpbmcgdGhlIHdyb25nIGlzc3VlLCBvciBldmVuIG1ha2luZyB0aGUgc3lzdGVtIHdvcnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaHRhYl9tYXBfbG9va3VwX2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkJQRiBIYXNodGFibGUgTG9jYXRpb24gU2VhcmNoKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQgZ2V0cyBhc3NpZ25lZCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgYXNzaWdubWVudCBwcm9jZXNzIGlzIHR1Y2tlZCBhd2F5IHdpdGhpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBJdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcsIGNvbnNpZGVyaW5nIHRoYXQgZmlsZSYjMzk7cyBzcGVjaWZpYyByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGhhc2h0YWJsZSBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBCUEYgc3Vic3lzdGVtLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gb3Igc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM4MDpcdFx0a3ZmcmVlKGRlbF9lbGVtcyk7XG4zMzgxOlx0XHRyZXR1cm4gcmV0O1xuMzM4MjpcdH1cbjMzODM6XHRcbjMzODQ6XHRzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG4zMzg1Olx0XHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4zMzg2Olx0e1xuMzM4NzpcdFx0cmV0dXJuIF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKG1hcCwgYXR0ciwgdWF0dHIsIGZhbHNlKTtcbjMzODg6XHR9XG4zMzg5Olx0XG4zMzkwOlx0c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG4zMzkxOlx0XHRcdFx0XHRcdCAgICAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcbjMzOTI6XHR7XG4zMzkzOlx0XHRyZXR1cm4gX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gobWFwLCBhdHRyLCB1YXR0ciwgdHJ1ZSk7XG4zMzk0Olx0fVxuMzM5NTpcdFxuMzM5NjpcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8ge1xuMzM5NzpcdFx0c3RydWN0IGJwZl9tYXAgKm1hcDtcbjMzOTg6XHRcdHN0cnVjdCBicGZfcmh0YWIgKnJodGFiO1xuMzM5OTpcdFx0c3RydWN0IHJoYXNodGFibGVfaXRlciBpdGVyO1xuMzQwMDpcdH07XG4zNDAxOlx0XG4zNDAyOlx0c3RhdGljIHZvaWQgKmJwZl9yaGFzaF9tYXBfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbjM0MDM6XHRcdF9fYWNxdWlyZXMoUkNVKVxuMzQwNDpcdHtcbjM0MDU6XHRcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjM0MDY6XHRcdHN0cnVjdCByaHRhYl9lbGVtICplbGVtO1xuMzQwNzpcdFxuMzQwODpcdFx0cmhhc2h0YWJsZV93YWxrX3N0YXJ0KFx1MDAyNmluZm8tXHUwMDNlaXRlcik7XG4zNDA5Olx0XHQvKlxuMzQxMDpcdFx0ICogUmUtZGVsaXZlciB0aGUgZWxlbWVudCByZXR1cm5lZCBieSB3YWxrX25leHQoKSBhdCB0aGUgZW5kIG9mIHRoZVxuMzQxMTpcdFx0ICogcHJldmlvdXMgcmVhZCgpIOKAlCBicGZfc2VxX3JlYWQgbWF5IGhhdmUgc3RvcHBlZCBiZWZvcmUgc2hvdygpXG4zNDEyOlx0XHQgKiBjb25zdW1lZCBpdC4gUmVoYXNoIHJld2luZHMgdGhlIHdhbGtlcjsgcmV0cnkgb24gLUVBR0FJTi5cbjM0MTM6XHRcdCAqL1xuMzQxNDpcdFx0ZG8ge1xuMzQxNTpcdFx0XHRlbGVtID0gcmhhc2h0YWJsZV93YWxrX3BlZWsoXHUwMDI2aW5mby1cdTAwM2VpdGVyKTtcbjM0MTY6XHRcdH0gd2hpbGUgKFBUUl9FUlIoZWxlbSkgPT0gLUVBR0FJTik7XG4zNDE3Olx0XG4zNDE4Olx0XHRpZiAoSVNfRVJSKGVsZW0pKVxuMzQxOTpcdFx0XHRyZXR1cm4gTlVMTDtcbjM0MjA6XHRcbjM0MjE6XHRcdGlmIChlbGVtIFx1MDAyNlx1MDAyNiAqcG9zID09IDApXG4zNDIyOlx0XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzQyMzpcdFx0cmV0dXJuIGVsZW07XG4zNDI0Olx0fVxuMzQyNTpcdFxuMzQyNjpcdHN0YXRpYyB2b2lkICpicGZfcmhhc2hfbWFwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbjM0Mjc6XHR7XG4zNDI4Olx0XHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvICppbmZvID0gc2VxLVx1MDAzZXByaXZhdGU7XG4zNDI5Olx0XHRzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbTtcbjM0MzA6XHRcbjM0MzE6XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzQzMjpcdFxuMzQzMzpcdFx0LyogUmVoYXNoIHJld2luZHMgdGhlIHdhbGtlcjsgcmV0cnkgdW50aWwgaXQgc3RvcHMgcmV0dXJuaW5nIC1FQUdBSU4uICovXG4zNDM0Olx0XHRkbyB7XG4zNDM1Olx0XHRcdGVsZW0gPSByaGFzaHRhYmxlX3dhbGtfbmV4dChcdTAwMjZpbmZvLVx1MDAzZWl0ZXIpO1xuMzQzNjpcdFx0fSB3aGlsZSAoUFRSX0VSUihlbGVtKSA9PSAtRUFHQUlOKTtcbjM0Mzc6XHRcbjM0Mzg6XHRcdGlmIChJU19FUlIoZWxlbSkpXG4zNDM5Olx0XHRcdHJldHVybiBOVUxMO1xuMzQ0MDpcdFx0cmV0dXJuIGVsZW07XG4zNDQxOlx0fVxuMzQ0MjpcdFxuMzQ0MzpcdHN0YXRpYyBpbnQgX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuMzQ0NDpcdFx0XHRcdFx0ICAgIHN0cnVjdCByaHRhYl9lbGVtICplbGVtKVxuMzQ0NTpcdHtcbjM0NDY6XHRcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjM0NDc6XHRcdHN0cnVjdCBicGZfaXRlcl9fYnBmX21hcF9lbGVtIGN0eCA9IHt9O1xuMzQ0ODpcdFx0c3RydWN0IGJwZl9pdGVyX21ldGEgbWV0YTtcbjM0NDk6XHRcdHN0cnVjdCBicGZfcHJvZyAqcHJvZztcbjM0NTA6XHRcdGludCByZXQgPSAwO1xuMzQ1MTpcdFxuMzQ1MjpcdFx0bWV0YS5zZXEgPSBzZXE7XG4zNDUzOlx0XHRwcm9nID0gYnBmX2l0ZXJfZ2V0X2luZm8oXHUwMDI2bWV0YSwgZWxlbSA9PSBOVUxMKTtcbjM0NTQ6XHRcdGlmIChwcm9nKSB7XG4zNDU1Olx0XHRcdGN0eC5tZXRhID0gXHUwMDI2bWV0YTtcbjM0NTY6XHRcdFx0Y3R4Lm1hcCA9IGluZm8tXHUwMDNlbWFwO1xuMzQ1NzpcdFx0XHRpZiAoZWxlbSkge1xuMzQ1ODpcdFx0XHRcdGN0eC5rZXkgPSBlbGVtLVx1MDAzZWRhdGE7XG4zNDU5Olx0XHRcdFx0Y3R4LnZhbHVlID0gcmh0YWJfZWxlbV92YWx1ZShlbGVtLCBpbmZvLVx1MDAzZW1hcC1cdTAwM2VrZXlfc2l6ZSk7XG4zNDYwOlx0XHRcdH1cbjM0NjE6XHRcdFx0cmV0ID0gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXHUwMDI2Y3R4KTtcbjM0NjI6XHRcdH1cbjM0NjM6XHRcbjM0NjQ6XHRcdHJldHVybiByZXQ7XG4zNDY1Olx0fVxuMzQ2NjpcdFxuMzQ2NzpcdHN0YXRpYyBpbnQgYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbjM0Njg6XHR7XG4zNDY5Olx0XHRyZXR1cm4gX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHNlcSwgdik7XG4zNDcwOlx0fVxuMzQ3MTpcdFxuMzQ3MjpcdHN0YXRpYyB2b2lkIGJwZl9yaGFzaF9tYXBfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4zNDczOlx0XHRfX3JlbGVhc2VzKFJDVSlcbjM0NzQ6XHR7XG4zNDc1Olx0XHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvICppbmZvID0gc2VxLVx1MDAzZXByaXZhdGU7XG4zNDc2Olx0XG4zNDc3Olx0XHRpZiAoIXYpXG4zNDc4Olx0XHRcdCh2b2lkKV9fYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzZXEsIE5VTEwpO1xuMzQ3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4Nzg1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgTGluZWFnZSBvZiBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBiZWluZyB1c2VkIGFuZCB3aGVyZSBpdCYjMzk7cyBnZXR0aW5nIGl0cyB2YWx1ZXMgZnJvbS4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCwgb2YgY291cnNlLCBpcyB0byBmaW5kIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICphc3NpZ25lZCogb3IgZGVmaW5lZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgZm9yIGl0cyBhcHBsaWNhdGlvbiwgYW5kIEkgY2FuIHN0YXJ0IHRvIHJlYXNvbiBhYm91dCB0aGUgZmxvdyBvZiBkYXRhIGludG8gaXQuIEtub3dpbmcgaXRzIGFzc2lnbmVyIGlzIHRoZSBrZXkgdG8gYWxsIG9mIHRoaXMuIEkmIzM5O2xsIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcF9sb29rdXBfYmF0Y2guKnJodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTgwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBzdWJqZWN0LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkluc3BlY3RpbmcgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgKioKClJpZ2h0LCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSBhIGZldyB0aGluZ3MuICYjMzQ7QmF0Y2gmIzM0OyBzdWdnZXN0cyBhbiBvcHRpbWl6YXRpb24gZm9yIGhhbmRsaW5nIG11bHRpcGxlIGxvb2t1cHMgc2ltdWx0YW5lb3VzbHksIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UgZ2FpbnMgYnkgcmVkdWNpbmcgb3ZlcmhlYWQuICYjMzQ7TWFwJiMzNDsgaGludHMgYXQgYSBrZXktdmFsdWUgZGF0YSBzdHJ1Y3R1cmUsIHByb2JhYmx5IGEgaGFzaCBtYXAgb3Igc2ltaWxhci4gJiMzNDtSSHRhYiYjMzQ7IGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBzcGVjaWZpYywgYnV0IEkmIzM5O2xsIG5lZWQgdG8ga25vdyBtb3JlIGFib3V0IHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlIGl0IHJlcHJlc2VudHMuIEtub3dpbmcgdGhlIHByZWNpc2UgZGF0YSBzdHJ1Y3R1cmUgZm9ybWF0IGlzIGtleSBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gdGhhdCBJIGNhbiB0aGVuIGluZmVyIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGFsZ29yaXRobSBiZWluZyBkZXBsb3llZC4gSXMgaXQgbG9jay1mcmVlLCBjb25jdXJyZW50LXNhZmU/IFRoZSBkZXNpZ24gaGVyZSBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB1bmRlciBoaWdoIGxvYWQgYW5kIG11bHRpLXRocmVhZGVkIGFjY2Vzcy4gV2hhdCYjMzk7cyB0aGUgdHJhZGUtb2ZmIGluIHNwYWNlIHZlcnN1cyBzcGVlZD8gQXJlIHdlIG9wdGltaXppbmcgZm9yIG1lbW9yeSBsb2NhbGl0eT8gQXJlIHRoZXJlIHBvdGVudGlhbCBjYWNoZSBjb2hlcmVuY2UgaXNzdWVzPyBBcmUgdGhlcmUgZGlmZmVyZW50IGxvb2t1cCBzdHJhdGVnaWVzIGZvciBkaWZmZXJlbnQga2V5cz8gTGV0JiMzOTtzIGNoZWNrIHRoZSBjb2RlIGl0c2VsZiBhbmQvb3IgdGhlIGRvY3VtZW50YXRpb24gdG8gY2xhcmlmeSB0aGVzZSBwb2ludHMuIEkmIzM5O20gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGJhdGNoIG9wZXJhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5LiBXaGF0IGlzIHRoZSBiYXRjaGluZyBzdHJhdGVneT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGFueSBlZGdlIGNhc2VzLCBsaWtlIGVtcHR5IGJhdGNoZXMsIGFuZCB3aGF0IGhhcHBlbnMgd2hlbiBrZXlzIGFyZW4mIzM5O3QgZm91bmQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gd2l0aGluIHRoaXMgZnVuY3Rpb24sIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uIGEgbGFyZ2UgbnVtYmVyIG9mIGVsZW1lbnRzIGF0IG9uY2UuIEkgd2FudCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyaHRhYl9tYXBfbG9va3VwX2JhdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXHRcdFx0XHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1MjcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlVuYXNzaWduZWQgQlBGIERhdGEgU3RydWN0dXJlIC0gV2hlcmUmIzM5O3MgdGhlIExpbms/KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgdGhpcyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0JiMzOTtzIG5vdCBiZWluZyBleHBsaWNpdGx5IGFzc2lnbmVkIHRvIGFueSBwYXJ0aWN1bGFyIEJQRiBwcm9ncmFtIG9yIGNvbnRleHQuIFRoYXQgcmFpc2VzIGEgcmVkIGZsYWcuIEJlZm9yZSBqdW1waW5nIHRvIGNvbmNsdXNpb25zIGFib3V0IGxlYWtzIG9yIGRhbmdsaW5nIHJlZmVyZW5jZXMsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCB0aGUgaW50ZW5kZWQgbGlua2luZyBpc24mIzM5O3QgaGFwcGVuaW5nIHNvbWV3aGVyZSBvYnNjdXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgKmVuZCogb2YgYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gSXQmIzM5O3MgYSBjb21tb24gcGF0dGVybiBpbiB0aGUga2VybmVsIGZvciBsaW5raW5nIHRvIGhhcHBlbiBlaXRoZXIgaW5saW5lIGF0IHRoZSBwb2ludCBvZiBhbGxvY2F0aW9uIG9yLCBvY2Nhc2lvbmFsbHksIGp1c3QgYmVmb3JlIGBtb2R1bGVfZXhpdGAgb3IgYXQgdGhlIHRhaWwgZW5kIG9mIHRoZSByZWxldmFudCBmaWxlLiBJdCBjb3VsZCBiZSBwYXJ0IG9mIGEgaGVscGVyIGZ1bmN0aW9uIG9yIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgdGhhdCBJIGFtIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9sb29rdXBfYmF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVx0XHRcdFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipQb3RlbnRpYWwgUmVkdW5kYW5jeSBEZXRlY3RlZDogVW51c2VkIEZ1bmN0aW9uPyoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJJiMzOTttIHNlZWluZyBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgZGVmaW5lZCwgYnV0IGlzIGl0IGFjdHVhbGx5IGJlaW5nICp1c2VkKiBhbnl3aGVyZT8gVGhhdCYjMzk7cyBhIGNsYXNzaWMgY29kZSBzbWVsbCDigJMgcG90ZW50aWFsbHkgZGVhZCBjb2RlLCBhIGxlZnRvdmVyIGZyb20gYW4gZWFybGllciBpdGVyYXRpb24sIG9yIG1heWJlIGp1c3QgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBpbnRlbmRlZCB1c2FnZSB3YXMgbmV2ZXIgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQmIzM5O3Mgbm90IGp1bXAgdG8gY29uY2x1c2lvbnMsIHRob3VnaC4KCkZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCBgcmh0YWJfbWFwX29wc2AuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBtZWFudCB0byBiZSBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoYXQgc3RydWN0LiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IGlmIHRoZXJlJiMzOTtzIGFuIG9wZXJhdGlvbiBkaXNwYXRjaCBvciBzb21ldGhpbmcgc2ltaWxhciB1c2luZyB0aGlzIGZ1bmN0aW9uIHBvaW50ZXIuIElmIGl0JiMzOTtzIHRoZXJlIGFuZCBuZXZlciBjYWxsZWQsIHRoZW4gd2UgbWF5IGhhdmUgYW4gaXNzdWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyOTYKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpdmluZyBpbnRvIGByaHRhYl9tYXBfb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuICYjMzQ7TGV0JiMzOTtzIHJlYWQgYHJodGFiX21hcF9vcHNgLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGNvcmUgZm9jdXMgcmlnaHQgbm93LiBXaGF0JiMzOTtzIHRoZSBnb2FsPyBUbyB1bmRlcnN0YW5kIGl0LCBvZiBjb3Vyc2UuIFRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG9wZXJhdGlvbi4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSBuZWVkIHRvIGJlIGFibGUgdG8gbWFwIGFsbCB0aGUgdmFyaWFibGVzLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZW0gaW4gbXkgaGVhZCwgYW5kIEkmIzM5O20gc3VyZSBJJiMzOTtsbCBwcm9iYWJseSBiZSBtYWtpbmcgYSBtZW50YWwgbW9kZWwgYXMgSSBnby4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBub3ZlbCBhcHByb2FjaGVzLCBvcHRpbWl6YXRpb25zLCBwb3RlbnRpYWwgcGl0ZmFsbHMuIEFyZSB0aGVyZSBhbnkgY2xldmVyIHN5bmNocm9uaXphdGlvbiBzdHJhdGVnaWVzPyBXaGF0IGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zPyBIb3cgcm9idXN0IGlzIHRoZSBlcnJvciBoYW5kbGluZz8gTW9yZSBpbXBvcnRhbnRseSwgY2FuIEkgc2VlIHRoZSBwb3RlbnRpYWwgYm90dGxlbmVjaz8gVGhpcyBsaWtlbHkgaXNuJiMzOTt0IGEgc2ltcGxlIHJlYWQuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWV0aGluZyBudWFuY2VkLCBzb21ldGhpbmcgdGhhdCBoYXMgbGlrZWx5IGJlZW4gb3B0aW1pemVkIGZvciBwZXJmb3JtYW5jZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW4uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNTE1Olx0fTtcbjM1MTY6XHRcbjM1MTc6XHRCVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxuMzUxODpcdGNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xuMzUxOTpcdFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuMzUyMDpcdFx0Lm1hcF9hbGxvY19jaGVjayA9IHJodGFiX21hcF9hbGxvY19jaGVjayxcbjM1MjE6XHRcdC5tYXBfYWxsb2MgPSByaHRhYl9tYXBfYWxsb2MsXG4zNTIyOlx0XHQubWFwX2ZyZWUgPSByaHRhYl9tYXBfZnJlZSxcbjM1MjM6XHRcdC5tYXBfZ2V0X25leHRfa2V5ID0gcmh0YWJfbWFwX2dldF9uZXh0X2tleSxcbjM1MjQ6XHRcdC5tYXBfcmVsZWFzZV91cmVmID0gcmh0YWJfbWFwX2ZyZWVfaW50ZXJuYWxfc3RydWN0cyxcbjM1MjU6XHRcdC5tYXBfY2hlY2tfYnRmID0gcmh0YWJfbWFwX2NoZWNrX2J0ZixcbjM1MjY6XHRcdC5tYXBfbG9va3VwX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2VsZW0sXG4zNTI3Olx0XHQubWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0gPSByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfZWxlbSxcbjM1Mjg6XHRcdC5tYXBfdXBkYXRlX2VsZW0gPSByaHRhYl9tYXBfdXBkYXRlX2VsZW0sXG4zNTI5Olx0XHQubWFwX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2RlbGV0ZV9lbGVtLFxuMzUzMDpcdFx0Lm1hcF9nZW5fbG9va3VwID0gcmh0YWJfbWFwX2dlbl9sb29rdXAsXG4zNTMxOlx0XHQubWFwX3NlcV9zaG93X2VsZW0gPSByaHRhYl9tYXBfc2VxX3Nob3dfZWxlbSxcbjM1MzI6XHRcdC5tYXBfc2V0X2Zvcl9lYWNoX2NhbGxiYWNrX2FyZ3MgPSBtYXBfc2V0X2Zvcl9lYWNoX2NhbGxiYWNrX2FyZ3MsXG4zNTMzOlx0XHQubWFwX2Zvcl9lYWNoX2NhbGxiYWNrID0gYnBmX2VhY2hfcmhhc2hfZWxlbSxcbjM1MzQ6XHRcdC5tYXBfbWVtX3VzYWdlID0gcmh0YWJfbWFwX21lbV91c2FnZSxcbjM1MzU6XHRcdEJBVENIX09QUyhyaHRhYiksXG4zNTM2Olx0XHQubWFwX2J0Zl9pZCA9IFx1MDAyNnJodGFiX21hcF9idGZfaWRzWzBdLFxuMzUzNzpcdFx0Lml0ZXJfc2VxX2luZm8gPSBcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxuMzUzODpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTY3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqTmF2aWdhdGluZyB0aGUgYEJBVENIX09QU2AgTGFuZHNjYXBlKioKClJpZ2h0LCBgQkFUQ0hfT1BTKHJodGFiKWAuLi4gdGhhdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBpbiB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdmVyaWZ5IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgQkFUQ0hfT1BTYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdXAgdG8gc3BlZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBwZWVrIGF0IGl0cyBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCB0aGUgbW9zdCByZWNlbnQgY2hhbmdlcyBhcmUuIEhvcGVmdWxseSBpdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBCQVRDSF9PUFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYy0yNS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI2OiNkZWZpbmUgQkFUQ0hfT1BTKF9uYW1lKVx0XHRcdFxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNy1cdC5tYXBfbG9va3VwX2JhdGNoID1cdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQxOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gcmh0YWJfbWFwX29wcyoqCgpSaWdodCwgc28gSSBzZWUgdGhlc2UgZnVuY3Rpb25zLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBiZWluZyB1c2VkLiBIbW0sIHRoZXkmIzM5O3JlIGNsZWFybHkgcGFydCBvZiB0aGUgYHJodGFiX21hcF9vcHNgIHN0cnVjdHVyZSBvciBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBXaGF0IGV4YWN0bHkgKmlzKiBgcmh0YWJfbWFwX29wc2AgZGVzaWduZWQgZm9yPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBJcyBpdCBzb21lIHNvcnQgb2YgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgaGFzaCB0YWJsZSwgYSBrZXktdmFsdWUgc3RvcmUsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPyBUaGUgZmFjdCB0aGF0IGJhdGNoIG9wZXJhdGlvbnMgYXJlIHByZXNlbnQgc3VnZ2VzdHMgYSBkZXNpZ24gcHJpb3JpdGl6aW5nIGVmZmljaWVuY3kgZm9yIGEgbGFyZ2UgbnVtYmVyIG9mIGxvb2t1cHMgb3IgZGVsZXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSB1c2UgY2FzZSBvZiBgcmh0YWJfbWFwX29wc2Agd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2Ugc3BlY2lmaWMgYmF0Y2ggZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gd29yayB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSBpZiBJIGNhbiBmaW5kIGEgZGVmaW5pdGlvbiBvciBleGFtcGxlcyBvZiBob3cgYHJodGFiX21hcF9vcHNgIGlzIHVzZWQgZWxzZXdoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmh0YWJfbWFwX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGFzaHRhYi5jPTM1MTc9QlRGX0lEX0xJU1RfU0lOR0xFKHJodGFiX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9yaHRhYilcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zNTE5LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTg3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFja2luZyBEb3duIGEgRnVuY3Rpb24gQ2FsbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJodGFiX21hcF9vcHNgLi4uIEkga25vdyBpdCYjMzk7cyBwcm9iYWJseSBpbXBvcnRhbnQsIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCAqd2hlcmUqIHRoaXMgdGhpbmcgaXMgYWN0dWFsbHkgZ2V0dGluZyB1c2VkLiBLbm93aW5nIGl0cyBsb2NhdGlvbiBpcyB0aGUgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaC4gTGV0JiMzOTtzIHNlZS4uLiB3aGVyZSBkb2VzIHRoZSBjb2RlICphY3R1YWxseSogaW52b2tlIGByaHRhYl9tYXBfb3BzYD8gSSBuZWVkIHRvIGZpbmQgdGhlIHJlZmVyZW5jZXMgdG8gaXQgYmVmb3JlIEkgY2FuIGZpZ3VyZSBvdXQgaXRzIHNpZ25pZmljYW5jZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzdGFydCBzZWFyY2hpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGZfdHlwZXMuaD0xMzY9QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLCBpbnNuX2FycmF5X21hcF9vcHMpXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaC0xMzgtXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUxODpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MTktXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjc4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IEJQRiBSSEFTSCBCYXRjaCBPcGVyYXRpb25zKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgbW9kaWZpY2F0aW9uIHRvIGBCUEZfTUFQX1RZUEVfUkhBU0hgLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBpdHMgYmF0Y2ggbG9va3VwIGFuZCBkZWxldGUgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmc/IEFic29sdXRlbHksIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBiZWhhdmUsIHNvIHRoYXQmIzM5O3MgYSBkZWZpbml0ZSB5ZXMuCgpUaGUgY29yZSBmb2N1cyBmb3IgbWUgaGVyZSBpcyB0aGUgZnVuY3Rpb24gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoYXQuIEhtbSwgYnV0IGl0JiMzOTtzIG1hcmtlZCBhcyBgc3RhdGljYC4gQ2FuIHN5emthbGxlciBldmVuIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgdGhhdCBpcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyBpdCYjMzk7cyB3aXRoaW4gdGhlIGtlcm5lbCBpbWFnZS4KCkhvd2V2ZXIsIEkmIzM5O20gbm93IHNlY29uZC1ndWVzc2luZyBteXNlbGYgYSBiaXQuIFdvdWxkIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIHByb3ZpZGluZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludD8gSSYjMzk7bGwgc3RpY2sgd2l0aCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGZvciBub3cuCgpCZWZvcmUgZGl2aW5nIGRlZXBlciwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBhbnkgQlBGLXJlbGF0ZWQgd29yaywgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBCUEZfTUFQX1RZUEVfUkhBU0hgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZW1hbmQgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gZWxpbWluYXRlIGFueSBkZXBlbmRlbmN5IGlzc3VlcyBmaXJzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlBGX01BUF9UWVBFX1JIQVNIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3R5cGVzLmg9MTM2PUJQRl9NQVBfVFlQRShCUEZfTUFQX1RZUEVfSU5TTl9BUlJBWSwgaW5zbl9hcnJheV9tYXBfb3BzKVxuaW5jbHVkZS9saW51eC9icGZfdHlwZXMuaDoxMzc6QlBGX01BUF9UWVBFKEJQRl9NQVBfVFlQRV9SSEFTSCwgcmh0YWJfbWFwX29wcylcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDAwPWVudW0gYnBmX21hcF90eXBlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA0OS1cdEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwNTA6XHRCUEZfTUFQX1RZUEVfUkhBU0gsXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA1MS1cdF9fTUFYX0JQRl9NQVBfVFlQRVxuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1Ny1cdFx0ICpcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxNTU4Olx0XHQgKiBCUEZfTUFQX1RZUEVfUkhBU0ggLSBpbml0aWFsIHRhYmxlIHNpemUgaGludFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE1NTktXHRcdCAqIChuZWxlbV9oaW50KS4gMCA9IHVzZSByaGFzaHRhYmxlIGRlZmF1bHQuIE11c3QgYmVcbi0tXG5rZXJuZWwvYnBmL21hcF9pdGVyLmM9MTAwPXN0YXRpYyBpbnQgYnBmX2l0ZXJfYXR0YWNoX21hcChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9tYXBfaXRlci5jLTEyNi1cdFx0IG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQVJSQVkgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL21hcF9pdGVyLmM6MTI3Olx0XHQgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSClcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xMjgtXHRcdGdvdG8gcHV0X21hcDtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQ0PXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMjg4LVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEyODk6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyOTAtXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUlJBWSBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzAzLVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMDQ6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEzMDUtXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9MUlVfSEFTSCBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzE1LVx0XHRcdFx0aWYgKG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMTY6XHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEzMTctXHRcdFx0XHQgICAgbWFwLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcxPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwOS1cdCAgICBhdHRyLVx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUkVOQSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MTA6XHQgICAgYXR0ci1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDExLVx0ICAgIGF0dHItXHUwMDNlbWFwX2V4dHJhICE9IDApIHtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgxLVx0Y2FzZSBCUEZfTUFQX1RZUEVfSEFTSDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0ODI6XHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0ODMtXHRjYXNlIEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSDpcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Mi1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9MUlVfUEVSQ1BVX0hBU0ggfHxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIyNzM6XHRcdCAgIG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0ggfHxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTIyNzQtXHRcdCAgIG1hcC1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU1RBQ0tfVFJBQ0UpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTc3NDY9c3RhdGljIGludCBjaGVja19tYXBfcHJvZ19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkyLVx0XHRjYXNlIEJQRl9NQVBfVFlQRV9IQVNIOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzkzOlx0XHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NC1cdFx0Y2FzZSBCUEZfTUFQX1RZUEVfTFJVX0hBU0g6XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwMDA9ZW51bSBicGZfbWFwX3R5cGUge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDQ5LVx0QlBGX01BUF9UWVBFX0lOU05fQVJSQVksXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTA1MDpcdEJQRl9NQVBfVFlQRV9SSEFTSCxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDUxLVx0X19NQVhfQlBGX01BUF9UWVBFXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xuLS1cbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU3LVx0XHQgKlxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE1NTg6XHRcdCAqIEJQRl9NQVBfVFlQRV9SSEFTSCAtIGluaXRpYWwgdGFibGUgc2l6ZSBoaW50XG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1OS1cdFx0ICogKG5lbGVtX2hpbnQpLiAwID0gdXNlIHJoYXNodGFibGUgZGVmYXVsdC4gTXVzdCBiZVxuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmM9MTYzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWFwX3R5cGVfbmFtZVtdID0ge1xuLS1cbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTk4LVx0W0JQRl9NQVBfVFlQRV9JTlNOX0FSUkFZXVx0XHQ9IFwmIzM0O2luc25fYXJyYXlcJiMzNDssXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjE5OTpcdFtCUEZfTUFQX1RZUEVfUkhBU0hdXHRcdFx0PSBcJiMzNDtyaGFzaFwmIzM0OyxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMjAwLX07XG4tLVxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MjkyPXN0YXRpYyBpbnQgcHJvYmVfbWFwX2NyZWF0ZShlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcbi0tXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYy0zMTEtXHRcdGJyZWFrO1xudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM6MzEyOlx0Y2FzZSBCUEZfTUFQX1RZUEVfUkhBU0g6XG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYy0zMTMtXHRcdG9wdHMubWFwX2ZsYWdzXHQ9IEJQRl9GX05PX1BSRUFMTE9DO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYz0zNz1zdGF0aWMgdm9pZCBoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYy01MC1cdGJwZl9tYXBfX3NldF90eXBlKGN0eC5za2VsLVx1MDAzZW1hcHMuaGFzaF9tYXBfYmVuY2gsIG1hcF90eXBlKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYzo1MTpcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtNTItXHRcdGJwZl9tYXBfX3NldF9tYXBfZmxhZ3MoY3R4LnNrZWwtXHUwMDNlbWFwcy5oYXNoX21hcF9iZW5jaCxcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM9ODA9c3RhdGljIHZvaWQgcmhhc2hfc2V0dXAodm9pZClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYy04MS17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM6ODI6XHRoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtODMtfVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MTUxPXN0YXRpYyB2b2lkIGhhc2htYXBfbG9va3VwX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMTY3LVx0bWFwX2ZsYWdzID0gYXJncy5tYXBfZmxhZ3M7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjE2ODpcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTE2OS1cdFx0bWFwX2ZsYWdzIHw9IEJQRl9GX05PX1BSRUFMTE9DO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MjExPXN0YXRpYyB2b2lkIHJoYXNoX3NldHVwKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTIxMi17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjIxMzpcdGhhc2htYXBfbG9va3VwX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTIxNC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jPTE1NT1zdGF0aWMgdm9pZCBodGFiX21lbV9zZXR1cF9pbXBsKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYy0xODQtXHRicGZfbWFwX19zZXRfbWF4X2VudHJpZXMobWFwLCBNQVgoODE5MiwgNjQgKiBlbnYubnJfY3B1cykpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jOjE4NTpcdGlmIChtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXHUwMDI2XHUwMDI2IGFyZ3MucHJlYWxsb2NhdGVkKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jLTE4Ni1cdFx0YnBmX21hcF9fc2V0X21hcF9mbGFncyhtYXAsIGJwZl9tYXBfX21hcF9mbGFncyhtYXApIFx1MDAyNiB+QlBGX0ZfTk9fUFJFQUxMT0MpO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYz0yMjk9c3RhdGljIHZvaWQgcmh0YWJfbWVtX3NldHVwKHZvaWQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMwLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYzoyMzE6XHRodGFiX21lbV9zZXR1cF9pbXBsKEJQRl9NQVBfVFlQRV9SSEFTSCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMyLX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jPTQ2PXN0YXRpYyBpbnQgcmhhc2hfbWFwX2NyZWF0ZShfX3UzMiBtYXhfZW50cmllcywgX191NjQgbWFwX2V4dHJhKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmMtNTEtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jOjUyOlx0cmV0dXJuIGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9SSEFTSCwgXCYjMzQ7cmhhc2hfZXh0cmFcJiMzNDssXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUzLVx0XHRcdCAgICAgIHNpemVvZihfX3UzMiksIHNpemVvZihfX3U2NCksIG1heF9lbnRyaWVzLCBcdTAwMjZvcHRzKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jPTg9c3RydWN0IHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9icGZfaXRlcl9icGZfcmhhc2hfbWFwLmM6OTpcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUkhBU0gpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX2JwZl9yaGFzaF9tYXAuYy0xMC1cdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX05PX1BSRUFMTE9DKTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvcmhhc2guYz0yMj1zdHJ1Y3Qge1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3JoYXNoLmM6MjM6XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1JIQVNIKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jLTI0LVx0X191aW50KG1hcF9mbGFncywgQlBGX0ZfTk9fUFJFQUxMT0MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjIxNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYEJQRl9NQVBfVFlQRV9SSEFTSGAgTWFwIFR5cGUqKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYEJQRl9NQVBfVFlQRV9SSEFTSGAgaGVyZS4gUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXQmIzM5O3MganVzdCB0aGF0IG1hcCB0eXBlIGl0c2VsZi4gU2VlbXMgbGlrZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBzaG91bGQgYmUgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgSSBuZWVkIHRvIHdvcnJ5IGFib3V0LiBCdXQgaG9sZCBvbiBhIHNlY29uZOKApiBJIHRoaW5rIEkgcmVtZW1iZXIgYEJQRl9NQVBfVFlQRV9SSEFTSGAgYmVpbmcgYSBuZXdlciBhZGRpdGlvbiwgb3IgcGVyaGFwcyBpdCYjMzk7cyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSBzaG91bGQgcmVhbGx5IHZlcmlmeSB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGVuYWJsZSBvciByZWxhdGUgdG8gdGhpcyBwYXJ0aWN1bGFyIG1hcCB0eXBlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBjb25maWcgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9NQVBfVFlQRV9SSEFTSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTMzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQlBGIEhhc2h0YWJsZSBEaXZlKioKCkFscmlnaHQsIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIHVzZSBvZiBgcmh0YWJfbWFwX29wc2Agd2l0aGluIHRoZSBCUEYgaGFzaHRhYmxlIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyDigJMgeW91IGtub3csIHRob3NlIHBlc2t5IGAjaWZkZWZgIHN0YXRlbWVudHMuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGFueSBibG9ja3Mgb2YgY29kZSB0aGF0IG1pZ2h0IGJlIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGJhc2VkIG9uIHNvbWUgYnVpbGQtdGltZSBmbGFnIHJlbGF0ZWQgdG8gYHJodGFiX21hcF9vcHNgLiBUaGlzIHdpbGwgdGVsbCBtZSBpZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgY29uZGl0aW9uYWxseSBlbmFibGVkLiBNeSBoeXBvdGhlc2lzIGlzIHRoaXMgaXMgcHJvYmFibHkgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgYWN0aXZlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JodGFiX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCAtIExpbmUgMzUxOCoqCgpBbHJpZ2h0LCBteSBicmFpbiBpcyBzYXlpbmcsICYjMzQ7VGltZSB0byBmb2N1cy4mIzM0OyBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDM1MTggaW4gdGhlIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGxpbmUgY29udGFpbnMgc29tZXRoaW5nIHNpZ25pZmljYW50IG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgYSBjcml0aWNhbCBqdW5jdHVyZSBpbiB0aGUgYWxnb3JpdGhtIG9yIGRhdGEgc3RydWN0dXJlIG1hbmFnZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGFyb3VuZCB0aGF0IHBvaW50LiBUaGlzIGNvdWxkIGJlIHdoZXJlIHdlJiMzOTtyZSBleHBlcmllbmNpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBhIHBvdGVudGlhbCBidWcsIGEgY3JpdGljYWwgZGF0YSBsb29rdXAsIG9yIG1heWJlIGp1c3Qgc29tZSBpbnRlcmVzdGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSYjMzk7dmUgYmVlbiBtZWFuaW5nIHRvIGV4YW1pbmUuIExldCBtZSBnbyBmaW5kIHRoYXQgbGluZSBhbmQgZ2V0IHRvIHRoZSBib3R0b20gb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBqb3VybmV5IGJlZ2lucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hhc2h0YWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzUwMDpcdFx0YnBmX21hcF9wdXRfd2l0aF91cmVmKGluZm8tXHUwMDNlbWFwKTtcbjM1MDE6XHR9XG4zNTAyOlx0XG4zNTAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBicGZfcmhhc2hfbWFwX3NlcV9vcHMgPSB7XG4zNTA0Olx0XHQuc3RhcnQgPSBicGZfcmhhc2hfbWFwX3NlcV9zdGFydCxcbjM1MDU6XHRcdC5uZXh0ID0gYnBmX3JoYXNoX21hcF9zZXFfbmV4dCxcbjM1MDY6XHRcdC5zdG9wID0gYnBmX3JoYXNoX21hcF9zZXFfc3RvcCxcbjM1MDc6XHRcdC5zaG93ID0gYnBmX3JoYXNoX21hcF9zZXFfc2hvdyxcbjM1MDg6XHR9O1xuMzUwOTpcdFxuMzUxMDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2l0ZXJfc2VxX2luZm8gcmhhc2hfaXRlcl9zZXFfaW5mbyA9IHtcbjM1MTE6XHRcdC5zZXFfb3BzID0gXHUwMDI2YnBmX3JoYXNoX21hcF9zZXFfb3BzLFxuMzUxMjpcdFx0LmluaXRfc2VxX3ByaXZhdGUgPSBicGZfaXRlcl9pbml0X3JoYXNoX21hcCxcbjM1MTM6XHRcdC5maW5pX3NlcV9wcml2YXRlID0gYnBmX2l0ZXJfZmluaV9yaGFzaF9tYXAsXG4zNTE0Olx0XHQuc2VxX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvKSxcbjM1MTU6XHR9O1xuMzUxNjpcdFxuMzUxNzpcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXG4zNTE4Olx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XG4zNTE5Olx0XHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG4zNTIwOlx0XHQubWFwX2FsbG9jX2NoZWNrID0gcmh0YWJfbWFwX2FsbG9jX2NoZWNrLFxuMzUyMTpcdFx0Lm1hcF9hbGxvYyA9IHJodGFiX21hcF9hbGxvYyxcbjM1MjI6XHRcdC5tYXBfZnJlZSA9IHJodGFiX21hcF9mcmVlLFxuMzUyMzpcdFx0Lm1hcF9nZXRfbmV4dF9rZXkgPSByaHRhYl9tYXBfZ2V0X25leHRfa2V5LFxuMzUyNDpcdFx0Lm1hcF9yZWxlYXNlX3VyZWYgPSByaHRhYl9tYXBfZnJlZV9pbnRlcm5hbF9zdHJ1Y3RzLFxuMzUyNTpcdFx0Lm1hcF9jaGVja19idGYgPSByaHRhYl9tYXBfY2hlY2tfYnRmLFxuMzUyNjpcdFx0Lm1hcF9sb29rdXBfZWxlbSA9IHJodGFiX21hcF9sb29rdXBfZWxlbSxcbjM1Mjc6XHRcdC5tYXBfbG9va3VwX2FuZF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtLFxuMzUyODpcdFx0Lm1hcF91cGRhdGVfZWxlbSA9IHJodGFiX21hcF91cGRhdGVfZWxlbSxcbjM1Mjk6XHRcdC5tYXBfZGVsZXRlX2VsZW0gPSByaHRhYl9tYXBfZGVsZXRlX2VsZW0sXG4zNTMwOlx0XHQubWFwX2dlbl9sb29rdXAgPSByaHRhYl9tYXBfZ2VuX2xvb2t1cCxcbjM1MzE6XHRcdC5tYXBfc2VxX3Nob3dfZWxlbSA9IHJodGFiX21hcF9zZXFfc2hvd19lbGVtLFxuMzUzMjpcdFx0Lm1hcF9zZXRfZm9yX2VhY2hfY2FsbGJhY2tfYXJncyA9IG1hcF9zZXRfZm9yX2VhY2hfY2FsbGJhY2tfYXJncyxcbjM1MzM6XHRcdC5tYXBfZm9yX2VhY2hfY2FsbGJhY2sgPSBicGZfZWFjaF9yaGFzaF9lbGVtLFxuMzUzNDpcdFx0Lm1hcF9tZW1fdXNhZ2UgPSByaHRhYl9tYXBfbWVtX3VzYWdlLFxuMzUzNTpcdFx0QkFUQ0hfT1BTKHJodGFiKSxcbjM1MzY6XHRcdC5tYXBfYnRmX2lkID0gXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXG4zNTM3Olx0XHQuaXRlcl9zZXFfaW5mbyA9IFx1MDAyNnJoYXNoX2l0ZXJfc2VxX2luZm8sXG4zNTM4Olx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgwMzkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA0MDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgU3VtbWFyeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIGZvciBmdXp6aW5nIHB1cnBvc2VzLiBUaGVyZSBhcmUgbm8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyAoYCNpZmRlZmBzKSB0byB3b3JyeSBhYm91dCBoZXJlLCBzbyBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIHNldHRpbmcuIFRoYXQgc2ltcGxpZmllcyB0aGluZ3MgYSBsb3QuCgpIZXJlJiMzOTtzIG15IGRpc3RpbGxlZCBzdW1tYXJ5IG9mIHRoZSBzaXR1YXRpb246CgoqICAgKipXb3J0aEZ1enppbmcqKjogRGVmaW5pdGVseSB0cnVlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWx0ZXJpbmcgY29yZSBrZXJuZWwgbG9naWMuCiogICAqKkZvY3VzU3ltYm9scyoqOiBNeSBwcmltYXJ5IHRhcmdldCB3aWxsIGJlIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAuCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgYXMgZXhwZWN0ZWQuCiogICAqKlJlYXNvbmluZyoqOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgY2FsbHMgd2l0aGluIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBpbnRlbmRlZCB0byByZXNvbHZlIHBvdGVudGlhbCBkZWFkbG9ja3MgdGhhdCBjYW4gb2NjdXIgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBpbnZva2VkIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdGhhdCB0aGlzIG1vZGlmaWVzIGtlcm5lbCBsb2dpYyB0aGF0JiMzOTtzIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IGl0IGludm9sdmVzIEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGAuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciBmdW5jdGlvbiB2aXNpYmlsaXR5LiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGlzIGEgKnN0YXRpYyogZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAgYW5kIGByaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGFyZSBhbHNvIHN0YXRpYy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBhc3NpZ25lZCB0byBgcmh0YWJfbWFwX29wc2AgdmlhIGBCQVRDSF9PUFMocmh0YWIpYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBUaGV5IGJlY29tZSByZWFjaGFibGUgdGhyb3VnaCBgc3lzX2JwZmAgd2l0aCBgQlBGX01BUF9MT09LVVBfQkFUQ0hgIGFuZCBgQlBGX01BUF9MT09LVVBfQU5EX0RFTEVURV9CQVRDSGAgY29tbWFuZHMgYXBwbGllZCB0byBhIGBCUEZfTUFQX1RZUEVfUkhBU0hgIG1hcC4gU3l6a2FsbGVyIGNhbiBoYW5kbGUgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5IGVuZCB1cCBpbiB0aGUga2VybmVsIGltYWdlLCBzbyBJJiMzOTttIGNvbmZpZGVudCBJIGNhbiB0YXJnZXQgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBkaXJlY3RseS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga2VybmVsL2JwZi9oYXNodGFiLmNgIGlzIGluZGVlZCBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFzaHRhYi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MTcwCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIENvbmZpcm1hdGlvbiBhbmQgQWN0aW9uIFBsYW4qKgoKWWVzLCB0aGF0JiMzOTtzIHRoZSByaWdodCBkaXJlY3Rpb24uIE9rYXksIGxldCYjMzk7cyBjcnlzdGFsbGl6ZSB0aGlzIGRlY2lzaW9uIGFuZCBhc3NpZ24gdGhlIGFwcHJvcHJpYXRlIGxhYmVsIHRvIGl0LiBJJiMzOTtsbCBuZWVkIGEgd2F5IHRvIHRyYWNrIHRoaXMsIHNvIEkgd2lsbCBuYW1lIHRoZSBtZXRob2Qgb3IgdmFyaWFibGUgdGhhdCBJJiMzOTttIGdvaW5nIHRvIHVzZSBhcyBgc2V0LXJlc3VsdHNgLiBUaGF0IG5hbWluZyBjb252ZW50aW9uIGFjY3VyYXRlbHkgZGVzY3JpYmVzIGl0cyBmdW5jdGlvbiBhbmQgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZWNhbGwgbGF0ZXIgd2hlbiBJIG5lZWQgdG8gcmVmZXJlbmNlIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOTozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCB0byBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGRlYWRsb2NrcyB3aGVuIEJQRiBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zIGZvciBgQlBGX01BUF9UWVBFX1JIQVNIYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzE6NDYuMjE2OTQ3NDQ0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNjU2MTAyOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCB0byBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIGRlYWRsb2NrcyB3aGVuIEJQRiBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHdpdGhpbiBCUEYgbWFwIG9wZXJhdGlvbnMuIEl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zIGZvciBgQlBGX01BUF9UWVBFX1JIQVNIYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjMxOjQ2LjIxNjk1OTA0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjExMzcwNjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2I0N2QxYjZiOGYwZmE4ZWU4YjFjMGJmMTg5ZTIzZDJiMTk3ZjU5Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxOTozMTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuaW5kZXggOWYzOTRlMWFhMmU4NWIuLmQzZjJmOGEzNzllODZhIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuKysrIGIva2VybmVsL2JwZi9oYXNodGFiLmNcXG5AQCAtMzI5OSw2ICszMjk5LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbiBcXHRkc3RfdmFsID0gdmFsdWVzO1xcbiBcXHR0b3RhbCA9IDA7XFxuIFxcbitcXHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXG4gXFx0LypcXG5AQCAtMzMxMyw2ICszMzE0LDcgQEAgc3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbiBcXHRcXHRlbGVtID0gcmh0YWJfbG9va3VwX2VsZW0obWFwLCBjdXJzb3IpO1xcbiBcXHRcXHRpZiAoIWVsZW0pIHtcXG4gXFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcdFxcdFxcdGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxuIFxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuIFxcdFxcdFxcdGdvdG8gZnJlZTtcXG4gXFx0XFx0fVxcbkBAIC0zMzUwLDYgKzMzNTIsNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuIFxcdH1cXG4gXFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbiBcXG4gXFx0aWYgKHRvdGFsID09IDApIHtcXG4gXFx0XFx0cmV0ID0gLUVOT0VOVDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzE6NDYuODMxNTkyNjU0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEwNDE0Mzc3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjQ3ZDFiNmI4ZjBmYThlZThiMWMwYmYxODllMjNkMmIxOTdmNTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6MzE6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXG5pbmRleCA5ZjM5NGUxYWEyZTg1Yi4uZDNmMmY4YTM3OWU4NmEgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuKysrIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbkBAIC0zMjk5LDYgKzMyOTksNyBAQCBzdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXG4gXHRkc3RfdmFsID0gdmFsdWVzO1xuIFx0dG90YWwgPSAwO1xuIFxuK1x0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXG4gXHQvKlxuQEAgLTMzMTMsNiArMzMxNCw3IEBAIHN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbiBcdFx0ZWxlbSA9IHJodGFiX2xvb2t1cF9lbGVtKG1hcCwgY3Vyc29yKTtcbiBcdFx0aWYgKCFlbGVtKSB7XG4gXHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRcdFx0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcdFx0XHRyZXQgPSAtRUFHQUlOO1xuIFx0XHRcdGdvdG8gZnJlZTtcbiBcdFx0fVxuQEAgLTMzNTAsNiArMzM1Miw3IEBAIHN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcbiBcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0YnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcbiBcbiBcdGlmICh0b3RhbCA9PSAwKSB7XG4gXHRcdHJldCA9IC1FTk9FTlQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMTo0Ni44MzE1OTc4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTQwMjM3NDk5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgQlBGIEluc3RydW1lbnRhdGlvbiBJc3N1ZSoqXG5cblJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFyb3VuZCBhIHNwZWNpZmljIGNvZGUgc2VjdGlvbi4gVGhlIHRhcmdldCBpcyB0aGUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBmdW5jdGlvbiwgbG9jYXRlZCB3aXRoaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgd2h5ICp0aGlzKiBmdW5jdGlvbj8gV2hhdCdzIHRoZSBjb250ZXh0IGZvciBzdXNwZWN0aW5nIGEgbmVlZCB0byBkaXNhYmxlIGluc3RydW1lbnRhdGlvbiBhcm91bmQgdGhpcyBwYXJ0aWN1bGFyIGJpdCBvZiBsb2dpYz9cIiBUaGlzIHRlbGxzIG1lIHRoZXJlJ3MgcG90ZW50aWFsbHkgYSBwZXJmb3JtYW5jZSBvciBpbnN0cnVtZW50YXRpb24tcmVsYXRlZCBpc3N1ZSBzdXJmYWNpbmcuICBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIHBvdGVudGlhbCBjcml0aWNhbCBzZWN0aW9uIG5lZWRpbmcgcHJvdGVjdGlvbj8gSXMgdGhlcmUgYSBrbm93biBpbnRlcmFjdGlvbiB3aXRoIEJQRiBpbnN0cnVtZW50YXRpb24gdGhhdCdzIGNhdXNpbmcgcHJvYmxlbXM/IE15IGV4cGVydGlzZSBraWNrcyBpbiDigJMgSSBjYW4gcXVpY2tseSBzdGFydCB0byBhbmFseXplIHRoZSBmdW5jdGlvbidzIGNvZGUgZmxvdyBhbmQgZGV0ZXJtaW5lIHdoZXJlIGluc3RydW1lbnRhdGlvbiBtaWdodCBiZSBjb25mbGljdGluZy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGJhdGNoIGxvb2t1cC9kZWxldGUgb3BlcmF0aW9uIGludGVyYWN0cyB3aXRoIEJQRiBwcm9ncmFtcyBhbmQgdGhlaXIgcG90ZW50aWFsIGltcGFjdCBvbiBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGxldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDAyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMjowMi4yMzQwMDc5MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3NDkxNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyMzU9c3RhdGljIHU2NCByaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMjQ0LVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMyNDU6c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMyNDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MzM4ND1zdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg2LXtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg3OlxcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4OC19XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMzkwPXN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM5Mi17XFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM5MzpcXHRyZXR1cm4gX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2gobWFwLCBhdHRyLCB1YXR0ciwgdHJ1ZSk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM5NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjMyOjAyLjY2MTUyNjYxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjk2MjYzODk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBJbnN0cnVtZW50YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgYW5kIGBicGZfZW5hYmxlX2luc3RydW1lbnRhdGlvbigpYCBjYWxscyB3aXRoaW4gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gSW50ZXJlc3RpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgbGlrZWx5IHJlbGF0ZXMgdG8gY29udHJvbGxpbmcgdGhlIHRyYWNpbmcgb3IgcHJvZmlsaW5nIG92ZXJoZWFkIGFzc29jaWF0ZWQgd2l0aCBCUEYgbWFwIG9wZXJhdGlvbnMuIFNwZWNpZmljYWxseSwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW5kaXJlY3RseSB0aHJvdWdoIGJvdGggYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCwgd2hpY2ggYXJlIGNvcmUgZnVuY3Rpb25zIGZvciBiYXRjaCBsb29rdXBzIGluLCBwcmVzdW1hYmx5LCBhIHJhZGl4IGhhc2ggdGFibGUgKHJodGFiKS4gTWFrZXMgc2Vuc2UgdGhhdCBiYXRjaCBvcGVyYXRpb25zIG1pZ2h0IGJlIGNhbmRpZGF0ZXMgZm9yIGluc3RydW1lbnRhdGlvbiBjb250cm9sIOKAkyB3ZSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGFsd2F5cyBiZSBwYXlpbmcgdGhlIGNvc3QuXG5cbkJ1dCwgSSBuZWVkIG1vcmUgY29udGV4dC4gSSBkb24ndCBrbm93IHRoZSBleGFjdCBzZW1hbnRpY3Mgb2YgdGhvc2UgaW5zdHJ1bWVudGF0aW9uIGZ1bmN0aW9ucyBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBwYXJ0aWN1bGFybHkgd2hlbiB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggQlBGIG1hcHMuIExldCBtZSBkaWcgaW50byB0aGUgZGVmaW5pdGlvbnMgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb250cm9sIHRoZSBCUEYgbWFwJ3MgYmVoYXZpb3VyIGluIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozMzo1OS42MjQxNzA1NjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NDAyMTEzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MjY2MT1leHRlcm4gc3RydWN0IG11dGV4IGJwZl9zdGF0c19lbmFibGVkX211dGV4O1xcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjY4LSAqL1xcbmluY2x1ZGUvbGludXgvYnBmLmg6MjY2OTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKHZvaWQpXFxuaW5jbHVkZS9saW51eC9icGYuaC0yNjcwLXtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTE3NzM9X19odGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMTg0NC1hZ2FpbjpcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoxODQ1OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTE4NDYtXFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9Mjk0MD1zdGF0aWMgaW50IHJodGFiX2RlbGV0ZV9lbGVtKHN0cnVjdCBicGZfcmh0YWIgKnJodGFiLCBzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbSwgdm9pZCAqY29weSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI5NDctXFx0ICogcmhhc2h0YWJsZSBsb2NrcyBidWNrZXQgd2l0aCBsb2NhbF9pcnFfc2F2ZSgpLiBPbmx5IE5NSSBwcm9ncmFtcyBtYXkgcmVlbnRlclxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI5NDg6XFx0ICogcmhhc2h0YWJsZSBjb2RlLCBicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKSBkaXNhYmxlcyBwcm9ncmFtcyBydW5uaW5nIGluIE5NSSwgZXhjZXB0XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk0OS1cXHQgKiByYXcgdHJhY2Vwb2ludHMsIHdoaWNoIHdlIGRvbid0IGhhdmUgaW4gcmhhc2h0YWJsZS5cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yOTUwLVxcdCAqL1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI5NTE6XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjk1Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTMwMzQ9c3RhdGljIGxvbmcgcmh0YWJfbWFwX3VwZGF0ZV9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsIHU2NCBtYXBfZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMDczLVxcdC8qIFByZXZlbnQgZGVhZGxvY2sgZm9yIE5NSSBwcm9ncmFtcyBhdHRlbXB0aW5nIHRvIHRha2UgYnVja2V0IGxvY2sgKi9cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMDc0OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMwNzUtXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzMDEtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzMwMjpcXHRicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24oKTtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzAzLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MT1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI3MC1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyNzE6XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjcyLVxcdGlmIChtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9QRVJDUFVfSEFTSCB8fFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA5PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMTctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzE4OlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTMxOS1cXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0hBU0ggfHxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE4OTc9c3RhdGljIGludCBtYXBfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTkzMi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxOTMzOlxcdGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE5MzQtXFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjAwNj1pbnQgZ2VuZXJpY19tYXBfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMDQ0LVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIwNDU6XFx0XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjA0Ni1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0yMjEzPXN0YXRpYyBpbnQgbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0odW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yMjc1LVxcdFxcdGlmICghYnBmX21hcF9pc19vZmZsb2FkZWQobWFwKSkge1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjIyNzY6XFx0XFx0XFx0YnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Ny1cXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jPTI5PWludCBicGZfcHJvZzEoc3RydWN0IHB0X3JlZ3MgKmN0eClcXG4tLVxcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmMtNTAtICogU2luY2UgKl9tYXBfbG9va3VwX2VsZW0gY2FuJ3QgYmUgZXhwZWN0ZWQgdG8gdHJpZ2dlciBicGYgcHJvZ3JhbXNcXG5zYW1wbGVzL2JwZi90cmFjZXg2LmJwZi5jOjUxOiAqIGR1ZSB0byBwb3RlbnRpYWwgZGVhZGxvY2tzIChicGZfZGlzYWJsZV9pbnN0cnVtZW50YXRpb24pLCB0aGlzIGJwZlxcbnNhbXBsZXMvYnBmL3RyYWNleDYuYnBmLmMtNTItICogcHJvZ3JhbSB3aWxsIGJlIGF0dGFjaGVkIHRvIGJwZl9tYXBfY29weV92YWx1ZSAod2hpY2ggaXMgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjA1LjEwODIwMTk0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NDY4MzIzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQgaW5jcmVtZW50cyBhIHBlci1DUFUgY291bnRlciwgc29tZXRoaW5nIGxpa2UgYGJwZl9wcm9nX2FjdGl2ZWAsIGFuZCB0aGF0IHRoaXMgaXMgZGVzaWduZWQgdG8gc3RvcCBCUEYgcHJvZ3JhbXMgZnJvbSBydW5uaW5nLiBJdCdzIHVzZWQgdG8gcHJldmVudCBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHRpZWQgdG8gZnVuY3Rpb25zIGNhbGxlZCBmcm9tIEJQRiBtYXAgb3BlcmF0aW9ucy4gUmlnaHQsIGRlYWRsb2NrIHByZXZlbnRpb24uXG5cbldhaXQsIGlzIHRoaXMgYWN0dWFsbHkgYSBmdW5jdGlvbmFsIGNoYW5nZT8gSXQgZG9lcyBwcmV2ZW50IGRlYWRsb2NrcyB3aGVuIHdlJ3JlIHRyYWNpbmcgQlBGIG1hcCBvcGVyYXRpb25zLCBzbyB5ZXMsIGl0ICppcyogY2hhbmdpbmcgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4gTm93IEknbSB0aGlua2luZywgZG9lcyB0aGlzIG5lY2Vzc2l0YXRlIGZ1enppbmc/XG5cbkl0J3MgdGVtcHRpbmcgdG8gZGlzbWlzcyBpdC4gSXQgKmlzKiBqdXN0IGEgZGVhZGxvY2sgcHJldmVudGlvbiBtZWNoYW5pc20uIEl0J3Mgbm90IGFkZGluZyBuZXcgZmVhdHVyZXMgb3IgbG9naWMgdGhhdCBhIGZ1enplciB3b3VsZCB0eXBpY2FsbHkgbGF0Y2ggb250by4gQnV0IGhvbGQgb24uLi4gaWYgaXQncyBmaXhpbmcgYSBkZWFkbG9jaywgdGhhdCAqaXMqIGEgYnVnIGZpeC4gU28gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz9cblxuTGV0J3Mgc2VlLCB3aGF0IGRvZXMgdGhlIG9mZmljaWFsIGd1aWRhbmNlIHNheT8gQWgsIHJpZ2h0LiBJdCBzYXlzIGl0J3Mgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIHBhdGNoIG9ubHkgaW5jbHVkZXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcgY2hhbmdlcywgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBjaGFuZ2UgZXhlY3V0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuXG5UaGlzIGZ1bmN0aW9uICpkb2VzKiBtb2RpZnkgY29yZSBrZXJuZWwgbG9naWMgdGhhdCAqaXMqIHJlYWNoYWJsZSwgc3BlY2lmaWNhbGx5IHByZXZlbnRpbmcgQlBGIHByb2dyYW1zIGZyb20gcnVubmluZy4gSXQgKmRlZmluaXRlbHkqIGNoYW5nZXMgZXhlY3V0aW9uIGZsb3cuIE5vdyB0aGUgcXVlc3Rpb24gaXMsIGV2ZW4gaWYgaXQncyBmaXhpbmcgYSBkZWFkbG9jaywgaXMgdGhhdCB3b3J0aCBmdXp6aW5nPyBGdXp6aW5nIG1pZ2h0IG5vdCBmaW5kIGFueXRoaW5nIG5ldywgd2hpY2ggaXMgYSB3YXN0ZSBvZiB0aW1lLCBidXQgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5Pa2F5LCBsZXQncyBzZWUuIE5lZWQgdG8gY2hlY2sgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbmAgaW4gYGluY2x1ZGUvbGludXgvYnBmLmhgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjExLjU1NTAzNzA5MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NjA6XFx0REVDTEFSRV9QRVJfQ1BVKGludCwgYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjYxOlxcdGV4dGVybiBzdHJ1Y3QgbXV0ZXggYnBmX3N0YXRzX2VuYWJsZWRfbXV0ZXg7XFxuMjY2MjpcXHRcXG4yNjYzOlxcdC8qXFxuMjY2NDpcXHQgKiBCbG9jayBleGVjdXRpb24gb2YgQlBGIHByb2dyYW1zIGF0dGFjaGVkIHRvIGluc3RydW1lbnRhdGlvbiAocGVyZixcXG4yNjY1OlxcdCAqIGtwcm9iZXMsIHRyYWNlcG9pbnRzKSB0byBwcmV2ZW50IGRlYWRsb2NrcyBvbiBtYXAgb3BlcmF0aW9ucyBhcyBhbnkgb2ZcXG4yNjY2OlxcdCAqIHRoZXNlIGV2ZW50cyBjYW4gaGFwcGVuIGluc2lkZSBhIHJlZ2lvbiB3aGljaCBob2xkcyBhIG1hcCBidWNrZXQgbG9ja1xcbjI2Njc6XFx0ICogYW5kIGNhbiBkZWFkbG9jayBvbiBpdC5cXG4yNjY4OlxcdCAqL1xcbjI2Njk6XFx0c3RhdGljIGlubGluZSB2b2lkIGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbih2b2lkKVxcbjI2NzA6XFx0e1xcbjI2NzE6XFx0XFx0bWlncmF0ZV9kaXNhYmxlKCk7XFxuMjY3MjpcXHRcXHR0aGlzX2NwdV9pbmMoYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjczOlxcdH1cXG4yNjc0OlxcdFxcbjI2NzU6XFx0c3RhdGljIGlubGluZSB2b2lkIGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKHZvaWQpXFxuMjY3NjpcXHR7XFxuMjY3NzpcXHRcXHR0aGlzX2NwdV9kZWMoYnBmX3Byb2dfYWN0aXZlKTtcXG4yNjc4OlxcdFxcdG1pZ3JhdGVfZW5hYmxlKCk7XFxuMjY3OTpcXHR9XFxuMjY4MDpcXHRcXG4yNjgxOlxcdGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyBicGZfc3VwZXJfb3BzO1xcbjI2ODI6XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX21hcF9mb3BzO1xcbjI2ODM6XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYnBmX3Byb2dfZm9wcztcXG4yNjg0OlxcdGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGJwZl9pdGVyX2ZvcHM7XFxuMjY4NTpcXHRleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBicGZfdG9rZW5fZm9wcztcXG4yNjg2OlxcdFxcbjI2ODc6XFx0I2RlZmluZSBCUEZfUFJPR19UWVBFKF9pZCwgX25hbWUsIHByb2dfY3R4X3R5cGUsIGtlcm5fY3R4X3R5cGUpIFxcXFxcXG4yNjg4OlxcdFxcdGV4dGVybiBjb25zdCBzdHJ1Y3QgYnBmX3Byb2dfb3BzIF9uYW1lICMjIF9wcm9nX29wczsgXFxcXFxcbjI2ODk6XFx0XFx0ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicGZfdmVyaWZpZXJfb3BzIF9uYW1lICMjIF92ZXJpZmllcl9vcHM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM0OjExLjU1NTI5NDg0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMjYxMzAwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTdHJhdGVneSBmb3IgQlBGIE1hcCBCYXRjaCBPcGVyYXRpb25zKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgZGlzYWJsZXMgbWlncmF0aW9uIGFuZCBpbmNyZW1lbnRzIGBicGZfcHJvZ19hY3RpdmVgLiBUaGF0J3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgc2hpZnQuIFRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgaXQgZG9lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIG1hcCBiYXRjaCBvcGVyYXRpb25zLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSBpdCdzIHJvYnVzdC5cblxuTGV0J3MgZm9jdXMgdGhlIGZ1enppbmcgb24gc3BlY2lmaWMgc3ltYm9scy4gSSBuZWVkIHRvIHRhcmdldCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgLCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAsIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC4gV2FpdCBhIHNlY29uZOKApiBpc24ndCBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIHN0YXRpYz8gVGhhdCdzIGEgcG90ZW50aWFsIHNuYWcuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBiZWZvcmUgSSBwdXQgdG9vIG11Y2ggZWZmb3J0IGludG8gZnV6emluZyBpdC4gV2UgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCBzdGF0aWMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgdXNlZCwgYW5kIHRoYXQgaXQncyB3b3J0aCB0aGUgdGltZSB0byBmdXp6IGl0LCBiZWZvcmUgd2UgaW5jbHVkZSBpdCBpbiB0aGUgZnV6emluZyBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDoxNS42ODE0MzA4MjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjAwNzA3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MTYuMTYzNDUwMDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NjQ2NjU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY29kZS5cblxuKipJbnZlc3RpZ2F0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBVc2FnZSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgLiBUbyBkbyB0aGF0LCBJIG5lZWQgdG8gaW1tZWRpYXRlbHkgdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBXaGF0J3MgdXBzdHJlYW0gb2YgaXQ/IFdoYXQncyBkb3duc3RyZWFtPyBXaGF0IHByb2Nlc3NlcyBhcmUgcmVseWluZyBvbiBpdHMgcmVzdWx0cz8gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgaW5zdGFuY2Ugb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXMgYSBxdWljayBidXQgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyBvZiBpdHMgcm9sZS4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlIHdoZW4gSSdtIGRlYWxpbmcgd2l0aCB1bmZhbWlsaWFyIGNvZGUsIGVzcGVjaWFsbHkgd2l0aCBzdWNoIGEgcG90ZW50aWFsbHkgY2VudHJhbCBmdW5jdGlvbiBuYW1lLiBMZXQncyBzZWUgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDoxOS40NDk5MTk3ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDQ5MDQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MTkuNTUwNDIxODA4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NTE2MjkzNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBc3Nlc3NpbmcgVGFzayBBc3NpZ25tZW50IGluIGEgQ29tcGxleCBTeXN0ZW0qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGFzc2lnbm1lbnQuIFdoZXJlIGV4YWN0bHkgaXMgdGhpcyB0YXNrLCB0aGlzIG9wZXJhdGlvbiwgbWFwcGVkIHdpdGhpbiB0aGUgc3lzdGVtPyBJIGNhbid0IGp1c3QganVtcCBpbnRvIHNvbHV0aW9ucyB3aXRob3V0IGtub3dpbmcgdGhlIG9yaWdpbmF0aW5nIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdGhlIFwibWFwIG9wcyxcIiBhcyBpbiwgdGhlIG9wZXJhdGlvbmFsIG1hcHBpbmcgb3IgdGhlIHRhc2sgYXNzaWdubWVudHMuIFVuZGVyc3RhbmRpbmcgdGhlIGFzc2lnbm1lbnQgc2NoZW1lIGlzIGNyaXRpY2FsIGJlZm9yZSBJIGRldGVybWluZSBhbnl0aGluZyBlbHNlLiBLbm93aW5nIHRoZSBvcmlnaW5hdGluZyBjb250ZXh0IHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIG90aGVyd2lzZSBJIGNvdWxkIGJlIGFkZHJlc3NpbmcgdGhlIHdyb25nIGlzc3VlLCBvciBldmVuIG1ha2luZyB0aGUgc3lzdGVtIHdvcnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzMzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6MzYuMDY2NzE4ODFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTQzOTM4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX2xvb2t1cF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmM9MzI0NT1zdGF0aWMgaW50IF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzgzLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjMzODQ6c3RhdGljIGludCByaHRhYl9tYXBfbG9va3VwX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODUtXFx0XFx0XFx0XFx0ICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNDozOS4wODExMjQ1NTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MzAzNjEzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQlBGIEhhc2h0YWJsZSBMb2NhdGlvbiBTZWFyY2gqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQgZ2V0cyBhc3NpZ25lZCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgY29kZS4gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgYXNzaWdubWVudCBwcm9jZXNzIGlzIHR1Y2tlZCBhd2F5IHdpdGhpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBJdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZywgY29uc2lkZXJpbmcgdGhhdCBmaWxlJ3Mgc3BlY2lmaWMgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBoYXNodGFibGUgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBCUEYgc3Vic3lzdGVtLiBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gb3Igc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTAuNTExNDkwNzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMzgwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM4MDpcXHRcXHRrdmZyZWUoZGVsX2VsZW1zKTtcXG4zMzgxOlxcdFxcdHJldHVybiByZXQ7XFxuMzM4MjpcXHR9XFxuMzM4MzpcXHRcXG4zMzg0OlxcdHN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG4zMzg1OlxcdFxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG4zMzg2OlxcdHtcXG4zMzg3OlxcdFxcdHJldHVybiBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChtYXAsIGF0dHIsIHVhdHRyLCBmYWxzZSk7XFxuMzM4ODpcXHR9XFxuMzM4OTpcXHRcXG4zMzkwOlxcdHN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKHN0cnVjdCBicGZfbWFwICptYXAsIGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLFxcbjMzOTE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1bmlvbiBicGZfYXR0ciBfX3VzZXIgKnVhdHRyKVxcbjMzOTI6XFx0e1xcbjMzOTM6XFx0XFx0cmV0dXJuIF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoKG1hcCwgYXR0ciwgdWF0dHIsIHRydWUpO1xcbjMzOTQ6XFx0fVxcbjMzOTU6XFx0XFxuMzM5NjpcXHRzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvIHtcXG4zMzk3OlxcdFxcdHN0cnVjdCBicGZfbWFwICptYXA7XFxuMzM5ODpcXHRcXHRzdHJ1Y3QgYnBmX3JodGFiICpyaHRhYjtcXG4zMzk5OlxcdFxcdHN0cnVjdCByaGFzaHRhYmxlX2l0ZXIgaXRlcjtcXG4zNDAwOlxcdH07XFxuMzQwMTpcXHRcXG4zNDAyOlxcdHN0YXRpYyB2b2lkICpicGZfcmhhc2hfbWFwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuMzQwMzpcXHRcXHRfX2FjcXVpcmVzKFJDVSlcXG4zNDA0OlxcdHtcXG4zNDA1OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzQwNjpcXHRcXHRzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbTtcXG4zNDA3OlxcdFxcbjM0MDg6XFx0XFx0cmhhc2h0YWJsZV93YWxrX3N0YXJ0KFxcdTAwMjZpbmZvLVxcdTAwM2VpdGVyKTtcXG4zNDA5OlxcdFxcdC8qXFxuMzQxMDpcXHRcXHQgKiBSZS1kZWxpdmVyIHRoZSBlbGVtZW50IHJldHVybmVkIGJ5IHdhbGtfbmV4dCgpIGF0IHRoZSBlbmQgb2YgdGhlXFxuMzQxMTpcXHRcXHQgKiBwcmV2aW91cyByZWFkKCkg4oCUIGJwZl9zZXFfcmVhZCBtYXkgaGF2ZSBzdG9wcGVkIGJlZm9yZSBzaG93KClcXG4zNDEyOlxcdFxcdCAqIGNvbnN1bWVkIGl0LiBSZWhhc2ggcmV3aW5kcyB0aGUgd2Fsa2VyOyByZXRyeSBvbiAtRUFHQUlOLlxcbjM0MTM6XFx0XFx0ICovXFxuMzQxNDpcXHRcXHRkbyB7XFxuMzQxNTpcXHRcXHRcXHRlbGVtID0gcmhhc2h0YWJsZV93YWxrX3BlZWsoXFx1MDAyNmluZm8tXFx1MDAzZWl0ZXIpO1xcbjM0MTY6XFx0XFx0fSB3aGlsZSAoUFRSX0VSUihlbGVtKSA9PSAtRUFHQUlOKTtcXG4zNDE3OlxcdFxcbjM0MTg6XFx0XFx0aWYgKElTX0VSUihlbGVtKSlcXG4zNDE5OlxcdFxcdFxcdHJldHVybiBOVUxMO1xcbjM0MjA6XFx0XFxuMzQyMTpcXHRcXHRpZiAoZWxlbSBcXHUwMDI2XFx1MDAyNiAqcG9zID09IDApXFxuMzQyMjpcXHRcXHRcXHQrKypwb3M7XFxuMzQyMzpcXHRcXHRyZXR1cm4gZWxlbTtcXG4zNDI0OlxcdH1cXG4zNDI1OlxcdFxcbjM0MjY6XFx0c3RhdGljIHZvaWQgKmJwZl9yaGFzaF9tYXBfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbjM0Mjc6XFx0e1xcbjM0Mjg6XFx0XFx0c3RydWN0IGJwZl9pdGVyX3NlcV9yaGFzaF9tYXBfaW5mbyAqaW5mbyA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zNDI5OlxcdFxcdHN0cnVjdCByaHRhYl9lbGVtICplbGVtO1xcbjM0MzA6XFx0XFxuMzQzMTpcXHRcXHQrKypwb3M7XFxuMzQzMjpcXHRcXG4zNDMzOlxcdFxcdC8qIFJlaGFzaCByZXdpbmRzIHRoZSB3YWxrZXI7IHJldHJ5IHVudGlsIGl0IHN0b3BzIHJldHVybmluZyAtRUFHQUlOLiAqL1xcbjM0MzQ6XFx0XFx0ZG8ge1xcbjM0MzU6XFx0XFx0XFx0ZWxlbSA9IHJoYXNodGFibGVfd2Fsa19uZXh0KFxcdTAwMjZpbmZvLVxcdTAwM2VpdGVyKTtcXG4zNDM2OlxcdFxcdH0gd2hpbGUgKFBUUl9FUlIoZWxlbSkgPT0gLUVBR0FJTik7XFxuMzQzNzpcXHRcXG4zNDM4OlxcdFxcdGlmIChJU19FUlIoZWxlbSkpXFxuMzQzOTpcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4zNDQwOlxcdFxcdHJldHVybiBlbGVtO1xcbjM0NDE6XFx0fVxcbjM0NDI6XFx0XFxuMzQ0MzpcXHRzdGF0aWMgaW50IF9fYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4zNDQ0OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgcmh0YWJfZWxlbSAqZWxlbSlcXG4zNDQ1OlxcdHtcXG4zNDQ2OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9zZXFfcmhhc2hfbWFwX2luZm8gKmluZm8gPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzQ0NzpcXHRcXHRzdHJ1Y3QgYnBmX2l0ZXJfX2JwZl9tYXBfZWxlbSBjdHggPSB7fTtcXG4zNDQ4OlxcdFxcdHN0cnVjdCBicGZfaXRlcl9tZXRhIG1ldGE7XFxuMzQ0OTpcXHRcXHRzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7XFxuMzQ1MDpcXHRcXHRpbnQgcmV0ID0gMDtcXG4zNDUxOlxcdFxcbjM0NTI6XFx0XFx0bWV0YS5zZXEgPSBzZXE7XFxuMzQ1MzpcXHRcXHRwcm9nID0gYnBmX2l0ZXJfZ2V0X2luZm8oXFx1MDAyNm1ldGEsIGVsZW0gPT0gTlVMTCk7XFxuMzQ1NDpcXHRcXHRpZiAocHJvZykge1xcbjM0NTU6XFx0XFx0XFx0Y3R4Lm1ldGEgPSBcXHUwMDI2bWV0YTtcXG4zNDU2OlxcdFxcdFxcdGN0eC5tYXAgPSBpbmZvLVxcdTAwM2VtYXA7XFxuMzQ1NzpcXHRcXHRcXHRpZiAoZWxlbSkge1xcbjM0NTg6XFx0XFx0XFx0XFx0Y3R4LmtleSA9IGVsZW0tXFx1MDAzZWRhdGE7XFxuMzQ1OTpcXHRcXHRcXHRcXHRjdHgudmFsdWUgPSByaHRhYl9lbGVtX3ZhbHVlKGVsZW0sIGluZm8tXFx1MDAzZW1hcC1cXHUwMDNla2V5X3NpemUpO1xcbjM0NjA6XFx0XFx0XFx0fVxcbjM0NjE6XFx0XFx0XFx0cmV0ID0gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXFx1MDAyNmN0eCk7XFxuMzQ2MjpcXHRcXHR9XFxuMzQ2MzpcXHRcXG4zNDY0OlxcdFxcdHJldHVybiByZXQ7XFxuMzQ2NTpcXHR9XFxuMzQ2NjpcXHRcXG4zNDY3OlxcdHN0YXRpYyBpbnQgYnBmX3JoYXNoX21hcF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4zNDY4OlxcdHtcXG4zNDY5OlxcdFxcdHJldHVybiBfX2JwZl9yaGFzaF9tYXBfc2VxX3Nob3coc2VxLCB2KTtcXG4zNDcwOlxcdH1cXG4zNDcxOlxcdFxcbjM0NzI6XFx0c3RhdGljIHZvaWQgYnBmX3JoYXNoX21hcF9zZXFfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4zNDczOlxcdFxcdF9fcmVsZWFzZXMoUkNVKVxcbjM0NzQ6XFx0e1xcbjM0NzU6XFx0XFx0c3RydWN0IGJwZl9pdGVyX3NlcV9yaGFzaF9tYXBfaW5mbyAqaW5mbyA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zNDc2OlxcdFxcbjM0Nzc6XFx0XFx0aWYgKCF2KVxcbjM0Nzg6XFx0XFx0XFx0KHZvaWQpX19icGZfcmhhc2hfbWFwX3NlcV9zaG93KHNlcSwgTlVMTCk7XFxuMzQ3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTAuNTExNzg1MDM0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NTQyNTI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIExpbmVhZ2Ugb2YgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBiZWluZyB1c2VkIGFuZCB3aGVyZSBpdCdzIGdldHRpbmcgaXRzIHZhbHVlcyBmcm9tLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwLCBvZiBjb3Vyc2UsIGlzIHRvIGZpbmQgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmFzc2lnbmVkKiBvciBkZWZpbmVkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBmb3IgaXRzIGFwcGxpY2F0aW9uLCBhbmQgSSBjYW4gc3RhcnQgdG8gcmVhc29uIGFib3V0IHRoZSBmbG93IG9mIGRhdGEgaW50byBpdC4gS25vd2luZyBpdHMgYXNzaWduZXIgaXMgdGhlIGtleSB0byBhbGwgb2YgdGhpcy4gSSdsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc4NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTMuMzY2MDQxNzQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDk5OTU5NDM3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYXBfbG9va3VwX2JhdGNoLipyaHRhYl9tYXBfbG9va3VwX2JhdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzQ6NTYuNDY2MDE5OTQxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNTY2NzY1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGlzIHN1YmplY3QsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjpcblxuKipJbnNwZWN0aW5nIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCoqXG5cblJpZ2h0LCBgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaGAuIFRoYXQgZnVuY3Rpb24gbmFtZSBhbG9uZSB0ZWxscyBtZSBhIGZldyB0aGluZ3MuIFwiQmF0Y2hcIiBzdWdnZXN0cyBhbiBvcHRpbWl6YXRpb24gZm9yIGhhbmRsaW5nIG11bHRpcGxlIGxvb2t1cHMgc2ltdWx0YW5lb3VzbHksIGxpa2VseSBmb3IgcGVyZm9ybWFuY2UgZ2FpbnMgYnkgcmVkdWNpbmcgb3ZlcmhlYWQuIFwiTWFwXCIgaGludHMgYXQgYSBrZXktdmFsdWUgZGF0YSBzdHJ1Y3R1cmUsIHByb2JhYmx5IGEgaGFzaCBtYXAgb3Igc2ltaWxhci4gXCJSSHRhYlwiIGlzIGludGVyZXN0aW5nOyBpdCdzIHNwZWNpZmljLCBidXQgSSdsbCBuZWVkIHRvIGtub3cgbW9yZSBhYm91dCB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZSBpdCByZXByZXNlbnRzLiBLbm93aW5nIHRoZSBwcmVjaXNlIGRhdGEgc3RydWN0dXJlIGZvcm1hdCBpcyBrZXkgaGVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gdGhhdCBJIGNhbiB0aGVuIGluZmVyIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGFsZ29yaXRobSBiZWluZyBkZXBsb3llZC4gSXMgaXQgbG9jay1mcmVlLCBjb25jdXJyZW50LXNhZmU/IFRoZSBkZXNpZ24gaGVyZSBoYXMgaW1wbGljYXRpb25zIGZvciBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSB1bmRlciBoaWdoIGxvYWQgYW5kIG11bHRpLXRocmVhZGVkIGFjY2Vzcy4gV2hhdCdzIHRoZSB0cmFkZS1vZmYgaW4gc3BhY2UgdmVyc3VzIHNwZWVkPyBBcmUgd2Ugb3B0aW1pemluZyBmb3IgbWVtb3J5IGxvY2FsaXR5PyBBcmUgdGhlcmUgcG90ZW50aWFsIGNhY2hlIGNvaGVyZW5jZSBpc3N1ZXM/IEFyZSB0aGVyZSBkaWZmZXJlbnQgbG9va3VwIHN0cmF0ZWdpZXMgZm9yIGRpZmZlcmVudCBrZXlzPyBMZXQncyBjaGVjayB0aGUgY29kZSBpdHNlbGYgYW5kL29yIHRoZSBkb2N1bWVudGF0aW9uIHRvIGNsYXJpZnkgdGhlc2UgcG9pbnRzLiBJJ20gYWxzbyBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGJhdGNoIG9wZXJhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5LiBXaGF0IGlzIHRoZSBiYXRjaGluZyBzdHJhdGVneT8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzIGFuZCBob3cgYXJlIHRoZXkgaGFuZGxlZD8gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGFueSBlZGdlIGNhc2VzLCBsaWtlIGVtcHR5IGJhdGNoZXMsIGFuZCB3aGF0IGhhcHBlbnMgd2hlbiBrZXlzIGFyZW4ndCBmb3VuZC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGEgbGFyZ2UgbnVtYmVyIG9mIGVsZW1lbnRzIGF0IG9uY2UuIEkgd2FudCB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBhbmQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTgwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MTAuMDMyNzkxNjAxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI5NzEyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJodGFiX21hcF9sb29rdXBfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTMyNDU9c3RhdGljIGludCBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4My1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozMzg0OnN0YXRpYyBpbnQgcmh0YWJfbWFwX2xvb2t1cF9iYXRjaChzdHJ1Y3QgYnBmX21hcCAqbWFwLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zMzg1LVxcdFxcdFxcdFxcdCAgdW5pb24gYnBmX2F0dHIgX191c2VyICp1YXR0cilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MTIuNzYyNTEzMjU0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODcwOTMzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVW5hc3NpZ25lZCBCUEYgRGF0YSBTdHJ1Y3R1cmUgLSBXaGVyZSdzIHRoZSBMaW5rPyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gSSBzZWUgdGhpcyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0J3Mgbm90IGJlaW5nIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8gYW55IHBhcnRpY3VsYXIgQlBGIHByb2dyYW0gb3IgY29udGV4dC4gVGhhdCByYWlzZXMgYSByZWQgZmxhZy4gQmVmb3JlIGp1bXBpbmcgdG8gY29uY2x1c2lvbnMgYWJvdXQgbGVha3Mgb3IgZGFuZ2xpbmcgcmVmZXJlbmNlcywgbGV0J3MgdmVyaWZ5IHRoYXQgdGhlIGludGVuZGVkIGxpbmtpbmcgaXNuJ3QgaGFwcGVuaW5nIHNvbWV3aGVyZSBvYnNjdXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgKmVuZCogb2YgYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gSXQncyBhIGNvbW1vbiBwYXR0ZXJuIGluIHRoZSBrZXJuZWwgZm9yIGxpbmtpbmcgdG8gaGFwcGVuIGVpdGhlciBpbmxpbmUgYXQgdGhlIHBvaW50IG9mIGFsbG9jYXRpb24gb3IsIG9jY2FzaW9uYWxseSwganVzdCBiZWZvcmUgYG1vZHVsZV9leGl0YCBvciBhdCB0aGUgdGFpbCBlbmQgb2YgdGhlIHJlbGV2YW50IGZpbGUuIEl0IGNvdWxkIGJlIHBhcnQgb2YgYSBoZWxwZXIgZnVuY3Rpb24gb3IgaW5pdGlhbGl6YXRpb24gcm91dGluZSB0aGF0IEkgYW0gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUyNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjE2LjA0OTYxMjA4MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTcwMTAzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX2xvb2t1cF9iYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuYz0zMjQ1PXN0YXRpYyBpbnQgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTMzODMtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzM4NDpzdGF0aWMgaW50IHJodGFiX21hcF9sb29rdXBfYmF0Y2goc3RydWN0IGJwZl9tYXAgKm1hcCwgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzM4NS1cXHRcXHRcXHRcXHQgIHVuaW9uIGJwZl9hdHRyIF9fdXNlciAqdWF0dHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjE2LjE0NjYzMDcxMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTE3ODE4MzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipQb3RlbnRpYWwgUmVkdW5kYW5jeSBEZXRlY3RlZDogVW51c2VkIEZ1bmN0aW9uPyoqXG5cbk9rYXksIGhvbGQgb24gYSBtaW51dGUuIEknbSBzZWVpbmcgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGRlZmluZWQsIGJ1dCBpcyBpdCBhY3R1YWxseSBiZWluZyAqdXNlZCogYW55d2hlcmU/IFRoYXQncyBhIGNsYXNzaWMgY29kZSBzbWVsbCDigJMgcG90ZW50aWFsbHkgZGVhZCBjb2RlLCBhIGxlZnRvdmVyIGZyb20gYW4gZWFybGllciBpdGVyYXRpb24sIG9yIG1heWJlIGp1c3QgYSBzdWJ0bGUgYnVnIHdoZXJlIHRoZSBpbnRlbmRlZCB1c2FnZSB3YXMgbmV2ZXIgaW1wbGVtZW50ZWQuIEkgbmVlZCB0byBiZSBzdXJlLiBMZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucywgdGhvdWdoLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGxvb2sgYXQgYHJodGFiX21hcF9vcHNgLiBJdCdzIGxpa2VseSB0aGF0IGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBpcyBtZWFudCB0byBiZSBhIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIHRoYXQgc3RydWN0LiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IGlmIHRoZXJlJ3MgYW4gb3BlcmF0aW9uIGRpc3BhdGNoIG9yIHNvbWV0aGluZyBzaW1pbGFyIHVzaW5nIHRoaXMgZnVuY3Rpb24gcG9pbnRlci4gSWYgaXQncyB0aGVyZSBhbmQgbmV2ZXIgY2FsbGVkLCB0aGVuIHdlIG1heSBoYXZlIGFuIGlzc3VlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTEzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzEuMzI0ODE4MjY1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1NzU3NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmh0YWJfbWFwX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuYz0zNTE3PUJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MzUxODpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0zNTE5LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzEuNDYwNDA1MDgyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNTYxNDE2MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6XG5cbioqRGl2aW5nIGludG8gYHJodGFiX21hcF9vcHNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiTGV0J3MgcmVhZCBgcmh0YWJfbWFwX29wc2AuXCIgVGhhdCdzIHRoZSBjb3JlIGZvY3VzIHJpZ2h0IG5vdy4gV2hhdCdzIHRoZSBnb2FsPyBUbyB1bmRlcnN0YW5kIGl0LCBvZiBjb3Vyc2UuIFRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIG9wZXJhdGlvbi4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aWVzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gYmUgYWJsZSB0byBtYXAgYWxsIHRoZSB2YXJpYWJsZXMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlbSBpbiBteSBoZWFkLCBhbmQgSSdtIHN1cmUgSSdsbCBwcm9iYWJseSBiZSBtYWtpbmcgYSBtZW50YWwgbW9kZWwgYXMgSSBnby5cblxuSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgb2Ygbm92ZWwgYXBwcm9hY2hlcywgb3B0aW1pemF0aW9ucywgcG90ZW50aWFsIHBpdGZhbGxzLiBBcmUgdGhlcmUgYW55IGNsZXZlciBzeW5jaHJvbml6YXRpb24gc3RyYXRlZ2llcz8gV2hhdCBhYm91dCBtZW1vcnkgbWFuYWdlbWVudCBjb25zaWRlcmF0aW9ucz8gSG93IHJvYnVzdCBpcyB0aGUgZXJyb3IgaGFuZGxpbmc/IE1vcmUgaW1wb3J0YW50bHksIGNhbiBJIHNlZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2s/IFRoaXMgbGlrZWx5IGlzbid0IGEgc2ltcGxlIHJlYWQuIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIG51YW5jZWQsIHNvbWV0aGluZyB0aGF0IGhhcyBsaWtlbHkgYmVlbiBvcHRpbWl6ZWQgZm9yIHBlcmZvcm1hbmNlLiBJdCdzIHRpbWUgdG8gZGlnIGluLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzQuODE2NTUxMzIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTM4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTE1OlxcdH07XFxuMzUxNjpcXHRcXG4zNTE3OlxcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxuMzUxODpcXHRjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG4zNTE5OlxcdFxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG4zNTIwOlxcdFxcdC5tYXBfYWxsb2NfY2hlY2sgPSByaHRhYl9tYXBfYWxsb2NfY2hlY2ssXFxuMzUyMTpcXHRcXHQubWFwX2FsbG9jID0gcmh0YWJfbWFwX2FsbG9jLFxcbjM1MjI6XFx0XFx0Lm1hcF9mcmVlID0gcmh0YWJfbWFwX2ZyZWUsXFxuMzUyMzpcXHRcXHQubWFwX2dldF9uZXh0X2tleSA9IHJodGFiX21hcF9nZXRfbmV4dF9rZXksXFxuMzUyNDpcXHRcXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxuMzUyNTpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxuMzUyNjpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbjM1Mjc6XFx0XFx0Lm1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0sXFxuMzUyODpcXHRcXHQubWFwX3VwZGF0ZV9lbGVtID0gcmh0YWJfbWFwX3VwZGF0ZV9lbGVtLFxcbjM1Mjk6XFx0XFx0Lm1hcF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9kZWxldGVfZWxlbSxcXG4zNTMwOlxcdFxcdC5tYXBfZ2VuX2xvb2t1cCA9IHJodGFiX21hcF9nZW5fbG9va3VwLFxcbjM1MzE6XFx0XFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcmh0YWJfbWFwX3NlcV9zaG93X2VsZW0sXFxuMzUzMjpcXHRcXHQubWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzID0gbWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzLFxcbjM1MzM6XFx0XFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9lYWNoX3JoYXNoX2VsZW0sXFxuMzUzNDpcXHRcXHQubWFwX21lbV91c2FnZSA9IHJodGFiX21hcF9tZW1fdXNhZ2UsXFxuMzUzNTpcXHRcXHRCQVRDSF9PUFMocmh0YWIpLFxcbjM1MzY6XFx0XFx0Lm1hcF9idGZfaWQgPSBcXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXFxuMzUzNzpcXHRcXHQuaXRlcl9zZXFfaW5mbyA9IFxcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxcbjM1Mzg6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6MzQuODE2ODQ2NjUzWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzY1Nzk5MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKk5hdmlnYXRpbmcgdGhlIGBCQVRDSF9PUFNgIExhbmRzY2FwZSoqXG5cblJpZ2h0LCBgQkFUQ0hfT1BTKHJodGFiKWAuLi4gdGhhdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgcGFydCBvZiB0aGUgc3lzdGVtLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCdzIGdvaW5nIG9uIHdpdGggYEJBVENIX09QU2AuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdXAgdG8gc3BlZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBwZWVrIGF0IGl0cyBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCB0aGUgbW9zdCByZWNlbnQgY2hhbmdlcyBhcmUuIEhvcGVmdWxseSBpdCdzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE2NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzU6NDYuMTgyNjUwOTA4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU0MTUzNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBCQVRDSF9PUFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmMtMjUtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjY6I2RlZmluZSBCQVRDSF9PUFMoX25hbWUpXFx0XFx0XFx0XFxcXFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3LVxcdC5tYXBfbG9va3VwX2JhdGNoID1cXHRcXHRcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjQ2LjMxODA3NjQ5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDg0ODU2MzEzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byByaHRhYl9tYXBfb3BzKipcblxuUmlnaHQsIHNvIEkgc2VlIHRoZXNlIGZ1bmN0aW9ucywgYHJodGFiX21hcF9sb29rdXBfYmF0Y2hgIGFuZCBgcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCwgYmVpbmcgdXNlZC4gSG1tLCB0aGV5J3JlIGNsZWFybHkgcGFydCBvZiB0aGUgYHJodGFiX21hcF9vcHNgIHN0cnVjdHVyZSBvciBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLiBXaGF0IGV4YWN0bHkgKmlzKiBgcmh0YWJfbWFwX29wc2AgZGVzaWduZWQgZm9yPyBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIGl0IHNvbWUgc29ydCBvZiBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggYSBoYXNoIHRhYmxlLCBhIGtleS12YWx1ZSBzdG9yZSwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IFRoZSBmYWN0IHRoYXQgYmF0Y2ggb3BlcmF0aW9ucyBhcmUgcHJlc2VudCBzdWdnZXN0cyBhIGRlc2lnbiBwcmlvcml0aXppbmcgZWZmaWNpZW5jeSBmb3IgYSBsYXJnZSBudW1iZXIgb2YgbG9va3VwcyBvciBkZWxldGlvbnMuIFVuZGVyc3RhbmRpbmcgdGhlIHVzZSBjYXNlIG9mIGByaHRhYl9tYXBfb3BzYCB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBzcGVjaWZpYyBiYXRjaCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIGludGVuZGVkIHRvIHdvcmsgd2l0aGluIHRoZSBzeXN0ZW0uIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIGEgZGVmaW5pdGlvbiBvciBleGFtcGxlcyBvZiBob3cgYHJodGFiX21hcF9vcHNgIGlzIHVzZWQgZWxzZXdoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNTo1Ny4xNjY2NTA0N1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2ODA3NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJodGFiX21hcF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM1OjU3LjM1MzQ3MDI2MloiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTk5MTA1MzMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNraW5nIERvd24gYSBGdW5jdGlvbiBDYWxsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHJodGFiX21hcF9vcHNgLi4uIEkga25vdyBpdCdzIHByb2JhYmx5IGltcG9ydGFudCwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyB0aGluZyBpcyBhY3R1YWxseSBnZXR0aW5nIHVzZWQuIEtub3dpbmcgaXRzIGxvY2F0aW9uIGlzIHRoZSBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoLiBMZXQncyBzZWUuLi4gd2hlcmUgZG9lcyB0aGUgY29kZSAqYWN0dWFsbHkqIGludm9rZSBgcmh0YWJfbWFwX29wc2A/IEkgbmVlZCB0byBmaW5kIHRoZSByZWZlcmVuY2VzIHRvIGl0IGJlZm9yZSBJIGNhbiBmaWd1cmUgb3V0IGl0cyBzaWduaWZpY2FuY2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc3RhcnQgc2VhcmNoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTg3NSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjEzLjM0NDUyOTg0NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1NTYzNzYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNj1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX0lOU05fQVJSQVksIGluc25fYXJyYXlfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MzUxNz1CVEZfSURfTElTVF9TSU5HTEUocmh0YWJfbWFwX2J0Zl9pZHMsIHN0cnVjdCwgYnBmX3JodGFiKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjM1MTg6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIHJodGFiX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9oYXNodGFiLmMtMzUxOS1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjE2LjQwMDE3ODM1NloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ2MDIxODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IEJQRiBSSEFTSCBCYXRjaCBPcGVyYXRpb25zKipcblxuT2theSwgc28gd2UncmUgbG9va2luZyBhdCBhIG1vZGlmaWNhdGlvbiB0byBgQlBGX01BUF9UWVBFX1JIQVNIYCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaXRzIGJhdGNoIGxvb2t1cCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nPyBBYnNvbHV0ZWx5LCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBiZWhhdmUsIHNvIHRoYXQncyBhIGRlZmluaXRlIHllcy5cblxuVGhlIGNvcmUgZm9jdXMgZm9yIG1lIGhlcmUgaXMgdGhlIGZ1bmN0aW9uIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAuIEkgbmVlZCB0byBkaWcgaW50byB0aGF0LiBIbW0sIGJ1dCBpdCdzIG1hcmtlZCBhcyBgc3RhdGljYC4gQ2FuIHN5emthbGxlciBldmVuIGZvY3VzIG9uIHN0YXRpYyBmdW5jdGlvbnM/IFllcywgdGhhdCBpcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyBpdCdzIHdpdGhpbiB0aGUga2VybmVsIGltYWdlLlxuXG5Ib3dldmVyLCBJJ20gbm93IHNlY29uZC1ndWVzc2luZyBteXNlbGYgYSBiaXQuIFdvdWxkIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIHByb3ZpZGluZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludD8gSSdsbCBzdGljayB3aXRoIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgZm9yIG5vdy5cblxuQmVmb3JlIGRpdmluZyBkZWVwZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBhbnkgQlBGLXJlbGF0ZWQgd29yaywgYnV0IEkgc2hvdWxkIHZlcmlmeSB0aGF0IGBCUEZfTUFQX1RZUEVfUkhBU0hgIGl0c2VsZiBkb2Vzbid0IGRlbWFuZCBhbnkgb3RoZXIgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBlbGltaW5hdGUgYW55IGRlcGVuZGVuY3kgaXNzdWVzIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjoyMS43NDYyMDUwMTJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTY5NTQ5MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX01BUF9UWVBFX1JIQVNIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oPTEzNj1CUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX0lOU05fQVJSQVksIGluc25fYXJyYXlfbWFwX29wcylcXG5pbmNsdWRlL2xpbnV4L2JwZl90eXBlcy5oOjEzNzpCUEZfTUFQX1RZUEUoQlBGX01BUF9UWVBFX1JIQVNILCByaHRhYl9tYXBfb3BzKVxcbmluY2x1ZGUvbGludXgvYnBmX3R5cGVzLmgtMTM4LVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTEwMDA9ZW51bSBicGZfbWFwX3R5cGUge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTEwNDktXFx0QlBGX01BUF9UWVBFX0lOU05fQVJSQVksXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjEwNTA6XFx0QlBGX01BUF9UWVBFX1JIQVNILFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDUxLVxcdF9fTUFYX0JQRl9NQVBfVFlQRVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oPTE1Mjc9dW5pb24gYnBmX2F0dHIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oLTE1NTctXFx0XFx0ICpcXG5pbmNsdWRlL3VhcGkvbGludXgvYnBmLmg6MTU1ODpcXHRcXHQgKiBCUEZfTUFQX1RZUEVfUkhBU0ggLSBpbml0aWFsIHRhYmxlIHNpemUgaGludFxcbmluY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU5LVxcdFxcdCAqIChuZWxlbV9oaW50KS4gMCA9IHVzZSByaGFzaHRhYmxlIGRlZmF1bHQuIE11c3QgYmVcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYz0xMDA9c3RhdGljIGludCBicGZfaXRlcl9hdHRhY2hfbWFwKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvbWFwX2l0ZXIuYy0xMjYtXFx0XFx0IG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9tYXBfaXRlci5jOjEyNzpcXHRcXHQgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0gpXFxua2VybmVsL2JwZi9tYXBfaXRlci5jLTEyOC1cXHRcXHRnb3RvIHB1dF9tYXA7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMjQ0PXN0YXRpYyBpbnQgbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzdHJ1Y3QgYnBmX3Rva2VuICp0b2tlbixcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyODgtXFx0XFx0XFx0XFx0aWYgKG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0hBU0ggXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMjg5OlxcdFxcdFxcdFxcdCAgICBtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTEyOTAtXFx0XFx0XFx0XFx0ICAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSUkFZIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzAzLVxcdFxcdFxcdFxcdGlmIChtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9IQVNIIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTMwNDpcXHRcXHRcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMzA1LVxcdFxcdFxcdFxcdCAgICBtYXAtXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9MUlVfSEFTSCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTMxNS1cXHRcXHRcXHRcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjEzMTY6XFx0XFx0XFx0XFx0ICAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX1JIQVNIIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTMxNy1cXHRcXHRcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUEVSQ1BVX0hBU0ggXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEzNzE9c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDktXFx0ICAgIGF0dHItXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9BUkVOQSBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MTA6XFx0ICAgIGF0dHItXFx1MDAzZW1hcF90eXBlICE9IEJQRl9NQVBfVFlQRV9SSEFTSCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MTEtXFx0ICAgIGF0dHItXFx1MDAzZW1hcF9leHRyYSAhPSAwKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgxLVxcdGNhc2UgQlBGX01BUF9UWVBFX0hBU0g6XFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQ4MjpcXHRjYXNlIEJQRl9NQVBfVFlQRV9SSEFTSDpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDgzLVxcdGNhc2UgQlBGX01BUF9UWVBFX1BFUkNQVV9IQVNIOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MjIxMz1zdGF0aWMgaW50IG1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3Mi1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9MUlVfUEVSQ1BVX0hBU0ggfHxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoyMjczOlxcdFxcdCAgIG1hcC1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX1JIQVNIIHx8XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMjI3NC1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDS19UUkFDRSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3NzQ2PXN0YXRpYyBpbnQgY2hlY2tfbWFwX3Byb2dfY29tcGF0aWJpbGl0eShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3NzkyLVxcdFxcdGNhc2UgQlBGX01BUF9UWVBFX0hBU0g6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NzkzOlxcdFxcdGNhc2UgQlBGX01BUF9UWVBFX1JIQVNIOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzc5NC1cXHRcXHRjYXNlIEJQRl9NQVBfVFlQRV9MUlVfSEFTSDpcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xMDAwPWVudW0gYnBmX21hcF90eXBlIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xMDQ5LVxcdEJQRl9NQVBfVFlQRV9JTlNOX0FSUkFZLFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaDoxMDUwOlxcdEJQRl9NQVBfVFlQRV9SSEFTSCxcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTA1MS1cXHRfX01BWF9CUEZfTUFQX1RZUEVcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaD0xNTI3PXVuaW9uIGJwZl9hdHRyIHtcXG4tLVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC9icGYuaC0xNTU3LVxcdFxcdCAqXFxudG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L2JwZi5oOjE1NTg6XFx0XFx0ICogQlBGX01BUF9UWVBFX1JIQVNIIC0gaW5pdGlhbCB0YWJsZSBzaXplIGhpbnRcXG50b29scy9pbmNsdWRlL3VhcGkvbGludXgvYnBmLmgtMTU1OS1cXHRcXHQgKiAobmVsZW1faGludCkuIDAgPSB1c2Ugcmhhc2h0YWJsZSBkZWZhdWx0LiBNdXN0IGJlXFxuLS1cXG50b29scy9saWIvYnBmL2xpYmJwZi5jPTE2Mz1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG1hcF90eXBlX25hbWVbXSA9IHtcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmLmMtMTk4LVxcdFtCUEZfTUFQX1RZUEVfSU5TTl9BUlJBWV1cXHRcXHQ9IFxcXCJpbnNuX2FycmF5XFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jOjE5OTpcXHRbQlBGX01BUF9UWVBFX1JIQVNIXVxcdFxcdFxcdD0gXFxcInJoYXNoXFxcIixcXG50b29scy9saWIvYnBmL2xpYmJwZi5jLTIwMC19O1xcbi0tXFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmM9MjkyPXN0YXRpYyBpbnQgcHJvYmVfbWFwX2NyZWF0ZShlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4tLVxcbnRvb2xzL2xpYi9icGYvbGliYnBmX3Byb2Jlcy5jLTMxMS1cXHRcXHRicmVhaztcXG50b29scy9saWIvYnBmL2xpYmJwZl9wcm9iZXMuYzozMTI6XFx0Y2FzZSBCUEZfTUFQX1RZUEVfUkhBU0g6XFxudG9vbHMvbGliL2JwZi9saWJicGZfcHJvYmVzLmMtMzEzLVxcdFxcdG9wdHMubWFwX2ZsYWdzXFx0PSBCUEZfRl9OT19QUkVBTExPQztcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYz0zNz1zdGF0aWMgdm9pZCBoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTUwLVxcdGJwZl9tYXBfX3NldF90eXBlKGN0eC5za2VsLVxcdTAwM2VtYXBzLmhhc2hfbWFwX2JlbmNoLCBtYXBfdHlwZSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jOjUxOlxcdGlmIChtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfUkhBU0gpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTUyLVxcdFxcdGJwZl9tYXBfX3NldF9tYXBfZmxhZ3MoY3R4LnNrZWwtXFx1MDAzZW1hcHMuaGFzaF9tYXBfYmVuY2gsXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmM9ODA9c3RhdGljIHZvaWQgcmhhc2hfc2V0dXAodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLmMtODEte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfZnVsbF91cGRhdGUuYzo4MjpcXHRoYXNobWFwX2Z1bGxfdXBkYXRlX3NldHVwKEJQRl9NQVBfVFlQRV9SSEFTSCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5jLTgzLX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmM9MTUxPXN0YXRpYyB2b2lkIGhhc2htYXBfbG9va3VwX3NldHVwKGVudW0gYnBmX21hcF90eXBlIG1hcF90eXBlKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAuYy0xNjctXFx0bWFwX2ZsYWdzID0gYXJncy5tYXBfZmxhZ3M7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9icGZfaGFzaG1hcF9sb29rdXAuYzoxNjg6XFx0aWYgKG1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9SSEFTSClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jLTE2OS1cXHRcXHRtYXBfZmxhZ3MgfD0gQlBGX0ZfTk9fUFJFQUxMT0M7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jPTIxMT1zdGF0aWMgdm9pZCByaGFzaF9zZXR1cCh2b2lkKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMjEyLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5jOjIxMzpcXHRoYXNobWFwX2xvb2t1cF9zZXR1cChCUEZfTUFQX1RZUEVfUkhBU0gpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLmMtMjE0LX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYz0xNTU9c3RhdGljIHZvaWQgaHRhYl9tZW1fc2V0dXBfaW1wbChlbnVtIGJwZl9tYXBfdHlwZSBtYXBfdHlwZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfaHRhYl9tZW0uYy0xODQtXFx0YnBmX21hcF9fc2V0X21heF9lbnRyaWVzKG1hcCwgTUFYKDgxOTIsIDY0ICogZW52Lm5yX2NwdXMpKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmM6MTg1OlxcdGlmIChtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfUkhBU0ggXFx1MDAyNlxcdTAwMjYgYXJncy5wcmVhbGxvY2F0ZWQpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jLTE4Ni1cXHRcXHRicGZfbWFwX19zZXRfbWFwX2ZsYWdzKG1hcCwgYnBmX21hcF9fbWFwX2ZsYWdzKG1hcCkgXFx1MDAyNiB+QlBGX0ZfTk9fUFJFQUxMT0MpO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9odGFiX21lbS5jPTIyOT1zdGF0aWMgdm9pZCByaHRhYl9tZW1fc2V0dXAodm9pZClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmM6MjMxOlxcdGh0YWJfbWVtX3NldHVwX2ltcGwoQlBGX01BUF9UWVBFX1JIQVNIKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2h0YWJfbWVtLmMtMjMyLX1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmM9NDY9c3RhdGljIGludCByaGFzaF9tYXBfY3JlYXRlKF9fdTMyIG1heF9lbnRyaWVzLCBfX3U2NCBtYXBfZXh0cmEpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3JoYXNoLmM6NTI6XFx0cmV0dXJuIGJwZl9tYXBfY3JlYXRlKEJQRl9NQVBfVFlQRV9SSEFTSCwgXFxcInJoYXNoX2V4dHJhXFxcIixcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9yaGFzaC5jLTUzLVxcdFxcdFxcdCAgICAgIHNpemVvZihfX3UzMiksIHNpemVvZihfX3U2NCksIG1heF9lbnRyaWVzLCBcXHUwMDI2b3B0cyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jPTg9c3RydWN0IHtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvYnBmX2l0ZXJfYnBmX3JoYXNoX21hcC5jOjk6XFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9SSEFTSCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2JwZl9pdGVyX2JwZl9yaGFzaF9tYXAuYy0xMC1cXHRfX3VpbnQobWFwX2ZsYWdzLCBCUEZfRl9OT19QUkVBTExPQyk7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvcmhhc2guYz0yMj1zdHJ1Y3Qge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jOjIzOlxcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfUkhBU0gpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9yaGFzaC5jLTI0LVxcdF9fdWludChtYXBfZmxhZ3MsIEJQRl9GX05PX1BSRUFMTE9DKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MjYuMTQzMTc4OTQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTkwMTk1NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgQlBGX01BUF9UWVBFX1JIQVNIYCBNYXAgVHlwZSoqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYEJQRl9NQVBfVFlQRV9SSEFTSGAgaGVyZS4gUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IE15IGluaXRpYWwgdGhvdWdodCBpcywgaXQncyBqdXN0IHRoYXQgbWFwIHR5cGUgaXRzZWxmLiBTZWVtcyBsaWtlIGBDT05GSUdfQlBGX1NZU0NBTExgIHNob3VsZCBiZSB0aGUgb25seSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBJIG5lZWQgdG8gd29ycnkgYWJvdXQuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIEkgdGhpbmsgSSByZW1lbWJlciBgQlBGX01BUF9UWVBFX1JIQVNIYCBiZWluZyBhIG5ld2VyIGFkZGl0aW9uLCBvciBwZXJoYXBzIGl0J3MgYWx3YXlzIGluY2x1ZGVkIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUsIEkgc2hvdWxkIHJlYWxseSB2ZXJpZnkgd2hldGhlciB0aGVyZSBhcmUgYW55IG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBlbmFibGUgb3IgcmVsYXRlIHRvIHRoaXMgcGFydGljdWxhciBtYXAgdHlwZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29uZmlnIGZpbGVzIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyMTYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjoyOS43MDIyMDMwNjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTIxMTEyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX01BUF9UWVBFX1JIQVNIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MjkuOTY3NDI4MTg2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjI0ODkwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqQlBGIEhhc2h0YWJsZSBEaXZlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBwb3RlbnRpYWwgdXNlIG9mIGByaHRhYl9tYXBfb3BzYCB3aXRoaW4gdGhlIEJQRiBoYXNodGFibGUgaW1wbGVtZW50YXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoYXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIHNjYW4gdGhhdCBmaWxlIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZGlyZWN0aXZlcyDigJMgeW91IGtub3csIHRob3NlIHBlc2t5IGAjaWZkZWZgIHN0YXRlbWVudHMuIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYW55IGJsb2NrcyBvZiBjb2RlIHRoYXQgbWlnaHQgYmUgaW5jbHVkZWQgb3IgZXhjbHVkZWQgYmFzZWQgb24gc29tZSBidWlsZC10aW1lIGZsYWcgcmVsYXRlZCB0byBgcmh0YWJfbWFwX29wc2AuIFRoaXMgd2lsbCB0ZWxsIG1lIGlmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGVuYWJsZWQuIE15IGh5cG90aGVzaXMgaXMgdGhpcyBpcyBwcm9iYWJseSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCdzIGFjdGl2ZS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NTMzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6MzIuOTg5OTIxOTRaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTIzMTcxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaHRhYl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTM1MTc9QlRGX0lEX0xJU1RfU0lOR0xFKHJodGFiX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9yaHRhYilcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzozNTE4OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyByaHRhYl9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTM1MTktXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOTozNjozMy4xNTUxNjI4MDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3MDE5OTEzOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipEaXNzZWN0aW5nIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AgLSBMaW5lIDM1MTgqKlxuXG5BbHJpZ2h0LCBteSBicmFpbiBpcyBzYXlpbmcsIFwiVGltZSB0byBmb2N1cy5cIiBJIG5lZWQgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgQlBGIGhhc2h0YWJsZSBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzUxOCBpbiB0aGUgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhhdCBsaW5lIGNvbnRhaW5zIHNvbWV0aGluZyBzaWduaWZpY2FudCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIGEgY3JpdGljYWwganVuY3R1cmUgaW4gdGhlIGFsZ29yaXRobSBvciBkYXRhIHN0cnVjdHVyZSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBhcm91bmQgdGhhdCBwb2ludC4gVGhpcyBjb3VsZCBiZSB3aGVyZSB3ZSdyZSBleHBlcmllbmNpbmcgYSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBhIHBvdGVudGlhbCBidWcsIGEgY3JpdGljYWwgZGF0YSBsb29rdXAsIG9yIG1heWJlIGp1c3Qgc29tZSBpbnRlcmVzdGluZyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgSSd2ZSBiZWVuIG1lYW5pbmcgdG8gZXhhbWluZS4gTGV0IG1lIGdvIGZpbmQgdGhhdCBsaW5lIGFuZCBnZXQgdG8gdGhlIGJvdHRvbSBvZiB3aGF0J3MgaGFwcGVuaW5nLiBUaGUgam91cm5leSBiZWdpbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTEwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NDQuODU3MTYwOTQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL2hhc2h0YWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTAwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzNTAwOlxcdFxcdGJwZl9tYXBfcHV0X3dpdGhfdXJlZihpbmZvLVxcdTAwM2VtYXApO1xcbjM1MDE6XFx0fVxcbjM1MDI6XFx0XFxuMzUwMzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGJwZl9yaGFzaF9tYXBfc2VxX29wcyA9IHtcXG4zNTA0OlxcdFxcdC5zdGFydCA9IGJwZl9yaGFzaF9tYXBfc2VxX3N0YXJ0LFxcbjM1MDU6XFx0XFx0Lm5leHQgPSBicGZfcmhhc2hfbWFwX3NlcV9uZXh0LFxcbjM1MDY6XFx0XFx0LnN0b3AgPSBicGZfcmhhc2hfbWFwX3NlcV9zdG9wLFxcbjM1MDc6XFx0XFx0LnNob3cgPSBicGZfcmhhc2hfbWFwX3NlcV9zaG93LFxcbjM1MDg6XFx0fTtcXG4zNTA5OlxcdFxcbjM1MTA6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfaXRlcl9zZXFfaW5mbyByaGFzaF9pdGVyX3NlcV9pbmZvID0ge1xcbjM1MTE6XFx0XFx0LnNlcV9vcHMgPSBcXHUwMDI2YnBmX3JoYXNoX21hcF9zZXFfb3BzLFxcbjM1MTI6XFx0XFx0LmluaXRfc2VxX3ByaXZhdGUgPSBicGZfaXRlcl9pbml0X3JoYXNoX21hcCxcXG4zNTEzOlxcdFxcdC5maW5pX3NlcV9wcml2YXRlID0gYnBmX2l0ZXJfZmluaV9yaGFzaF9tYXAsXFxuMzUxNDpcXHRcXHQuc2VxX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYnBmX2l0ZXJfc2VxX3JoYXNoX21hcF9pbmZvKSxcXG4zNTE1OlxcdH07XFxuMzUxNjpcXHRcXG4zNTE3OlxcdEJURl9JRF9MSVNUX1NJTkdMRShyaHRhYl9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfcmh0YWIpXFxuMzUxODpcXHRjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgcmh0YWJfbWFwX29wcyA9IHtcXG4zNTE5OlxcdFxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG4zNTIwOlxcdFxcdC5tYXBfYWxsb2NfY2hlY2sgPSByaHRhYl9tYXBfYWxsb2NfY2hlY2ssXFxuMzUyMTpcXHRcXHQubWFwX2FsbG9jID0gcmh0YWJfbWFwX2FsbG9jLFxcbjM1MjI6XFx0XFx0Lm1hcF9mcmVlID0gcmh0YWJfbWFwX2ZyZWUsXFxuMzUyMzpcXHRcXHQubWFwX2dldF9uZXh0X2tleSA9IHJodGFiX21hcF9nZXRfbmV4dF9rZXksXFxuMzUyNDpcXHRcXHQubWFwX3JlbGVhc2VfdXJlZiA9IHJodGFiX21hcF9mcmVlX2ludGVybmFsX3N0cnVjdHMsXFxuMzUyNTpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IHJodGFiX21hcF9jaGVja19idGYsXFxuMzUyNjpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9lbGVtLFxcbjM1Mjc6XFx0XFx0Lm1hcF9sb29rdXBfYW5kX2RlbGV0ZV9lbGVtID0gcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2VsZW0sXFxuMzUyODpcXHRcXHQubWFwX3VwZGF0ZV9lbGVtID0gcmh0YWJfbWFwX3VwZGF0ZV9lbGVtLFxcbjM1Mjk6XFx0XFx0Lm1hcF9kZWxldGVfZWxlbSA9IHJodGFiX21hcF9kZWxldGVfZWxlbSxcXG4zNTMwOlxcdFxcdC5tYXBfZ2VuX2xvb2t1cCA9IHJodGFiX21hcF9nZW5fbG9va3VwLFxcbjM1MzE6XFx0XFx0Lm1hcF9zZXFfc2hvd19lbGVtID0gcmh0YWJfbWFwX3NlcV9zaG93X2VsZW0sXFxuMzUzMjpcXHRcXHQubWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzID0gbWFwX3NldF9mb3JfZWFjaF9jYWxsYmFja19hcmdzLFxcbjM1MzM6XFx0XFx0Lm1hcF9mb3JfZWFjaF9jYWxsYmFjayA9IGJwZl9lYWNoX3JoYXNoX2VsZW0sXFxuMzUzNDpcXHRcXHQubWFwX21lbV91c2FnZSA9IHJodGFiX21hcF9tZW1fdXNhZ2UsXFxuMzUzNTpcXHRcXHRCQVRDSF9PUFMocmh0YWIpLFxcbjM1MzY6XFx0XFx0Lm1hcF9idGZfaWQgPSBcXHUwMDI2cmh0YWJfbWFwX2J0Zl9pZHNbMF0sXFxuMzUzNzpcXHRcXHQuaXRlcl9zZXFfaW5mbyA9IFxcdTAwMjZyaGFzaF9pdGVyX3NlcV9pbmZvLFxcbjM1Mzg6XFx0fTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NDQuODU3NTg1NDM3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTYwNjY0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU3VtbWFyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmb3IgZnV6emluZyBwdXJwb3Nlcy4gVGhlcmUgYXJlIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgKGAjaWZkZWZgcykgdG8gd29ycnkgYWJvdXQgaGVyZSwgc28gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nLiBUaGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgbG90LlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnkgb2YgdGhlIHNpdHVhdGlvbjpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IERlZmluaXRlbHkgdHJ1ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFsdGVyaW5nIGNvcmUga2VybmVsIGxvZ2ljLlxuKiAgICoqRm9jdXNTeW1ib2xzKio6IE15IHByaW1hcnkgdGFyZ2V0IHdpbGwgYmUgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYC5cbiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSByZXF1aXJlbWVudCwgYXMgZXhwZWN0ZWQuXG4qICAgKipSZWFzb25pbmcqKjogVGhlIHBhdGNoIGludHJvZHVjZXMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIGNhbGxzIHdpdGhpbiBgX19yaHRhYl9tYXBfbG9va3VwX2FuZF9kZWxldGVfYmF0Y2hgIGluIGBrZXJuZWwvYnBmL2hhc2h0YWIuY2AuIFRoaXMgaXMgaW50ZW5kZWQgdG8gcmVzb2x2ZSBwb3RlbnRpYWwgZGVhZGxvY2tzIHRoYXQgY2FuIG9jY3VyIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgaW52b2tlZCB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRoYXQgdGhpcyBtb2RpZmllcyBrZXJuZWwgbG9naWMgdGhhdCdzIHJlYWNoYWJsZSBhbmQgbGlrZWx5IHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSwgZXNwZWNpYWxseSBnaXZlbiB0aGF0IGl0IGludm9sdmVzIEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGAuXG5cbk5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uIHZpc2liaWxpdHkuIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaXMgYSAqc3RhdGljKiBmdW5jdGlvbi4gSG93ZXZlciwgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIGByaHRhYl9tYXBfbG9va3VwX2JhdGNoYCBhbmQgYHJodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgYXJlIGFsc28gc3RhdGljLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGFzc2lnbmVkIHRvIGByaHRhYl9tYXBfb3BzYCB2aWEgYEJBVENIX09QUyhyaHRhYilgLiBUaGF0J3MgdGhlIGtleS4gVGhleSBiZWNvbWUgcmVhY2hhYmxlIHRocm91Z2ggYHN5c19icGZgIHdpdGggYEJQRl9NQVBfTE9PS1VQX0JBVENIYCBhbmQgYEJQRl9NQVBfTE9PS1VQX0FORF9ERUxFVEVfQkFUQ0hgIGNvbW1hbmRzIGFwcGxpZWQgdG8gYSBgQlBGX01BUF9UWVBFX1JIQVNIYCBtYXAuIFN5emthbGxlciBjYW4gaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSBlbmQgdXAgaW4gdGhlIGtlcm5lbCBpbWFnZSwgc28gSSdtIGNvbmZpZGVudCBJIGNhbiB0YXJnZXQgYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBkaXJlY3RseS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkndmUgY29uZmlybWVkIHRoYXQgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBpcyBpbmRlZWQgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6MzY6NTEuNDczNjU2MTM5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDI1ODY1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGFzaHRhYi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM2OjUxLjcxNjI1NzcxNVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTk0NjM3NDg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBDb25maXJtYXRpb24gYW5kIEFjdGlvbiBQbGFuKipcblxuWWVzLCB0aGF0J3MgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gT2theSwgbGV0J3MgY3J5c3RhbGxpemUgdGhpcyBkZWNpc2lvbiBhbmQgYXNzaWduIHRoZSBhcHByb3ByaWF0ZSBsYWJlbCB0byBpdC4gSSdsbCBuZWVkIGEgd2F5IHRvIHRyYWNrIHRoaXMsIHNvIEkgd2lsbCBuYW1lIHRoZSBtZXRob2Qgb3IgdmFyaWFibGUgdGhhdCBJJ20gZ29pbmcgdG8gdXNlIGFzIGBzZXQtcmVzdWx0c2AuIFRoYXQgbmFtaW5nIGNvbnZlbnRpb24gYWNjdXJhdGVseSBkZXNjcmliZXMgaXRzIGZ1bmN0aW9uIGFuZCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIHJlY2FsbCBsYXRlciB3aGVuIEkgbmVlZCB0byByZWZlcmVuY2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTcwLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjM3OjA3LjY2MjYzNzM0MloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDM4MDIzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYGJwZl9kaXNhYmxlX2luc3RydW1lbnRhdGlvbigpYCBhbmQgYGJwZl9lbmFibGVfaW5zdHJ1bWVudGF0aW9uKClgIHRvIGBfX3JodGFiX21hcF9sb29rdXBfYW5kX2RlbGV0ZV9iYXRjaGAgaW4gYGtlcm5lbC9icGYvaGFzaHRhYi5jYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgZGVhZGxvY2tzIHdoZW4gQlBGIHByb2dyYW1zIGFyZSBhdHRhY2hlZCB0byBmdW5jdGlvbnMgY2FsbGVkIGZyb20gd2l0aGluIEJQRiBtYXAgb3BlcmF0aW9ucy4gSXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgbWFwIGJhdGNoIG9wZXJhdGlvbnMgZm9yIGBCUEZfTUFQX1RZUEVfUkhBU0hgKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBgYnBmX2Rpc2FibGVfaW5zdHJ1bWVudGF0aW9uKClgIGFuZCBgYnBmX2VuYWJsZV9pbnN0cnVtZW50YXRpb24oKWAgdG8gYF9fcmh0YWJfbWFwX2xvb2t1cF9hbmRfZGVsZXRlX2JhdGNoYCBpbiBga2VybmVsL2JwZi9oYXNodGFiLmNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBkZWFkbG9ja3Mgd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB3aXRoaW4gQlBGIG1hcCBvcGVyYXRpb25zLiBJdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBtYXAgYmF0Y2ggb3BlcmF0aW9ucyBmb3IgYEJQRl9NQVBfVFlQRV9SSEFTSGApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow6r94c[1] Phase: Succeeded StartedAt: 2026-06-30 19:37:19 +0000 UTC FinishedAt: 2026-06-30 19:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 19:37:19 +0000 UTC FinishedAt: 2026-06-30 19:37:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2] Phase: Succeeded StartedAt: 2026-06-30 19:37:19 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 19:37:20 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 19:37:20 +0000 UTC FinishedAt: 2026-06-30 19:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 19:37:20 +0000 UTC FinishedAt: 2026-06-30 19:37:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6r94c/series-workflow6r94c-convert-artifact-3596049703/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 19:37:59 +0000 UTC FinishedAt: 2026-06-30 20:03:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 19:37:59 +0000 UTC FinishedAt: 2026-06-30 20:03:12 +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:*760ee8ec-4b2c-49d4-bb39-113573986c7b,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-workflow6r94c/series-workflow6r94c-convert-artifact-3596049703/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": "28be8c54-9e54-4aac-ab99-233f4b7185b4", "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-workflow6r94c/series-workflow6r94c-build-action-2773462205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 19:37:59 +0000 UTC FinishedAt: 2026-06-30 20:03:02 +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:*760ee8ec-4b2c-49d4-bb39-113573986c7b,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-workflow6r94c/series-workflow6r94c-convert-artifact-3596049703/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": "28be8c54-9e54-4aac-ab99-233f4b7185b4", "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-workflow6r94c/series-workflow6r94c-build-action-2773462205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 20:03:12 +0000 UTC FinishedAt: 2026-06-30 20:03:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 20:03:12 +0000 UTC FinishedAt: 2026-06-30 20:03:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 20:03:12 +0000 UTC FinishedAt: 2026-06-30 20:03:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 20:03:12 +0000 UTC FinishedAt: 2026-06-30 20:03:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6r94c/series-workflow6r94c-convert-artifact-2344570070/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 20:03:33 +0000 UTC FinishedAt: 2026-06-30 20:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 20:03:33 +0000 UTC FinishedAt: 2026-06-30 20:05:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*28be8c54-9e54-4aac-ab99-233f4b7185b4,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-workflow6r94c/series-workflow6r94c-build-action-2773462205/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-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 20:05:43 +0000 UTC FinishedAt: 2026-06-30 20:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 20:05:43 +0000 UTC FinishedAt: 2026-06-30 20:05:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 20:05:43 +0000 UTC FinishedAt: 2026-06-30 20:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 20:05:43 +0000 UTC FinishedAt: 2026-06-30 20:27:19 +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:*760ee8ec-4b2c-49d4-bb39-113573986c7b,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-workflow6r94c/series-workflow6r94c-convert-artifact-2344570070/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": "52c364e1-4060-40cb-86a6-c57ed3546e8b", "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-workflow6r94c/series-workflow6r94c-build-action-3161715418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 20:05:43 +0000 UTC FinishedAt: 2026-06-30 20:27:10 +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:*760ee8ec-4b2c-49d4-bb39-113573986c7b,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-workflow6r94c/series-workflow6r94c-convert-artifact-2344570070/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": "52c364e1-4060-40cb-86a6-c57ed3546e8b", "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-workflow6r94c/series-workflow6r94c-build-action-3161715418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 20:27:19 +0000 UTC FinishedAt: 2026-06-30 20:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 20:27:19 +0000 UTC FinishedAt: 2026-06-30 20:27:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 20:27:19 +0000 UTC FinishedAt: 2026-06-30 20:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 20:27:19 +0000 UTC FinishedAt: 2026-06-30 20:29:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*52c364e1-4060-40cb-86a6-c57ed3546e8b,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-workflow6r94c/series-workflow6r94c-build-action-3161715418/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-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"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:*28be8c54-9e54-4aac-ab99-233f4b7185b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*52c364e1-4060-40cb-86a6-c57ed3546e8b,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-workflow6r94c/series-workflow6r94c-build-action-2773462205/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-workflow6r94c/series-workflow6r94c-build-action-3161715418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 20:29:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 20:29:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"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-workflow6r94c/series-workflow6r94c-convert-artifact-2617402491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 20:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 20:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 20:29:15 +0000 UTC FinishedAt: 2026-06-30 20:29:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 20:29:35 +0000 UTC FinishedAt: 2026-06-30 23:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6r94c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["__rhtab_map_lookup_and_delete_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53435562a725962e4de0c29653223129ba11643a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"a325cbb7-73d5-4408-beb9-e131c41ebe4d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 20:29:35 +0000 UTC FinishedAt: 2026-06-30 23:32:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*28be8c54-9e54-4aac-ab99-233f4b7185b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*52c364e1-4060-40cb-86a6-c57ed3546e8b,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-workflow6r94c/series-workflow6r94c-build-action-2773462205/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-workflow6r94c/series-workflow6r94c-build-action-3161715418/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-workflow6r94c/series-workflow6r94c-convert-artifact-2617402491/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,}