Name: series-workflow98c8x Phase: Succeeded StartedAt: 2026-08-11 07:58:17 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[0] Phase: Succeeded StartedAt: 2026-08-11 07:58:17 +0000 UTC FinishedAt: 2026-08-11 08:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 07:58:17 +0000 UTC FinishedAt: 2026-08-11 08:29:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "NET_IPGRE_DEMUX", "PPPOX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "NET_IPGRE_DEMUX", "PPPOX" ], "series_id": "f621065d-56bb-409a-a7e1-242f38cdd539" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_sock_destruct", "pptp_rcv", "pptp_connect", "pptp_bind" ], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O1BQUE9YJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3NvY2tfZGVzdHJ1Y3QmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzgsMTEgJiM0MzsyNzgsOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0X191OCAqcGF5bG9hZDtcbiBcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiBcbi1cdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKSB7XG4tXHRcdGlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpXG4tXHRcdFx0Z290byBkcm9wO1xuLVx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4tXHR9XG4mIzQzO1x0aWYgKCEoc2stXHUwMDNlc2tfc3RhdGUgXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpXG4mIzQzO1x0XHRnb3RvIGRyb3A7XG4gXG4gXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gXHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbkBAIC01MzksNyAmIzQzOzUzNiw2IEBAIHN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRcdGRlbF9jaGFuKHBwcG94X3NrKHNrKSk7XG4gXHRcdHBwcG94X3VuYmluZF9zb2NrKHNrKTtcbiBcdH1cbi1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcbiBcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXHUwMDNlc2tfZHN0X2NhY2hlLCAxKSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtQUFBPWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9zb2NrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDssCiAgICAmIzM0O3BwdHBfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwcHRwX2JpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwpAQCAtMjc4LDExICYjNDM7Mjc4LDggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIAotCWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKSB7Ci0JCWlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpCi0JCQlnb3RvIGRyb3A7Ci0JCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKLQl9CiYjNDM7CWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKQomIzQzOwkJZ290byBkcm9wOwogCiAJaGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLSZndDtkYXRhKTsKIAloZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTsKQEAgLTUzOSw3ICYjNDM7NTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAkJZGVsX2NoYW4ocHBwb3hfc2soc2spKTsKIAkJcHBwb3hfdW5iaW5kX3NvY2soc2spOwogCX0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSk7CiAJZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay0mZ3Q7c2tfZHN0X2NhY2hlLCAxKSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQUFRQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBzb21lIGNoYW5nZXMgaW4gdGhlIGNvcmUgcGFja2V0IGhhbmRsaW5nIGFuZCBzb2NrZXQgZGVzdHJ1Y3Rpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKSW4gYHBwdHBfcmN2X2NvcmVgLCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBjaGFuZ2luZyB0aGUgYmVoYXZpb3IgZm9yIHBhY2tldHMgcmVjZWl2ZWQgd2hlbiB0aGUgc29ja2V0IGlzbiYjMzk7dCBpbiBhIGNvbm5lY3RlZCBzdGF0ZSAoYCEoc2stJmd0O3NrX3N0YXRlICZhbXA7IFBQUE9YX0NPTk5FQ1RFRClgKS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd291bGQgcXVldWUgdGhlc2UgcGFja2V0cyB1c2luZyBgc29ja19xdWV1ZV9yY3Zfc2tiYCBhbmQgdGhlbiwgaWYgcXVldWluZyBmYWlsZWQsIHdvdWxkIGRyb3AgdGhlbS4gTm93LCB3ZSYjMzk7cmUgZHJvcHBpbmcgdGhlbSBpbW1lZGlhdGVseSB3aXRoIGEgYGdvdG8gZHJvcGAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIG5vIG1vcmUgYnVmZmVyaW5nIG9mIHVuZXhwZWN0ZWQgcGFja2V0cy4gVGhpcyBpbXBsaWVzIGEgc3RyaWN0ZXIgYWRoZXJlbmNlIHRvIHRoZSBQUFRQIHN0YXRlIG1hY2hpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgZGVlbWVkIG5lY2Vzc2FyeS4gUG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBoZXJlIGFzIHdlbGwuCgpUaGVuLCBtb3Zpbmcgb24gdG8gYHBwdHBfc29ja19kZXN0cnVjdGAsIHdlJiMzOTt2ZSBnb3QgdGhlIHJlbW92YWwgb2YgYHNrYl9xdWV1ZV9wdXJnZSgmYW1wO3NrLSZndDtza19yZWNlaXZlX3F1ZXVlKWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIHdoZW4gYSBzb2NrZXQgd2FzIGRlc3RydWN0ZWQsIGFueSByZW1haW5pbmcgcGFja2V0cyBpbiB0aGUgcmVjZWl2ZSBxdWV1ZSB3ZXJlIHB1cmdlZC4gTm93LCB3ZSYjMzk7cmUgYXNzdW1pbmcgdGhlIHF1ZXVlIGlzIGVtcHR5LCBvciB0aGUgcGFja2V0cyBhcmUgaGFuZGxlZCBlbHNld2hlcmUuIEFnYWluLCBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB3ZSYjMzk7cmUgbWFuYWdpbmcgYnVmZmVyZWQgZGF0YSBhdCBzb2NrZXQgdGVhcmRvd24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHB1cmdlIGlzIG5vIGxvbmdlciBuZWVkZWQuIElzIHRoaXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYD8gUGVyaGFwcyB0aGUgbmV3IGRyb3Atb24tdW5jb25uZWN0ZWQgYmVoYXZpb3IgbWFrZXMgdGhlIHF1ZXVlIHB1cmdlIHJlZHVuZGFudD8gT3IgaXMgdGhlcmUgYSBkaWZmZXJlbnQgZGF0YSBtYW5hZ2VtZW50IHBsYW4/CgpHaXZlbiB0aGVzZSBmdW5jdGlvbmFsIGNoYW5nZXMsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgd2l0aGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IG9yIGltcGFjdGVkIGJ5IHRoZXNlIG1vZGlmaWNhdGlvbnMuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMsIGFzIGl0IGNvdWxkIGhhdmUgZG93bnN0cmVhbSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MwoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFBQVFAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtIGlzIHNldCB0byB1c2UgYFBQVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBtb2R1bGUuIFNpbmNlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBrZXJuZWwsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIGFsbCB0aGluZ3MgUFBQLXJlbGF0ZWQsIGFuZCB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGllZCB0byB0aGUgYFBQVFBgIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIGFyZSByZXF1aXJlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgUFBUUGAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1lOiBxdWlja2x5IGxvY2F0ZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGRlYnVnZ2luZyBvciBtb2RpZmljYXRpb24gb2YgdGhlIFBQUCBwcm90b2NvbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYwLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjItXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdGNvbmZpZyBQUFRQXG4gMTYyOlx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuIDE2MzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxNjQ6XHRcdHNlbGVjdCBQUFBPWFxuIDE2NTpcdFx0aGVscFxuIDE2NjpcdFx0ICBTdXBwb3J0IGZvciBQUFAgb3ZlciBJUHY0LihQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcbiAxNjk6XHRcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cbiAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipOZXR3b3JrIFByb3RvY29sIERlcGVuZGVuY2llcyBhbmQgTW9kdWxlIFJldmlldyoqCgpSaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgbXkgaW50ZXJuYWwgcHJvY2VzcyBmbGFncyBhIGRlcGVuZGVuY3k6IGBORVRfSVBHUkVfREVNVVhgLiBUaGF0IG1lYW5zLCBpbW1lZGlhdGVseSwgSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgcHJlc2VuY2UgYW5kIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBib3RoIGBQUFRQYCBhbmQsIGNydWNpYWxseSwgYE5FVF9JUEdSRV9ERU1VWGAuIFRoZSBzeXN0ZW0mIzM5O3MgYWxyZWFkeSBzZWxlY3RlZCBgUFBQT1hgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGlzIGNvbnRleHQuCgpOb3csIHdoZXJlIGRvIEkgbmVlZCB0byBsb29rIHRvIGNvbmZpcm0gdGhlIGludGVncml0eSBvZiB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uPyBNeSBhdHRlbnRpb24gdHVybnMgdG8gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGUgZnVuY3Rpb25zIGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHJlY2VpdmluZyBQUFRQIHRyYWZmaWMgYW5kIHRoZSBzb2NrZXQgY2xlYW51cCBwcm9jZWR1cmVzLCByZXNwZWN0aXZlbHksIHJlc2lkZS4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwb2ludHMgdG8gdmVyaWZ5IHRvIHVuZGVyc3RhbmQgYW5kIHZhbGlkYXRlIHRoZSBlc3RhYmxpc2hlZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0Mj1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU1ODpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU5LVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBTZXR1cCBhbmQgRnVuY3Rpb24gSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHB0cGAgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoZSBhc3NpZ25tZW50OiBgcHB0cF9yY3ZfY29yZWAgaXMgYmVpbmcgc2V0IGFzIHRoZSBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gVGhpcyBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBwYWNrZXQgcmVjZXB0aW9uIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGhhcHBlbi4gVGhlbiB3ZSYjMzk7dmUgZ290IGBwcHRwX3NvY2tfZGVzdHJ1Y3RgIGJlaW5nIGFzc2lnbmVkIHRvIGBzay0mZ3Q7c2tfZGVzdHJ1Y3RgLiBPa2F5LCB0aGF0JiMzOTtzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgc29ja2V0LCBhcyB5b3UmIzM5O2QgZXhwZWN0LiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zLCBzdGFydGluZyB3aXRoIGBwcHRwX3Jjdl9jb3JlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSBhbSBnb2luZyB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgYW5kIGlmIHRoZXkgYXJlLCB0aGF0IGdpdmVzIHVzIGEgY2xlYXIgaW5kaWNhdGlvbiBhYm91dCB0aGUgY29kZSBzY29wZS4gQWgsIHllcywgdGhleSBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMsIGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAgLiBUaGF0JiMzOTtzIGhlbHBmdWwuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvdXJjZSBmaWxlLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIG15IGludmVzdGlnYXRpb24sIGJ1dCB0aGlzIGFsc28gbWVhbnMgdGhhdCB0aGV5IHdpbGwgYWxzbyBiZSBhIGNvcmUgcGFydCBvZiB0aGUgY29kZSYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGxvb2tpbmcgZm9yIG90aGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDk6c3RhdGljIHN0cnVjdCBwcm90byBwcHRwX3NrX3Byb3RvIF9fcmVhZF9tb3N0bHk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1LVx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NzI9c3RhdGljIGludCBsb29rdXBfY2hhbl9kc3QodTE2IGNhbGxfaWQsIF9fYmUzMiBkX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03NC1cdHN0cnVjdCBwcHBveF9zb2NrICpzb2NrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcdHN0cnVjdCBwcHRwX29wdCAqb3B0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03Ni1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9OTQ9c3RhdGljIGludCBhZGRfY2hhbihzdHJ1Y3QgcHBwb3hfc29jayAqc29jayxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XHRcdCAgICBzdHJ1Y3QgcHB0cF9hZGRyICpzYSlcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTI0PXN0YXRpYyB2b2lkIGRlbF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMzI6c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVx0XHRcdFx0XHRzdHJ1Y3QgZmxvd2k0ICpmbDQpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE0OTpzdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTMtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE1NDpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTU1Olx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTYtXHR1bnNpZ25lZCBpbnQgaGVhZGVyX2xlbiA9IHNpemVvZigqaGRyKTtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE2OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTcwOlx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTcxLVx0aWYgKElTX0VSUihydCkpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTYtXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyMTc6XHRoZHIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxOC1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjc2Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc4LVx0X191OCAqcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjc5Olx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODAtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NDpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg1LVx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTItXHRcdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTM6XHRcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjk0LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNDc6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDktXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM1MDpcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzUxLVx0c3RydWN0IGlwaGRyICppcGg7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjAtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MTpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE0LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyMC1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDIxOlx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MjItXHRzdHJ1Y3QgcnRhYmxlICpydDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1My1cdHBvLVx1MDAzZWNoYW4ucHJpdmF0ZSA9IHNrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTQ6XHRwby1cdTAwM2VjaGFuLm9wcyA9IFx1MDAyNnBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDU2Olx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDU3LVx0aWYgKElTX0VSUihydCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4Olx0cG8tXHUwMDNlY2hhbi5oZHJsZW4gPSAyICYjNDM7IHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY5LVx0cG8tXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ4NDpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAxOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMi17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUzMzpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDI6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDMte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ2LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDc6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDk6XHRzayA9IHNrX2FsbG9jKG5ldCwgUEZfUFBQT1gsIEdGUF9LRVJORUwsIFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTAtXHRpZiAoIXNrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU1LVx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTY6XHRzb2NrLVx1MDAzZW9wcyAgID0gXHUwMDI2cHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXHRzay1cdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MzpcdHNrLVx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjQtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NjpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODAtXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4MTpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTgyLVx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MDg6XHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA5Olx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjEwLX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTMtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MTg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMC1cdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYyMTpcdC5yZWxlYXNlICAgID0gcHB0cF9yZWxlYXNlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjI6XHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjIzOlx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyNC1cdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjY6XHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI3LVx0Lmxpc3RlbiAgICAgPSBzb2NrX25vX2xpc3Rlbixcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwb3hfcHJvdG8gcHBwb3hfcHB0cF9wcm90byA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM5Olx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDAtXHQub3duZXIgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ0Olx0LmhhbmRsZXIgPSBwcHRwX3JjdixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Ni1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ3OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ4LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2Olx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcdTAwMjZncmVfcHB0cF9wcm90b2NvbCwgR1JFUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjYyOlx0ZXJyID0gcHJvdG9fcmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90bywgMCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2My1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjY4Olx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3Ni1vdXRfdW5yZWdpc3Rlcl9za19wcm90bzpcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc3Olx0cHJvdG9fdW5yZWdpc3RlcihcdTAwMjZwcHRwX3NrX3Byb3RvKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc4LW91dF9ncmVfZGVsX3Byb3RvY29sOlxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Nzk6XHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjgwLW91dF9tZW1fZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg2OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4Ny17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1cdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4OTpcdHByb3RvX3VucmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5MDpcdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTEtXHR2ZnJlZShjYWxsaWRfc29jayk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NDptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk1Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NjcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdC4gUmlnaHQsIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBpdCYjMzk7cyB0b3VjaGluZyBhcmUgYHBwdHBfcmN2YCwgYHBwdHBfYmluZGAsIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9yZWxlYXNlYCwgYHBwdHBfZ2V0bmFtZWAsIGBwcHRwX3htaXRgLCBgcHB0cF9wcHBfaW9jdGxgLCBhbmQgYHBwdHBfY3JlYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIFBQVHAgZnVuY3Rpb25zLCBzbyBjaGFuZ2VzIGhlcmUgYXJlIHNpZ25pZmljYW50LiBCdXQgaXQgbG9va3MgbGlrZSB0aGUgKmNvcmUqIHdvcmsgaXMgZm9jdXNlZCBvbiBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIGlzIGNhbGxlZCBpbmRpcmVjdGx5IGZyb20gYHBwdHBfcmN2YC4gTGV0IG1lIHNlZS4uLiBgc2tfcmVjZWl2ZV9za2JgLi4uIG5vLCB3YWl0LCBpdCYjMzk7cyBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gUmlnaHQsIHNvIHRoaXMgYHBwdHBfcmN2X2NvcmVgIGlzIGJlaW5nIGNhbGxlZCB3aGVuIHRoZSBzeXN0ZW0gcHJvY2Vzc2VzIHRoZSBiYWNrbG9nLiBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBoYW5kbGVkLiBBbmQgaXQgYWxzbyB0b3VjaGVzIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyBkZXN0cm95ZWQsIHNvIHRoYXQmIzM5O3MgYSBjbGVhbnVwIGFzcGVjdCB0byBjb25zaWRlci4KCkFscmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBwdHBfcmN2YCBhbmQgZm9sbG93IHRoZSBjYWxsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwdHBfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNDc6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTQyPXN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2Vybilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz02NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBncmVfcHJvdG9jb2wgZ3JlX3BwdHBfcHJvdG9jb2wgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcdC5oYW5kbGVyID0gcHB0cF9yY3YsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0NS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFBUIFByb3RvY29sIEhhbmRsZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBwcHRwYCBjb2RlLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLCBiZWluZyB0aGUgR1JFIHByb3RvY29sIGhhbmRsZXIuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHJlY2VpdmluZyBwYWNrZXRzLiBJJiMzOTtsbCBhbHNvIGFkZCBgcHB0cF9iaW5kYCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9yZWxlYXNlYCB0byB0aGUgbGlzdCBvZiBrZXkgc3ltYm9scyB0byBpbnZlc3RpZ2F0ZS4KCkhhbmcgb24sIHRob3VnaC4uLiBgcHB0cF9yY3ZgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgYHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBUaGF0IGNvdWxkIGJlIGFuIGlzc3VlLiBCdXQgd2FpdCwgaXQmIzM5O3MgYWN0dWFsbHkgYXNzaWduZWQgdG8gYSBgLmhhbmRsZXJgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBncmVfcHB0cF9wcm90b2NvbGAuIEFoYSEgSWYgaXQgKndlcmVuJiMzOTt0KiBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0ICptaWdodCogYmUgaW5saW5lZCwgYW5kIHRoZXJlZm9yZSBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBCdXQgYmVjYXVzZSBpdCAqaXMqIGFzc2lnbmVkIHRvIHRoYXQgZnVuY3Rpb24gcG9pbnRlciwgaW5saW5pbmcgaXMgaW1wb3NzaWJsZS4gU28sIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBpdCAqd2lsbCogaGF2ZSBhIHN5bWJvbC4KCk5vdywgSSBuZWVkIHRvIGtlZXAgdGhlIHByb21wdCYjMzk7cyBwcmVmZXJlbmNlIGluIG1pbmQ6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBwcHRwX3JjdmAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpcyAqbm90KiBpbmxpbmVkLiBJIGFtIGdvb2QsIGhlcmUhIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSB0aGUgY29kZWJhc2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHBwdHBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjMzCgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3RhdGljIElzc3VlcyoqCgpBbHJpZ2h0LCBiZWZvcmUgd2UgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJiMzOTt0IGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlZCBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBjYXVzZSBwcm9ibGVtcy4gSSBrbm93IGJldHRlciB0aGFuIHRvIGJsaW5kbHkgdHJ1c3QgdGhhdCBldmVyeXRoaW5nIGlzIGFzIGl0IHNob3VsZCBiZSwgZXNwZWNpYWxseSBpbiB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLiBUaGlzIGNoZWNrIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSByb2J1c3RuZXNzIGFuZCByZWxpYWJpbGl0eSBvZiB0aGUgY29kZWJhc2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCwgYW5kIEkmIzM5O20gbm90IGdvaW5nIHRvIHNraXAgaXQuIFdlJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBhcmNoaXRlY3R1cmUgaXMgc291bmQuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgYnVpbHQgb24gc29saWQgZ3JvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWjAtOV9dJiM0MztcXCo/IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NDpzdGF0aWMgREVDTEFSRV9CSVRNQVAoY2FsbGlkX2JpdG1hcCwgTUFYX0NBTExJRCAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDUtc3RhdGljIHN0cnVjdCBwcHBveF9zb2NrIF9fcmN1ICoqY2FsbGlkX3NvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NzpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNoYW5fbG9jayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkludGVybmFsIENvZGUgUmV2aWV3OiBTaW1wbGlmeWluZyBQUFRQIEZ1bmN0aW9uIENhbGxzKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGJhY2sgaW50byB0aGlzIFBQVFAgY29kZS4gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIGtlZXAgaXQgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7bGwgc3RpY2sgdG8gdGhvc2UgY29yZSBmdW5jdGlvbiBjYWxscywgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBhbmQgYHBwdHBfcmVsZWFzZWAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIGFzcGVjdHMuCgpXYWl0IGEgc2Vjb25kLi4uIHNvbWV0aGluZyYjMzk7cyBuYWdnaW5nIGF0IG1lLiBBcmUgYWxsIHRoZSBmdW5jdGlvbnMgd2l0aGluIGBwcHRwLmNgICpzdGF0aWMqPyBJIHJlYWxseSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IGhhcyBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgaG93IHdlIGNhbiBpbnRlcmFjdCB3aXRoIHRoZW0uIElmIHRoZXkgYXJlLCB0aGF0IHdpbGwgaW1wYWN0IHRoZSBkZXNpZ24sIG1vZHVsYXJpdHksIGFuZCwgZnJhbmtseSwgdGhlIHRlc3RhYmlsaXR5IG9mIHRoaXMgbW9kdWxlIHNpZ25pZmljYW50bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYSBjcml0aWNhbCBhY2Nlc3MgcG9pbnQuIFRpbWUgZm9yIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBUaGlzIGlzIGEgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZ290Y2hhLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGFjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ0OnN0YXRpYyBERUNMQVJFX0JJVE1BUChjYWxsaWRfYml0bWFwLCBNQVhfQ0FMTElEICYjNDM7IDEpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTpzdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgX19yY3UgKipjYWxsaWRfc29jaztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soY2hhbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUzOnN0YXRpYyBzdHJ1Y3QgcHBwb3hfc29jayAqbG9va3VwX2NoYW4odTE2IGNhbGxfaWQsIF9fYmUzMiBzX2FkZHIpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTcxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MjpzdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzMte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjk0OnN0YXRpYyBpbnQgYWRkX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2ssXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTk1LVx0XHQgICAgc3RydWN0IHBwdHBfYWRkciAqc2EpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEyNDpzdGF0aWMgdm9pZCBkZWxfY2hhbihzdHJ1Y3QgcHBwb3hfc29jayAqc29jaylcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTMyOnN0YXRpYyBzdHJ1Y3QgcnRhYmxlICpwcHRwX3JvdXRlX291dHB1dChjb25zdCBzdHJ1Y3QgcHBwb3hfc29jayAqcG8sXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMy1cdFx0XHRcdFx0c3RydWN0IGZsb3dpNCAqZmw0KVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNDk6c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTAte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ3OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE0LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDg0OnN0YXRpYyBpbnQgcHB0cF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4NS1cdGludCBwZWVyKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAwLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MDE6c3RhdGljIGludCBwcHRwX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTMzOnN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDEtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0MjpzdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0My17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NjpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDgtXHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTMtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MTg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzOS1cdC5jcmVhdGUgPSBwcHRwX2NyZWF0ZSxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDQtXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDc6c3RhdGljIGludCBfX2luaXQgcHB0cF9pbml0X21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDgte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg1LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2ODY6c3RhdGljIHZvaWQgX19leGl0IHBwdHBfZXhpdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2OTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBDb2RlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQuIEhtbSwgaXQgbG9va3MgbGlrZSBtb3N0IG9mIHRoZW0gYXJlIHN0YXRpYywgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgYnkgaW5jbHVkaW5nIGBwcHRwX3JjdmAsIGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9iaW5kYC4gQWgsIGJ1dCBob2xkIG9uLCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlICptb2RpZmllZCogZnVuY3Rpb24sIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcHB0cF9zb2NrX2Rlc3RydWN0YCBoYXMgYWxzbyBiZWVuIGFsdGVyZWQuIFJpZ2h0LCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIHRob3NlLiBUaGUgbGlzdCBzaG91bGQgcmVhbGx5IGJlIGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfc29ja19kZXN0cnVjdGAsIGBwcHRwX3JjdmAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIFRoYXQgY292ZXJzIHRoZSBjb3JlIGNoYW5nZXMuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdHMuIFRoZSBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCBhcmUgYFBQVFBgIGFuZCBgTkVUX0lQR1JFX0RFTVVYYC4gQnV0IHdhaXQgYSBzZWNvbmQsIGBORVRfSVBHUkVfREVNVVhgIGlzIGFjdHVhbGx5IGEgZGVwZW5kZW5jeSBvZiBgUFBUUGAuIEkgc2hvdWxkIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhvc2Ugb3B0aW9ucywgc28gdGhhdCB0aGUgYW5hbHlzaXMgaXMgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNzktXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBORVRfSVBHUkVfREVNVVhgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYC4gQmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgYXNzZXNzbWVudCBvciB3b3JrIHdpdGggaXQsIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgcmVsaWVzIG9uIGFuZCB3aGF0IG1pZ2h0IGJyZWFrIGlmIEkgd2VyZSB0byBjaGFuZ2UgaXQuIFRoaXMgaXMgZnVuZGFtZW50YWw7IEkgY2FuJiMzOTt0IGJ1aWxkIG9uIHNoYWt5IGdyb3VuZC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzIHRoZSBmaXJzdCBrZXkgdG8gc2FmZSBhbmQgaW5mb3JtZWQgbW9kaWZpY2F0aW9uLiBTbywgbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXG4gMTgxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbiAxODI6XHRcdGhlbHBcbiAxODM6XHRcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxuIDE4NDpcdFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cbiAxODU6XHRcbiAxODY6XHRjb25maWcgTkVUX0lQX1RVTk5FTFxuIDE4NzpcdFx0dHJpc3RhdGVcbiAxODg6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAxODk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1OTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgUFBUUCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBub3RpY2VkIHRoYXQgYE5FVF9JUEdSRV9ERU1VWGAgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMgb24gaXRzIG93bi4gVGhhdCwgY291cGxlZCB3aXRoIGBQUFRQYCwgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUsIGBQUFRQYCAqZG9lcyogZGVwZW5kIG9uIGBORVRfSVBHUkVfREVNVVhgLiBTbyBpZiBJIHNwZWNpZnkgYFBQVFBgLCBgTkVUX0lQR1JFX0RFTVVYYCBtaWdodCBiZSBpbmRpcmVjdGx5IG5lZWRlZCB1bmxlc3MgaXQmIzM5O3MgaGFuZGxlZCB2aWEgYHNlbGVjdGAuIEp1c3QgdG8gYmUgc2FmZSwgSSYjMzk7bGwgaW5jbHVkZSBib3RoIGluIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIHdoYXQgYWJvdXQgYFBQUE9YYD8gQWgsIHJpZ2h0LCBgUFBUUGAgKnNlbGVjdHMqIGBQUFBPWGAuIFNvLCBgUFBUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGhlcmUuCgpOb3csIGxldCYjMzk7cyByZS1leGFtaW5lIHRoYXQgcGF0Y2guIEhtbSwgSSBzZWUgaXQmIzM5O3MgY2hhbmdlZCB0aGUgbG9naWMuIEl0IG5vdyBwcmV2ZW50cyBwYWNrZXRzIGZyb20gYmVpbmcgcXVldWVkIHRvIGFuIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0LiBJdCBhbHNvIHJlbW92ZXMgYSBxdWV1ZSBwdXJnZSBmcm9tIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGlzIHNpZ25pZmljYW50ISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX2JpbmRgLiBNeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBgUFBUUGAgYW5kIGBORVRfSVBHUkVfREVNVVhgLiAKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBQUFBPWGAgaXMgYWN0dWFsbHkgYSBjb25maWcgb3B0aW9uIHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQUE9YJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTA0PWNvbmZpZyBQUFBPQVRNXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNzgKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgeW91ciBzdW1tYXJ5OgoKKipDb25maWd1cmluZyBQUFBPWCBhbmQgU2V0dGluZyBSZXN1bHRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBQUFBPWGAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaW1lIHRvIGFkZCBpdCB0byB0aGUgc3lzdGVtLiBOb3cgdGhhdCBJJiMzOTt2ZSBoYW5kbGVkIHRoYXQsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBkb2luZyB0aGluZ3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgdG8gZW5zdXJlIHRoZSByZXN1bHQgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O1BQUE9YJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3NvY2tfZGVzdHJ1Y3QmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtQUFBPWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9zb2NrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDssCiAgICAmIzM0O3BwdHBfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwcHRwX2JpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwpAQCAtMjc4LDExICYjNDM7Mjc4LDggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIAotCWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKSB7Ci0JCWlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpCi0JCQlnb3RvIGRyb3A7Ci0JCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKLQl9CiYjNDM7CWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKQomIzQzOwkJZ290byBkcm9wOwogCiAJaGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLSZndDtkYXRhKTsKIAloZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTsKQEAgLTUzOSw3ICYjNDM7NTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAkJZGVsX2NoYW4ocHBwb3hfc2soc2spKTsKIAkJcHBwb3hfdW5iaW5kX3NvY2soc2spOwogCX0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSk7CiAJZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay0mZ3Q7c2tfZHN0X2NhY2hlLCAxKSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUFBUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBUaGUgZmlyc3QgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYCBpcyBpbnRlcmVzdGluZy4gSXQgcmVtb3ZlcyB0aGUgcGFja2V0IHF1ZXVpbmcgaWYgdGhlIHNvY2tldCBpc24mIzM5O3QgY29ubmVjdGVkLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCB0aGlzIGNvbmRpdGlvbmFsOiBpZiB0aGUgc29ja2V0IHdhc24mIzM5O3QgaW4gYSBjb25uZWN0ZWQgc3RhdGUsIGl0IHdvdWxkICp0cnkqIHRvIHF1ZXVlIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdXNpbmcgYHNvY2tfcXVldWVfcmN2X3NrYmAsIGFuZCBpZiB0aGF0IGZhaWxlZCwgdGhlIHBhY2tldCB3b3VsZCBiZSBkcm9wcGVkLiBUaGUgcGF0Y2ggc2ltcGxpZmllcyB0aGlzOyBpZiB0aGUgc29ja2V0IGlzbiYjMzk7dCBjb25uZWN0ZWQsIHRoZSBwYWNrZXQgaXMgc2ltcGx5IGRyb3BwZWQuIFN0cmFpZ2h0Zm9yd2FyZC4KCk5vdywgdGhlIHNlY29uZCBtb2RpZmljYXRpb24gaW4gYHBwdHBfc29ja19kZXN0cnVjdGAgaGFzIGNhdWdodCBteSBhdHRlbnRpb24uIEl0IHJlbW92ZXMgYSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSlgLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gYXNrICYjMzQ7d2h5PyYjMzQ7LiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHVyZ2luZyB0aGUgcmVjZWl2ZSBxdWV1ZSB3aGVuIHRoZSBzb2NrZXQgd2FzIGJlaW5nIGRlc3Ryb3llZC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgaWYgdGhlIHNvY2tldCBpc24mIzM5O3QgY29ubmVjdGVkLCB0aGVyZSBzaG91bGRuJiMzOTt0IGJlIGFueXRoaW5nIG9uIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciBpZiBzb21ldGhpbmcgaXMgb24gdGhlcmUsIGl0IHNob3VsZG4mIzM5O3QgY2F1c2UgYSBwcm9ibGVtLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIHN1c3BpY2lvbi4gTG9va2luZyBhdCB0aGUgY29kZSBtb3JlIGNsb3NlbHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhciBhcyB0aG91Z2ggdGhlcmUgaXMgYSByZWFkIG9wZXJhdGlvbiBmcm9tIGBza19yZWNlaXZlX3F1ZXVlYCBmb3IgYHBwdHBgIHNvY2tldHMuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gcmVtb3ZpbmcgdGhlIHB1cmdlIG1ha2VzIHBlcmZlY3Qgc2Vuc2U6IGl0JiMzOTtzIGFuIHVubmVjZXNzYXJ5IG9wZXJhdGlvbi4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gYHBwdHAuY2AgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza19yZWNlaXZlX3F1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgUmFiYml0IEhvbGUqKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHJlY2FsaWJyYXRlIG15IG1lbnRhbCBtb2RlbCBoZXJlLiBUaGUgYHNrX3JlY2VpdmVfcXVldWVgLi4uIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgY29yZSBgc3RydWN0IHNvY2tgLCBpc24mIzM5O3QgaXQ/IENsYXNzaWMgbmV0d29ya2luZyBzdHJ1Y3R1cmUuIEl0JiMzOTtzIGVhc3kgdG8gbG9zZSB0cmFjayB3aGVuIHlvdSYjMzk7cmUganVtcGluZyBhcm91bmQgZGlmZmVyZW50IG1vZHVsZXMuIE9rYXksIHNvIGl0JiMzOTtzICp0aGVyZSouIFRoYXQgaGFzIHNvbWUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgaXQmIzM5O3MgaGFuZGxlZCBhdCBhIGxvd2VyIGxldmVsLCBpbXBsaWNhdGlvbnMgdGhhdCBhcmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgb3IgcXVldWluZyBiZWhhdmlvci4KCk5vdywgSSYjMzk7bSB0aGlua2luZywgd2hlcmUgZWxzZSBkb2VzIGBwcHRwLmNgIHRvdWNoIG9uIHRoaXM/IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYHBwdHAuY2AgZmlsZSBhbmQgc2VlIGlmIHRoaXMgcXVldWUgaXMgdXNlZCBpbiBhbnkgb3RoZXIgY29udGV4dCB0aGVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgKmFjdHVhbGx5KiBpbnRlcmFjdGluZyB3aXRoIGl0IGluIHRoaXMgc3BlY2lmaWMgUFBUUCBpbXBsZW1lbnRhdGlvbi4gQXJlIHRoZXkganVzdCB1c2luZyBpdCBpbiBhIHN0YW5kYXJkIHdheSwgb3IgYXJlIHRoZXJlIGFueS4uLiBsZXQmIzM5O3MgY2FsbCB0aGVtICYjMzQ7dW5pcXVlJiMzNDsgb3BlcmF0aW9ucy4gVGhvc2UgZGV0YWlscyBjb3VsZCBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcsIG9yIG9wdGltaXppbmcuIFRpbWUgdG8gcHVsbCB0aGF0IGNvZGUgdXAgYW5kIHNjcnV0aW5pemUgaXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tfcmVjZWl2ZV9xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwcG9lLmM9NTAzPXN0YXRpYyB2b2lkIHBwcG9lX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbmRyaXZlcnMvbmV0L3BwcC9wcHBvZS5jLTUwNC17XG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYzo1MDU6XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSk7XG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQxCgkJCQkJCQlvdXRwdXQ6IDE5MAoJCQkJCQkJdGhvdWdodHM6IDYwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHBwdHAuYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgcHB0cF9yY3ZfY29yZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgdGhlIGJsb2NrIHRoYXQgcXVldWVzIGluY29taW5nIGBza2JgcyB0byBgc2stJmd0O3NrX3JlY2VpdmVfcXVldWVgIGlmIHRoZSBzb2NrZXQgaXNuJiMzOTt0IGNvbm5lY3RlZC4gSW5zdGVhZCBvZiBxdWV1ZWluZywgaXQmIzM5O3MganVzdCBkcm9wcGluZyB0aGUgYHNrYmAuIE1ha2VzIHNlbnNlLiBUaGUgbG9naWMgaXMgdGhhdCBpZiBpdCYjMzk7cyBub3QgY29ubmVjdGVkLCB3aHkgYm90aGVyPwoKVGhlbiwgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAsIGl0JiMzOTtzIHJlbW92aW5nIHRoZSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSlgLiBSaWdodCwgYmVjYXVzZSBpZiBgcHB0cF9yY3ZfY29yZWAgaXNuJiMzOTt0IHVzaW5nIHRoZSBxdWV1ZSBhbnltb3JlLCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIHB1cmdlLiBJdCYjMzk7cyBjbGVhbnVwLgoKTXkgZmlyc3QgZ3V0IHJlYWN0aW9uIGlzIHRvIGNoZWNrIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU2luY2Ugd2UgYXJlIGNoYW5naW5nIGxvZ2ljLCBJIGhhdmUgdG8gYmUgc3VyZS4gQnV0IHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBwcmV2ZW50aW5nIHRoZSBxdWV1ZSBmcm9tIGJlaW5nIHVzZWQgd2hlbiBpdCBzaG91bGRuJiMzOTt0IGJlLiBJdCBmZWVscyBsaWtlIGEgZml4IHRvIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlLCBvciBhdCBsZWFzdCBhIGJ1ZyB3aGVyZSBza2JzIGdldCBxdWV1ZWQgYW5kIG5ldmVyIGhhbmRsZWQuCgpOb3csIEkgbmVlZCB0byBiZSAqc3VyZSouIElmIGBza2JfcXVldWVfcHVyZ2VgIGlzIHJlbW92ZWQgYW5kIHNvbWV0aGluZyAqZWxzZSogaXMgc3RpbGwgcXVldWluZywgd2UgY291bGQgaGF2ZSBhIGxlYWsuIFNvLCBJIGNoZWNrZWQuIEkgZ3JlcHBlZCB0aGUgd2hvbGUgYHBwdHAuY2AgZmlsZSBmb3IgYHNrX3JlY2VpdmVfcXVldWVgIHRvIGNvbmZpcm0gdGhhdCBgc29ja19xdWV1ZV9yY3Zfc2tiYCB3YXMgdGhlIG9ubHkgcGxhY2UgdGhhdCBkaWQgdGhpcy4gQW5kIEkgZGlkbiYjMzk7dCBnZXQgYW55IGhpdHMuIFNvLCBpdCYjMzk7cyBjbGVhbiBvbiB0aGF0IGZyb250LgoKRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZD8gSXQmIzM5O3MgYWxsIHJlbW92YWwsIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBmaWVsZHMsIGl0IG9ubHkgcHJldmVudHMgc2ticyBiZWluZyBxdWV1ZWQgYW5kIHB1cmdpbmcgdGhlIHF1ZXVlIHRoYXQgaXNuJiMzOTt0IGJlaW5nIHVzZWQuIEl0IHNlZW1zIGV4dHJlbWVseSB1bmxpa2VseS4gU28sIEkgZG9uJiMzOTt0IHRoaW5rIEtNU0FOIGlzIG5lZWRlZC4gS0FTQU4va21lbWxlYWsgc2hvdWxkIGJlIG1vcmUgdGhhbiBzdWZmaWNpZW50IHRvIGNhdGNoIHBvdGVudGlhbCBpc3N1ZXMsIHRob3VnaCB0aGUgY2hhbmNlcyBhcmUgbG93LgoKTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIG9uZSBtb3JlIHRoaW5nOiBgc29ja19xdWV1ZV9yY3Zfc2tiYC4gSWYgaXQgZHJvcHMgdGhlIHNrYiwgdGhlIHNrYiBpcyBmcmVlZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZC4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGlzIHBhdGNoIGxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MDUuNTUxMTE5NDgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NTEyNTg2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJQUFBPWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfc29ja19kZXN0cnVjdFwiLFxuICAgIFwicHB0cF9yY3ZcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MDUuNTUxMTIzNTgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ2MTc5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMGUzMmMyNzhkMWYzMTgyZTI2MWQ5NzkzNmZkNDY5ZTY5ZTg3ZjJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDA4OjI4OjA0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xcbkBAIC0yNzgsMTEgKzI3OCw4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdF9fdTggKnBheWxvYWQ7XFxuIFxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG4gXFxuLVxcdGlmICghKHNrLVxcdTAwM2Vza19zdGF0ZSBcXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpIHtcXG4tXFx0XFx0aWYgKHNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSlcXG4tXFx0XFx0XFx0Z290byBkcm9wO1xcbi1cXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuLVxcdH1cXG4rXFx0aWYgKCEoc2stXFx1MDAzZXNrX3N0YXRlIFxcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcXG4rXFx0XFx0Z290byBkcm9wO1xcbiBcXG4gXFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG4gXFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuQEAgLTUzOSw3ICs1MzYsNiBAQCBzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbiBcXHRcXHRkZWxfY2hhbihwcHBveF9zayhzaykpO1xcbiBcXHRcXHRwcHBveF91bmJpbmRfc29jayhzayk7XFxuIFxcdH1cXG4tXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSk7XFxuIFxcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXFx1MDAzZXNrX2RzdF9jYWNoZSwgMSkpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODowNS45ODY1MDIyOTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MzIyODQ3NjA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIixcbiAgICBcIlBQUE9YXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9zb2NrX2Rlc3RydWN0XCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMGUzMmMyNzhkMWYzMTgyZTI2MWQ5NzkzNmZkNDY5ZTY5ZTg3ZjJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDg6Mjg6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzgsMTEgKzI3OCw4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuLVx0aWYgKCEoc2stXHUwMDNlc2tfc3RhdGUgXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpIHtcbi1cdFx0aWYgKHNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSlcbi1cdFx0XHRnb3RvIGRyb3A7XG4tXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbi1cdH1cbitcdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxuK1x0XHRnb3RvIGRyb3A7XG4gXG4gXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gXHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbkBAIC01MzksNyArNTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbiBcdFx0ZGVsX2NoYW4ocHBwb3hfc2soc2spKTtcbiBcdFx0cHBwb3hfdW5iaW5kX3NvY2soc2spO1xuIFx0fVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3JlY2VpdmVfcXVldWUpO1xuIFx0ZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay1cdTAwM2Vza19kc3RfY2FjaGUsIDEpKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODowNS45ODY1MDM4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjgzMDc2NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBQVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IHNvbWUgY2hhbmdlcyBpbiB0aGUgY29yZSBwYWNrZXQgaGFuZGxpbmcgYW5kIHNvY2tldCBkZXN0cnVjdGlvbiByb3V0aW5lcywgc3BlY2lmaWNhbGx5IGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuSW4gYHBwdHBfcmN2X2NvcmVgLCBpdCBsb29rcyBsaWtlIHdlJ3JlIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmb3IgcGFja2V0cyByZWNlaXZlZCB3aGVuIHRoZSBzb2NrZXQgaXNuJ3QgaW4gYSBjb25uZWN0ZWQgc3RhdGUgKGAhKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpYCkuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIHF1ZXVlIHRoZXNlIHBhY2tldHMgdXNpbmcgYHNvY2tfcXVldWVfcmN2X3NrYmAgYW5kIHRoZW4sIGlmIHF1ZXVpbmcgZmFpbGVkLCB3b3VsZCBkcm9wIHRoZW0uIE5vdywgd2UncmUgZHJvcHBpbmcgdGhlbSBpbW1lZGlhdGVseSB3aXRoIGEgYGdvdG8gZHJvcGAuIFRoYXQncyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgbm8gbW9yZSBidWZmZXJpbmcgb2YgdW5leHBlY3RlZCBwYWNrZXRzLiBUaGlzIGltcGxpZXMgYSBzdHJpY3RlciBhZGhlcmVuY2UgdG8gdGhlIFBQVFAgc3RhdGUgbWFjaGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hhbmdlIHdhcyBkZWVtZWQgbmVjZXNzYXJ5LiBQb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGhlcmUgYXMgd2VsbC5cblxuVGhlbiwgbW92aW5nIG9uIHRvIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3ZSd2ZSBnb3QgdGhlIHJlbW92YWwgb2YgYHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKWAuIFRoYXQncyBpbnRlcmVzdGluZy4gUHJldmlvdXNseSwgd2hlbiBhIHNvY2tldCB3YXMgZGVzdHJ1Y3RlZCwgYW55IHJlbWFpbmluZyBwYWNrZXRzIGluIHRoZSByZWNlaXZlIHF1ZXVlIHdlcmUgcHVyZ2VkLiBOb3csIHdlJ3JlIGFzc3VtaW5nIHRoZSBxdWV1ZSBpcyBlbXB0eSwgb3IgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLiBBZ2FpbiwgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgd2UncmUgbWFuYWdpbmcgYnVmZmVyZWQgZGF0YSBhdCBzb2NrZXQgdGVhcmRvd24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHB1cmdlIGlzIG5vIGxvbmdlciBuZWVkZWQuIElzIHRoaXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYD8gUGVyaGFwcyB0aGUgbmV3IGRyb3Atb24tdW5jb25uZWN0ZWQgYmVoYXZpb3IgbWFrZXMgdGhlIHF1ZXVlIHB1cmdlIHJlZHVuZGFudD8gT3IgaXMgdGhlcmUgYSBkaWZmZXJlbnQgZGF0YSBtYW5hZ2VtZW50IHBsYW4/XG5cbkdpdmVuIHRoZXNlIGZ1bmN0aW9uYWwgY2hhbmdlcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB3aXRoaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgaW1wYWN0ZWQgYnkgdGhlc2UgbW9kaWZpY2F0aW9ucy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhpcywgYXMgaXQgY291bGQgaGF2ZSBkb3duc3RyZWFtIGltcGxpY2F0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTIuNjY5NTgzMDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDU2NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYyLVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTIuNzI2NjQ1OTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3OTg3MTMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQUFRQIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtIGlzIHNldCB0byB1c2UgYFBQVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBtb2R1bGUuIFNpbmNlIEknbSB3b3JraW5nIHdpdGggdGhlIGtlcm5lbCwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciBhbGwgdGhpbmdzIFBQUC1yZWxhdGVkLCBhbmQgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGllZCB0byB0aGUgYFBQVFBgIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIGFyZSByZXF1aXJlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgUFBUUGAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1lOiBxdWlja2x5IGxvY2F0ZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBJdCdzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgUFBQIHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgzLCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTYuMjA2NTE5MTk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDk4NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYyLVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTYuMjU1MDIxMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjE6XFx0Y29uZmlnIFBQVFBcXG4gMTYyOlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG4gMTYzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXFxuIDE2NDpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTY1OlxcdFxcdGhlbHBcXG4gMTY2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQIG92ZXIgSVB2NC4oUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKVxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcXG4gMTY5OlxcdFxcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cXG4gMTcwOlxcdFxcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xcbiAxNzE6XFx0XFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUFBQT0wyVFBcXG4gMTc0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbiAxNzU6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQXFxuIDE3NjpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcXG4gMTc5OlxcdFxcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcXG4gMTgwOlxcdFxcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjE2LjI1NTEwNzU0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MDU1MjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgUHJvdG9jb2wgRGVwZW5kZW5jaWVzIGFuZCBNb2R1bGUgUmV2aWV3KipcblxuUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIG15IGludGVybmFsIHByb2Nlc3MgZmxhZ3MgYSBkZXBlbmRlbmN5OiBgTkVUX0lQR1JFX0RFTVVYYC4gVGhhdCBtZWFucywgaW1tZWRpYXRlbHksIEkndmUgZ290IHRvIGVuc3VyZSB0aGUgcHJlc2VuY2UgYW5kIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBib3RoIGBQUFRQYCBhbmQsIGNydWNpYWxseSwgYE5FVF9JUEdSRV9ERU1VWGAuIFRoZSBzeXN0ZW0ncyBhbHJlYWR5IHNlbGVjdGVkIGBQUFBPWGAsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCB3aGVyZSBkbyBJIG5lZWQgdG8gbG9vayB0byBjb25maXJtIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIG9wZXJhdGlvbj8gTXkgYXR0ZW50aW9uIHR1cm5zIHRvIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGZ1bmN0aW9ucyBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHJlY2VpdmluZyBQUFRQIHRyYWZmaWMgYW5kIHRoZSBzb2NrZXQgY2xlYW51cCBwcm9jZWR1cmVzLCByZXNwZWN0aXZlbHksIHJlc2lkZS4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwb2ludHMgdG8gdmVyaWZ5IHRvIHVuZGVyc3RhbmQgYW5kIHZhbGlkYXRlIHRoZSBlc3RhYmxpc2hlZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODoyMC4yOTU2NjM0NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDU1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01NDI9c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTg6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODoyMC4zNDE3MTcyNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MTMxMDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIFNldHVwIGFuZCBGdW5jdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHB0cGAgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBub3RpbmcgaXMgdGhlIGFzc2lnbm1lbnQ6IGBwcHRwX3Jjdl9jb3JlYCBpcyBiZWluZyBzZXQgYXMgdGhlIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdmAuIFRoaXMgbWFrZXMgc2Vuc2UsIHRoYXQncyB3aGVyZSB0aGUgY29yZSBwYWNrZXQgcmVjZXB0aW9uIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGhhcHBlbi4gVGhlbiB3ZSd2ZSBnb3QgYHBwdHBfc29ja19kZXN0cnVjdGAgYmVpbmcgYXNzaWduZWQgdG8gYHNrLVx1MDAzZXNrX2Rlc3RydWN0YC4gT2theSwgdGhhdCdzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgc29ja2V0LCBhcyB5b3UnZCBleHBlY3QuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnMsIHN0YXJ0aW5nIHdpdGggYHBwdHBfcmN2X2NvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJIGFtIGdvaW5nIHRvIHNlZSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBhbmQgaWYgdGhleSBhcmUsIHRoYXQgZ2l2ZXMgdXMgYSBjbGVhciBpbmRpY2F0aW9uIGFib3V0IHRoZSBjb2RlIHNjb3BlLiBBaCwgeWVzLCB0aGV5IGFyZSBpbmRlZWQgc3RhdGljIGZ1bmN0aW9ucywgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9zb2NrX2Rlc3RydWN0YCAuIFRoYXQncyBoZWxwZnVsLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBzb3VyY2UgZmlsZSwgd2hpY2ggbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLCBidXQgdGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhleSB3aWxsIGFsc28gYmUgYSBjb3JlIHBhcnQgb2YgdGhlIGNvZGUncyBpbXBsZW1lbnRhdGlvbi4gTGV0J3Mgc3RhcnQgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjQuMDgzMDQyOTQzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYyMjg4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzQtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmbG93aTQgKmZsNClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTQ6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjE3OlxcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzgtXFx0X191OCAqcGF5bG9hZDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3OTpcXHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODAtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI4My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NDpcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg1LVxcdGhlYWRlcnNpemUgID0gc2l6ZW9mKCpoZWFkZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTItXFx0XFx0XFx0Z290byBkcm9wO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjkzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0NzpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ5LVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM1MDpcXHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNTEtXFx0c3RydWN0IGlwaGRyICppcGg7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2MC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MTpcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzgxLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODMtXFx0XFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MTQtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNi1cXHRcXHRcXHRpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyMC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MjE6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MjItXFx0c3RydWN0IHJ0YWJsZSAqcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1My1cXHRwby1cXHUwMDNlY2hhbi5wcml2YXRlID0gc2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTQ6XFx0cG8tXFx1MDAzZWNoYW4ub3BzID0gXFx1MDAyNnBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NTUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTY6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NTctXFx0aWYgKElTX0VSUihydCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4OlxcdHBvLVxcdTAwM2VjaGFuLmhkcmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHBwdHBfZ3JlX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NjktXFx0cG8tXFx1MDAzZWNoYW4uZGlyZWN0X3htaXQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODQ6c3RhdGljIGludCBwcHRwX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4NS1cXHRpbnQgcGVlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAwLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAxOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MzM6c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0MS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0MjpzdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDYtXFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ3OlxcdHN0cnVjdCBwcHRwX29wdCAqb3B0O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ5OlxcdHNrID0gc2tfYWxsb2MobmV0LCBQRl9QUFBPWCwgR0ZQX0tFUk5FTCwgXFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUwLVxcdGlmICghc2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1NS1cXHRzb2NrLVxcdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU2OlxcdHNvY2stXFx1MDAzZW9wcyAgID0gXFx1MDAyNnBwdHBfb3BzO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4OlxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXFx0c2stXFx1MDAzZXNrX3N0YXRlICAgICAgID0gUFBQT1hfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYyLVxcdHNrLVxcdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjM6XFx0c2stXFx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NzY6c3RhdGljIGludCBwcHRwX3BwcF9pb2N0bChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzctXFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4MC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1ODE6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODItXFx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYwNi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA4OlxcdC5zdGFydF94bWl0ID0gcHB0cF94bWl0LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA5OlxcdC5pb2N0bCAgICAgID0gcHB0cF9wcHBfaW9jdGwsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTAtfTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxMjpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMy1cXHQubmFtZSAgICAgPSBcXFwiUFBUUFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxNy1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxODpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cXHQuZmFtaWx5ICAgICA9IEFGX1BQUE9YLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIwLVxcdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjE6XFx0LnJlbGVhc2UgICAgPSBwcHRwX3JlbGVhc2UsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjI6XFx0LmJpbmQgICAgICAgPSBwcHRwX2JpbmQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjM6XFx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjQtXFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXFx0LmFjY2VwdCAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYyNjpcXHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyNy1cXHQubGlzdGVuICAgICA9IHNvY2tfbm9fbGlzdGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBveF9wcm90byBwcHBveF9wcHRwX3Byb3RvID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM5OlxcdC5jcmVhdGUgPSBwcHRwX2NyZWF0ZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0MC1cXHQub3duZXIgID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDYtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDc6c3RhdGljIGludCBfX2luaXQgcHB0cF9pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2OlxcdGVyciA9IGdyZV9hZGRfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2MS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY2MjpcXHRlcnIgPSBwcm90b19yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90bywgMCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Njg6XFx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXFx1MDAyNnBwcG94X3BwdHBfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjY5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc2LW91dF91bnJlZ2lzdGVyX3NrX3Byb3RvOlxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc3OlxcdHByb3RvX3VucmVnaXN0ZXIoXFx1MDAyNnBwdHBfc2tfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc4LW91dF9ncmVfZGVsX3Byb3RvY29sOlxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc5OlxcdGdyZV9kZWxfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4MC1vdXRfbWVtX2ZyZWU6XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4NjpzdGF0aWMgdm9pZCBfX2V4aXQgcHB0cF9leGl0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1cXHR1bnJlZ2lzdGVyX3BwcG94X3Byb3RvKFBYX1BST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg5OlxcdHByb3RvX3VucmVnaXN0ZXIoXFx1MDAyNnBwdHBfc2tfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjkwOlxcdGdyZV9kZWxfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5MS1cXHR2ZnJlZShjYWxsaWRfc29jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NDptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NTptb2R1bGVfZXhpdChwcHRwX2V4aXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjQuMTQwNjcyMTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTI0Mjc1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3QuIFJpZ2h0LCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaXQncyB0b3VjaGluZyBhcmUgYHBwdHBfcmN2YCwgYHBwdHBfYmluZGAsIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9yZWxlYXNlYCwgYHBwdHBfZ2V0bmFtZWAsIGBwcHRwX3htaXRgLCBgcHB0cF9wcHBfaW9jdGxgLCBhbmQgYHBwdHBfY3JlYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIFBQVHAgZnVuY3Rpb25zLCBzbyBjaGFuZ2VzIGhlcmUgYXJlIHNpZ25pZmljYW50LiBCdXQgaXQgbG9va3MgbGlrZSB0aGUgKmNvcmUqIHdvcmsgaXMgZm9jdXNlZCBvbiBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIGlzIGNhbGxlZCBpbmRpcmVjdGx5IGZyb20gYHBwdHBfcmN2YC4gTGV0IG1lIHNlZS4uLiBgc2tfcmVjZWl2ZV9za2JgLi4uIG5vLCB3YWl0LCBpdCdzIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdmAuIFJpZ2h0LCBzbyB0aGlzIGBwcHRwX3Jjdl9jb3JlYCBpcyBiZWluZyBjYWxsZWQgd2hlbiB0aGUgc3lzdGVtIHByb2Nlc3NlcyB0aGUgYmFja2xvZy4gVGhhdCBzdWdnZXN0cyBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBoYW5kbGVkLiBBbmQgaXQgYWxzbyB0b3VjaGVzIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyBkZXN0cm95ZWQsIHNvIHRoYXQncyBhIGNsZWFudXAgYXNwZWN0IHRvIGNvbnNpZGVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBwdHBfcmN2YCBhbmQgZm9sbG93IHRoZSBjYWxsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjguMzMzMTAyMDkxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc0NzQwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ3OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0Mj1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU1ODpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU5LVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTY0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjI4LjQ3MDU4MjM2N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk3NzUyODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBUIFByb3RvY29sIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcHB0cGAgY29kZS4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBwcHRwX3JjdmAgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYmVpbmcgdGhlIEdSRSBwcm90b2NvbCBoYW5kbGVyLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBjb3JlIG9mIHJlY2VpdmluZyBwYWNrZXRzLiBJJ2xsIGFsc28gYWRkIGBwcHRwX2JpbmRgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX3JlbGVhc2VgIHRvIHRoZSBsaXN0IG9mIGtleSBzeW1ib2xzIHRvIGludmVzdGlnYXRlLlxuXG5IYW5nIG9uLCB0aG91Z2guLi4gYHBwdHBfcmN2YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGBzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpYC4gVGhhdCBjb3VsZCBiZSBhbiBpc3N1ZS4gQnV0IHdhaXQsIGl0J3MgYWN0dWFsbHkgYXNzaWduZWQgdG8gYSBgLmhhbmRsZXJgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBncmVfcHB0cF9wcm90b2NvbGAuIEFoYSEgSWYgaXQgKndlcmVuJ3QqIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEJ1dCBiZWNhdXNlIGl0ICppcyogYXNzaWduZWQgdG8gdGhhdCBmdW5jdGlvbiBwb2ludGVyLCBpbmxpbmluZyBpcyBpbXBvc3NpYmxlLiBTbywgZGVzcGl0ZSBiZWluZyBzdGF0aWMsIGl0ICp3aWxsKiBoYXZlIGEgc3ltYm9sLlxuXG5Ob3csIEkgbmVlZCB0byBrZWVwIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGluIG1pbmQ6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBwcHRwX3JjdmAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpcyAqbm90KiBpbmxpbmVkLiBJIGFtIGdvb2QsIGhlcmUhIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSB0aGUgY29kZWJhc2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MzQuMzY4MzM3OTAyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzU2Mzc4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgcHB0cF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MzQuNDY1OTA5NjgzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzI4MTgxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgUG90ZW50aWFsIFN0YXRpYyBJc3N1ZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgd2UgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJ3QgaW5hZHZlcnRlbnRseSBpbnRyb2R1Y2VkIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGNhdXNlIHByb2JsZW1zLiBJIGtub3cgYmV0dGVyIHRoYW4gdG8gYmxpbmRseSB0cnVzdCB0aGF0IGV2ZXJ5dGhpbmcgaXMgYXMgaXQgc2hvdWxkIGJlLCBlc3BlY2lhbGx5IGluIHRoZXNlIGtpbmRzIG9mIHN5c3RlbXMuIFRoaXMgY2hlY2sgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgdGhlIHJvYnVzdG5lc3MgYW5kIHJlbGlhYmlsaXR5IG9mIHRoZSBjb2RlYmFzZS4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAsIGFuZCBJJ20gbm90IGdvaW5nIHRvIHNraXAgaXQuIFdlJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGFyY2hpdGVjdHVyZSBpcyBzb3VuZC4gTGV0J3MgbWFrZSBzdXJlIHRoaXMgaXMgYWxsIGJ1aWx0IG9uIHNvbGlkIGdyb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzMsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODozOC42Mzg3MzA1ODdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rXFxcXCo/IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NDpzdGF0aWMgREVDTEFSRV9CSVRNQVAoY2FsbGlkX2JpdG1hcCwgTUFYX0NBTExJRCArIDEpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDUtc3RhdGljIHN0cnVjdCBwcHBveF9zb2NrIF9fcmN1ICoqY2FsbGlkX3NvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soY2hhbl9sb2NrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODozOC42ODYwOTA2MzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDE4MzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqSW50ZXJuYWwgQ29kZSBSZXZpZXc6IFNpbXBsaWZ5aW5nIFBQVFAgRnVuY3Rpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGJhY2sgaW50byB0aGlzIFBQVFAgY29kZS4gSSdtIHRoaW5raW5nLCBsZXQncyBrZWVwIGl0IGNsZWFuIGFuZCBzdHJhaWdodGZvcndhcmQuIEknbGwgc3RpY2sgdG8gdGhvc2UgY29yZSBmdW5jdGlvbiBjYWxscywgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBhbmQgYHBwdHBfcmVsZWFzZWAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIGFzcGVjdHMuXG5cbldhaXQgYSBzZWNvbmQuLi4gc29tZXRoaW5nJ3MgbmFnZ2luZyBhdCBtZS4gQXJlIGFsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiBgcHB0cC5jYCAqc3RhdGljKj8gSSByZWFsbHkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gVGhhdCBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJZiB0aGV5IGFyZSwgdGhhdCB3aWxsIGltcGFjdCB0aGUgZGVzaWduLCBtb2R1bGFyaXR5LCBhbmQsIGZyYW5rbHksIHRoZSB0ZXN0YWJpbGl0eSBvZiB0aGlzIG1vZHVsZSBzaWduaWZpY2FudGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYSBjcml0aWNhbCBhY2Nlc3MgcG9pbnQuIFRpbWUgZm9yIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBUaGlzIGlzIGEgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZ290Y2hhLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU3NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjQyLjI0MDI3NjE1OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDcwMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ0OnN0YXRpYyBERUNMQVJFX0JJVE1BUChjYWxsaWRfYml0bWFwLCBNQVhfQ0FMTElEICsgMSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTpzdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgX19yY3UgKipjYWxsaWRfc29jaztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDc6c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTM6c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MjpzdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo5NDpzdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTUtXFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMjQ6c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMzI6c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZmxvd2k0ICpmbDQpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE0OTpzdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0NzpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozODI6c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cXHRcXHQgICAgIGludCBzb2NrYWRkcl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQxNTpzdGF0aWMgaW50IHBwdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVxcdFxcdFxcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDg0OnN0YXRpYyBpbnQgcHB0cF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXFx0aW50IHBlZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwMTpzdGF0aWMgaW50IHBwdHBfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTMyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTMzOnN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDI6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTc2OnN0YXRpYyBpbnQgcHB0cF9wcHBfaW9jdGwoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVxcdHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBfY2hhbm5lbF9vcHMgcHB0cF9jaGFuX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYwOC1cXHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjExLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjEzLVxcdC5uYW1lICAgICA9IFxcXCJQUFRQXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE5LVxcdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzktXFx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBncmVfcHJvdG9jb2wgZ3JlX3BwdHBfcHJvdG9jb2wgPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDQtXFx0LmhhbmRsZXIgPSBwcHRwX3JjdixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ3OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4NjpzdGF0aWMgdm9pZCBfX2V4aXQgcHB0cF9leGl0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NDIuNDIwMzU0MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3ODk0MTM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvZGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQuIEhtbSwgaXQgbG9va3MgbGlrZSBtb3N0IG9mIHRoZW0gYXJlIHN0YXRpYywgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIExldCdzIHNlZS4uLiBJJ2xsIHN0YXJ0IGJ5IGluY2x1ZGluZyBgcHB0cF9yY3ZgLCBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIEFoLCBidXQgaG9sZCBvbiwgYHBwdHBfcmN2X2NvcmVgIGlzIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9uLCB0aGF0J3MgaW1wb3J0YW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcHB0cF9zb2NrX2Rlc3RydWN0YCBoYXMgYWxzbyBiZWVuIGFsdGVyZWQuIFJpZ2h0LCBzbyBJJ2xsIHByaW9yaXRpemUgdGhvc2UuIFRoZSBsaXN0IHNob3VsZCByZWFsbHkgYmUgYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9zb2NrX2Rlc3RydWN0YCwgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9iaW5kYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgY2hhbmdlcy4gTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gVGhlIGNvbmZpZyBvcHRpb25zIGludm9sdmVkIGFyZSBgUFBUUGAgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBCdXQgd2FpdCBhIHNlY29uZCwgYE5FVF9JUEdSRV9ERU1VWGAgaXMgYWN0dWFsbHkgYSBkZXBlbmRlbmN5IG9mIGBQUFRQYC4gSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aG9zZSBvcHRpb25zLCBzbyB0aGF0IHRoZSBhbmFseXNpcyBpcyBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0Ni44OTkyOTg0MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTU3ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVfREVNVVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0Ni45NDg0NjEyNDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxNjQ5MTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYC4gQmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgYXNzZXNzbWVudCBvciB3b3JrIHdpdGggaXQsIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgcmVsaWVzIG9uIGFuZCB3aGF0IG1pZ2h0IGJyZWFrIGlmIEkgd2VyZSB0byBjaGFuZ2UgaXQuIFRoaXMgaXMgZnVuZGFtZW50YWw7IEkgY2FuJ3QgYnVpbGQgb24gc2hha3kgZ3JvdW5kLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIGZpcnN0IGtleSB0byBzYWZlIGFuZCBpbmZvcm1lZCBtb2RpZmljYXRpb24uIFNvLCBsZXQncyBkaWcgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0OS44NjQ5NTQ5OThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjQ5Ljg2NTA0MDU2OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU4NjQxMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFBQVFAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgTkVUX0lQR1JFX0RFTVVYYCBoYXMgbm8gZGlyZWN0IGRlcGVuZGVuY2llcyBvbiBpdHMgb3duLiBUaGF0LCBjb3VwbGVkIHdpdGggYFBQVFBgLCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgYFBQVFBgICpkb2VzKiBkZXBlbmQgb24gYE5FVF9JUEdSRV9ERU1VWGAuIFNvIGlmIEkgc3BlY2lmeSBgUFBUUGAsIGBORVRfSVBHUkVfREVNVVhgIG1pZ2h0IGJlIGluZGlyZWN0bHkgbmVlZGVkIHVubGVzcyBpdCdzIGhhbmRsZWQgdmlhIGBzZWxlY3RgLiBKdXN0IHRvIGJlIHNhZmUsIEknbGwgaW5jbHVkZSBib3RoIGluIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIHdoYXQgYWJvdXQgYFBQUE9YYD8gQWgsIHJpZ2h0LCBgUFBUUGAgKnNlbGVjdHMqIGBQUFBPWGAuIFNvLCBgUFBUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGhlcmUuXG5cbk5vdywgbGV0J3MgcmUtZXhhbWluZSB0aGF0IHBhdGNoLiBIbW0sIEkgc2VlIGl0J3MgY2hhbmdlZCB0aGUgbG9naWMuIEl0IG5vdyBwcmV2ZW50cyBwYWNrZXRzIGZyb20gYmVpbmcgcXVldWVkIHRvIGFuIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0LiBJdCBhbHNvIHJlbW92ZXMgYSBxdWV1ZSBwdXJnZSBmcm9tIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGlzIHNpZ25pZmljYW50ISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfc29ja19kZXN0cnVjdGAsIGBwcHRwX3JjdmAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIE15IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuIFxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBQUFBPWGAgaXMgYWN0dWFsbHkgYSBjb25maWcgb3B0aW9uIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1OTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1NS44MjM2ODQxNzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTE5MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFBPWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMDQ9Y29uZmlnIFBQUE9BVE1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjU1Ljg3ODIwODMxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTc0Mzk4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnk6XG5cbioqQ29uZmlndXJpbmcgUFBQT1ggYW5kIFNldHRpbmcgUmVzdWx0cyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYFBQUE9YYCBpcyBpbmRlZWQgYSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRpbWUgdG8gYWRkIGl0IHRvIHRoZSBzeXN0ZW0uIE5vdyB0aGF0IEkndmUgaGFuZGxlZCB0aGF0LCBJJ2xsIGdvIGFoZWFkIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIGRvaW5nIHRoaW5ncyBpbiB0aGUgY29ycmVjdCBvcmRlciB0byBlbnN1cmUgdGhlIHJlc3VsdCBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM3OCwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1OS4xMzU2NTAxODRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMyNTUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJQUFBPWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfc29ja19kZXN0cnVjdFwiLFxuICAgIFwicHB0cF9yY3ZcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIixcbiAgICBcIlBQUE9YXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9zb2NrX2Rlc3RydWN0XCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1OS4yMTQ5ODE5NjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDg3Mzg0Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NTkuMjE1NTU4Mjg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMDg2ODA0MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzBlMzJjMjc4ZDFmMzE4MmUyNjFkOTc5MzZmZDQ2OWU2OWU4N2YyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA4OjI4OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG5AQCAtMjc4LDExICsyNzgsOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0X191OCAqcGF5bG9hZDtcbiBcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiBcbi1cdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKSB7XG4tXHRcdGlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpXG4tXHRcdFx0Z290byBkcm9wO1xuLVx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4tXHR9XG4rXHRpZiAoIShzay1cdTAwM2Vza19zdGF0ZSBcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcbitcdFx0Z290byBkcm9wO1xuIFxuIFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG5AQCAtNTM5LDcgKzUzNiw2IEBAIHN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRcdGRlbF9jaGFuKHBwcG94X3NrKHNrKSk7XG4gXHRcdHBwcG94X3VuYmluZF9zb2NrKHNrKTtcbiBcdH1cbi1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcbiBcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXHUwMDNlc2tfZHN0X2NhY2hlLCAxKSk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NTkuMjE1NTU5MDc2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjA2NjMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUFBUUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gVGhlIGZpcnN0IGNoYW5nZSBpbiBgcHB0cF9yY3ZfY29yZWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlbW92ZXMgdGhlIHBhY2tldCBxdWV1aW5nIGlmIHRoZSBzb2NrZXQgaXNuJ3QgY29ubmVjdGVkLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCB0aGlzIGNvbmRpdGlvbmFsOiBpZiB0aGUgc29ja2V0IHdhc24ndCBpbiBhIGNvbm5lY3RlZCBzdGF0ZSwgaXQgd291bGQgKnRyeSogdG8gcXVldWUgdGhlIHJlY2VpdmVkIGBza2JgIChzb2NrZXQgYnVmZmVyKSB1c2luZyBgc29ja19xdWV1ZV9yY3Zfc2tiYCwgYW5kIGlmIHRoYXQgZmFpbGVkLCB0aGUgcGFja2V0IHdvdWxkIGJlIGRyb3BwZWQuIFRoZSBwYXRjaCBzaW1wbGlmaWVzIHRoaXM7IGlmIHRoZSBzb2NrZXQgaXNuJ3QgY29ubmVjdGVkLCB0aGUgcGFja2V0IGlzIHNpbXBseSBkcm9wcGVkLiBTdHJhaWdodGZvcndhcmQuXG5cbk5vdywgdGhlIHNlY29uZCBtb2RpZmljYXRpb24gaW4gYHBwdHBfc29ja19kZXN0cnVjdGAgaGFzIGNhdWdodCBteSBhdHRlbnRpb24uIEl0IHJlbW92ZXMgYSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSlgLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gYXNrIFwid2h5P1wiLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHVyZ2luZyB0aGUgcmVjZWl2ZSBxdWV1ZSB3aGVuIHRoZSBzb2NrZXQgd2FzIGJlaW5nIGRlc3Ryb3llZC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgaWYgdGhlIHNvY2tldCBpc24ndCBjb25uZWN0ZWQsIHRoZXJlIHNob3VsZG4ndCBiZSBhbnl0aGluZyBvbiB0aGUgYHNrX3JlY2VpdmVfcXVldWVgIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgaWYgc29tZXRoaW5nIGlzIG9uIHRoZXJlLCBpdCBzaG91bGRuJ3QgY2F1c2UgYSBwcm9ibGVtLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhpcyBzdXNwaWNpb24uIExvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBpdCBkb2Vzbid0IGFwcGVhciBhcyB0aG91Z2ggdGhlcmUgaXMgYSByZWFkIG9wZXJhdGlvbiBmcm9tIGBza19yZWNlaXZlX3F1ZXVlYCBmb3IgYHBwdHBgIHNvY2tldHMuIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiByZW1vdmluZyB0aGUgcHVyZ2UgbWFrZXMgcGVyZmVjdCBzZW5zZTogaXQncyBhbiB1bm5lY2Vzc2FyeSBvcGVyYXRpb24uIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIGBwcHRwLmNgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowNC4yNzYyMjU0OTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTQwNTEzNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2tfcmVjZWl2ZV9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowNC40Mzc2NDMyNTZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTYxNTc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgUmFiYml0IEhvbGUqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gcmVjYWxpYnJhdGUgbXkgbWVudGFsIG1vZGVsIGhlcmUuIFRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAuLi4gdGhhdCdzIHBhcnQgb2YgdGhlIGNvcmUgYHN0cnVjdCBzb2NrYCwgaXNuJ3QgaXQ/IENsYXNzaWMgbmV0d29ya2luZyBzdHJ1Y3R1cmUuIEl0J3MgZWFzeSB0byBsb3NlIHRyYWNrIHdoZW4geW91J3JlIGp1bXBpbmcgYXJvdW5kIGRpZmZlcmVudCBtb2R1bGVzLiBPa2F5LCBzbyBpdCdzICp0aGVyZSouIFRoYXQgaGFzIHNvbWUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgaXQncyBoYW5kbGVkIGF0IGEgbG93ZXIgbGV2ZWwsIGltcGxpY2F0aW9ucyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciBxdWV1aW5nIGJlaGF2aW9yLlxuXG5Ob3csIEknbSB0aGlua2luZywgd2hlcmUgZWxzZSBkb2VzIGBwcHRwLmNgIHRvdWNoIG9uIHRoaXM/IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgcHB0cC5jYCBmaWxlIGFuZCBzZWUgaWYgdGhpcyBxdWV1ZSBpcyB1c2VkIGluIGFueSBvdGhlciBjb250ZXh0IHRoZXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5J3JlICphY3R1YWxseSogaW50ZXJhY3Rpbmcgd2l0aCBpdCBpbiB0aGlzIHNwZWNpZmljIFBQVFAgaW1wbGVtZW50YXRpb24uIEFyZSB0aGV5IGp1c3QgdXNpbmcgaXQgaW4gYSBzdGFuZGFyZCB3YXksIG9yIGFyZSB0aGVyZSBhbnkuLi4gbGV0J3MgY2FsbCB0aGVtIFwidW5pcXVlXCIgb3BlcmF0aW9ucy4gVGhvc2UgZGV0YWlscyBjb3VsZCBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemluZy4gVGltZSB0byBwdWxsIHRoYXQgY29kZSB1cCBhbmQgc2NydXRpbml6ZSBpdC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjk6MDcuOTY5MjYxNDE0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjAxNTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19yZWNlaXZlX3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcG9lLmM9NTAzPXN0YXRpYyB2b2lkIHBwcG9lX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDQte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBvZS5jOjUwNTpcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowOC4wMjEyODA2NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIyODEwNjEwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwcHRwLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIG1vZGlmeWluZyB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgcmVtb3ZpbmcgdGhlIGJsb2NrIHRoYXQgcXVldWVzIGluY29taW5nIGBza2JgcyB0byBgc2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZWAgaWYgdGhlIHNvY2tldCBpc24ndCBjb25uZWN0ZWQuIEluc3RlYWQgb2YgcXVldWVpbmcsIGl0J3MganVzdCBkcm9wcGluZyB0aGUgYHNrYmAuIE1ha2VzIHNlbnNlLiBUaGUgbG9naWMgaXMgdGhhdCBpZiBpdCdzIG5vdCBjb25uZWN0ZWQsIHdoeSBib3RoZXI/XG5cblRoZW4sIGluIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCBpdCdzIHJlbW92aW5nIHRoZSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSlgLiBSaWdodCwgYmVjYXVzZSBpZiBgcHB0cF9yY3ZfY29yZWAgaXNuJ3QgdXNpbmcgdGhlIHF1ZXVlIGFueW1vcmUsIHRoZXJlJ3Mgbm90aGluZyB0byBwdXJnZS4gSXQncyBjbGVhbnVwLlxuXG5NeSBmaXJzdCBndXQgcmVhY3Rpb24gaXMgdG8gY2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTaW5jZSB3ZSBhcmUgY2hhbmdpbmcgbG9naWMsIEkgaGF2ZSB0byBiZSBzdXJlLiBCdXQgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgZXNzZW50aWFsbHkgcHJldmVudGluZyB0aGUgcXVldWUgZnJvbSBiZWluZyB1c2VkIHdoZW4gaXQgc2hvdWxkbid0IGJlLiBJdCBmZWVscyBsaWtlIGEgZml4IHRvIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlLCBvciBhdCBsZWFzdCBhIGJ1ZyB3aGVyZSBza2JzIGdldCBxdWV1ZWQgYW5kIG5ldmVyIGhhbmRsZWQuXG5cbk5vdywgSSBuZWVkIHRvIGJlICpzdXJlKi4gSWYgYHNrYl9xdWV1ZV9wdXJnZWAgaXMgcmVtb3ZlZCBhbmQgc29tZXRoaW5nICplbHNlKiBpcyBzdGlsbCBxdWV1aW5nLCB3ZSBjb3VsZCBoYXZlIGEgbGVhay4gU28sIEkgY2hlY2tlZC4gSSBncmVwcGVkIHRoZSB3aG9sZSBgcHB0cC5jYCBmaWxlIGZvciBgc2tfcmVjZWl2ZV9xdWV1ZWAgdG8gY29uZmlybSB0aGF0IGBzb2NrX3F1ZXVlX3Jjdl9za2JgIHdhcyB0aGUgb25seSBwbGFjZSB0aGF0IGRpZCB0aGlzLiBBbmQgSSBkaWRuJ3QgZ2V0IGFueSBoaXRzLiBTbywgaXQncyBjbGVhbiBvbiB0aGF0IGZyb250LlxuXG5Eb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkPyBJdCdzIGFsbCByZW1vdmFsLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29weWluZyB0byB1c2VyIHNwYWNlLCBubyBuZXcgZmllbGRzLCBpdCBvbmx5IHByZXZlbnRzIHNrYnMgYmVpbmcgcXVldWVkIGFuZCBwdXJnaW5nIHRoZSBxdWV1ZSB0aGF0IGlzbid0IGJlaW5nIHVzZWQuIEl0IHNlZW1zIGV4dHJlbWVseSB1bmxpa2VseS4gU28sIEkgZG9uJ3QgdGhpbmsgS01TQU4gaXMgbmVlZGVkLiBLQVNBTi9rbWVtbGVhayBzaG91bGQgYmUgbW9yZSB0aGFuIHN1ZmZpY2llbnQgdG8gY2F0Y2ggcG90ZW50aWFsIGlzc3VlcywgdGhvdWdoIHRoZSBjaGFuY2VzIGFyZSBsb3cuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBvbmUgbW9yZSB0aGluZzogYHNvY2tfcXVldWVfcmN2X3NrYmAuIElmIGl0IGRyb3BzIHRoZSBza2IsIHRoZSBza2IgaXMgZnJlZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQuXG5cblRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGlzIHBhdGNoIGxvb2tzIGdvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDEsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI5OjMwLjMwMjM0NDE0M1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBwdHBfcmN2X2NvcmVgIHRvIGRyb3AgcGFja2V0cyBpbnN0ZWFkIG9mIHF1ZXVpbmcgdGhlbSB0byBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiB0aGUgc29ja2V0IGlzIG5vdCBjb25uZWN0ZWQsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGBza2JfcXVldWVfcHVyZ2VgIGluIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBsb2dpYyBidWcgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIGltcHJvcGVyIHBhY2tldCBoYW5kbGluZykgYnkgcmVtb3ZpbmcgdGhlIHF1ZXVpbmcgbWVjaGFuaXNtIGVudGlyZWx5IGZvciB1bmNvbm5lY3RlZCBQUFRQIHNvY2tldHMuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGludHJvZHVjZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IGFsbG9jYXRpb25zIGFyZSBhZGRlZC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhpcyBwYXRjaCAoc3VjaCBhcyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBvciBrbWVtbGVhay4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow98c8x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 07:58:17 +0000 UTC FinishedAt: 2026-08-11 08:29:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "NET_IPGRE_DEMUX", "PPPOX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "202fef9bbbf5784487eec27581389c6fb97c350d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPTP", "NET_IPGRE_DEMUX", "PPPOX" ], "series_id": "f621065d-56bb-409a-a7e1-242f38cdd539" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "pptp_rcv_core", "pptp_sock_destruct", "pptp_rcv", "pptp_connect", "pptp_bind" ], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O1BQUE9YJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3NvY2tfZGVzdHJ1Y3QmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzgsMTEgJiM0MzsyNzgsOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0X191OCAqcGF5bG9hZDtcbiBcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiBcbi1cdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKSB7XG4tXHRcdGlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpXG4tXHRcdFx0Z290byBkcm9wO1xuLVx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4tXHR9XG4mIzQzO1x0aWYgKCEoc2stXHUwMDNlc2tfc3RhdGUgXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpXG4mIzQzO1x0XHRnb3RvIGRyb3A7XG4gXG4gXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gXHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbkBAIC01MzksNyAmIzQzOzUzNiw2IEBAIHN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRcdGRlbF9jaGFuKHBwcG94X3NrKHNrKSk7XG4gXHRcdHBwcG94X3VuYmluZF9zb2NrKHNrKTtcbiBcdH1cbi1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcbiBcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXHUwMDNlc2tfZHN0X2NhY2hlLCAxKSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtQUFBPWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9zb2NrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDssCiAgICAmIzM0O3BwdHBfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwcHRwX2JpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwpAQCAtMjc4LDExICYjNDM7Mjc4LDggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIAotCWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKSB7Ci0JCWlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpCi0JCQlnb3RvIGRyb3A7Ci0JCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKLQl9CiYjNDM7CWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKQomIzQzOwkJZ290byBkcm9wOwogCiAJaGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLSZndDtkYXRhKTsKIAloZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTsKQEAgLTUzOSw3ICYjNDM7NTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAkJZGVsX2NoYW4ocHBwb3hfc2soc2spKTsKIAkJcHBwb3hfdW5iaW5kX3NvY2soc2spOwogCX0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSk7CiAJZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay0mZ3Q7c2tfZHN0X2NhY2hlLCAxKSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQUFRQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBzb21lIGNoYW5nZXMgaW4gdGhlIGNvcmUgcGFja2V0IGhhbmRsaW5nIGFuZCBzb2NrZXQgZGVzdHJ1Y3Rpb24gcm91dGluZXMsIHNwZWNpZmljYWxseSBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKSW4gYHBwdHBfcmN2X2NvcmVgLCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBjaGFuZ2luZyB0aGUgYmVoYXZpb3IgZm9yIHBhY2tldHMgcmVjZWl2ZWQgd2hlbiB0aGUgc29ja2V0IGlzbiYjMzk7dCBpbiBhIGNvbm5lY3RlZCBzdGF0ZSAoYCEoc2stJmd0O3NrX3N0YXRlICZhbXA7IFBQUE9YX0NPTk5FQ1RFRClgKS4gUHJldmlvdXNseSwgdGhlIGNvZGUgd291bGQgcXVldWUgdGhlc2UgcGFja2V0cyB1c2luZyBgc29ja19xdWV1ZV9yY3Zfc2tiYCBhbmQgdGhlbiwgaWYgcXVldWluZyBmYWlsZWQsIHdvdWxkIGRyb3AgdGhlbS4gTm93LCB3ZSYjMzk7cmUgZHJvcHBpbmcgdGhlbSBpbW1lZGlhdGVseSB3aXRoIGEgYGdvdG8gZHJvcGAuIFRoYXQmIzM5O3MgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIG5vIG1vcmUgYnVmZmVyaW5nIG9mIHVuZXhwZWN0ZWQgcGFja2V0cy4gVGhpcyBpbXBsaWVzIGEgc3RyaWN0ZXIgYWRoZXJlbmNlIHRvIHRoZSBQUFRQIHN0YXRlIG1hY2hpbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGNoYW5nZSB3YXMgZGVlbWVkIG5lY2Vzc2FyeS4gUG90ZW50aWFsIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBoZXJlIGFzIHdlbGwuCgpUaGVuLCBtb3Zpbmcgb24gdG8gYHBwdHBfc29ja19kZXN0cnVjdGAsIHdlJiMzOTt2ZSBnb3QgdGhlIHJlbW92YWwgb2YgYHNrYl9xdWV1ZV9wdXJnZSgmYW1wO3NrLSZndDtza19yZWNlaXZlX3F1ZXVlKWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFByZXZpb3VzbHksIHdoZW4gYSBzb2NrZXQgd2FzIGRlc3RydWN0ZWQsIGFueSByZW1haW5pbmcgcGFja2V0cyBpbiB0aGUgcmVjZWl2ZSBxdWV1ZSB3ZXJlIHB1cmdlZC4gTm93LCB3ZSYjMzk7cmUgYXNzdW1pbmcgdGhlIHF1ZXVlIGlzIGVtcHR5LCBvciB0aGUgcGFja2V0cyBhcmUgaGFuZGxlZCBlbHNld2hlcmUuIEFnYWluLCBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyB3ZSYjMzk7cmUgbWFuYWdpbmcgYnVmZmVyZWQgZGF0YSBhdCBzb2NrZXQgdGVhcmRvd24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHB1cmdlIGlzIG5vIGxvbmdlciBuZWVkZWQuIElzIHRoaXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYD8gUGVyaGFwcyB0aGUgbmV3IGRyb3Atb24tdW5jb25uZWN0ZWQgYmVoYXZpb3IgbWFrZXMgdGhlIHF1ZXVlIHB1cmdlIHJlZHVuZGFudD8gT3IgaXMgdGhlcmUgYSBkaWZmZXJlbnQgZGF0YSBtYW5hZ2VtZW50IHBsYW4/CgpHaXZlbiB0aGVzZSBmdW5jdGlvbmFsIGNoYW5nZXMsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgd2l0aGluIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IG9yIGltcGFjdGVkIGJ5IHRoZXNlIG1vZGlmaWNhdGlvbnMuIFdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoaXMsIGFzIGl0IGNvdWxkIGhhdmUgZG93bnN0cmVhbSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFRQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTUzPWNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNjE6Y29uZmlnIFBQVFBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE2Mi1cdHRyaXN0YXRlIFwmIzM0O1BQUCBvdmVyIElQdjQgKFBQVFApXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MwoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFBQVFAgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtIGlzIHNldCB0byB1c2UgYFBQVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBtb2R1bGUuIFNpbmNlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBrZXJuZWwsIG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIGFsbCB0aGluZ3MgUFBQLXJlbGF0ZWQsIGFuZCB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGllZCB0byB0aGUgYFBQVFBgIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIGFyZSByZXF1aXJlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgUFBUUGAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1lOiBxdWlja2x5IGxvY2F0ZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGRlYnVnZ2luZyBvciBtb2RpZmljYXRpb24gb2YgdGhlIFBQUCBwcm90b2NvbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUFBUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYwLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjItXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdGNvbmZpZyBQUFRQXG4gMTYyOlx0XHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBJUHY0IChQUFRQKVwmIzM0O1xuIDE2MzpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxNjQ6XHRcdHNlbGVjdCBQUFBPWFxuIDE2NTpcdFx0aGVscFxuIDE2NjpcdFx0ICBTdXBwb3J0IGZvciBQUFAgb3ZlciBJUHY0LihQb2ludC10by1Qb2ludCBUdW5uZWxpbmcgUHJvdG9jb2wpXG4gMTY3Olx0XG4gMTY4Olx0XHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcbiAxNjk6XHRcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cbiAxNzA6XHRcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xuIDE3MTpcdFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxuIDE3MjpcdFxuIDE3MzpcdGNvbmZpZyBQUFBPTDJUUFxuIDE3NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgTDJUUFwmIzM0O1xuIDE3NTpcdFx0ZGVwZW5kcyBvbiBMMlRQXG4gMTc2Olx0XHRzZWxlY3QgUFBQT1hcbiAxNzc6XHRcdGhlbHBcbiAxNzg6XHRcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcbiAxNzk6XHRcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcbiAxODA6XHRcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3OQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipOZXR3b3JrIFByb3RvY29sIERlcGVuZGVuY2llcyBhbmQgTW9kdWxlIFJldmlldyoqCgpSaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgbXkgaW50ZXJuYWwgcHJvY2VzcyBmbGFncyBhIGRlcGVuZGVuY3k6IGBORVRfSVBHUkVfREVNVVhgLiBUaGF0IG1lYW5zLCBpbW1lZGlhdGVseSwgSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgcHJlc2VuY2UgYW5kIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBib3RoIGBQUFRQYCBhbmQsIGNydWNpYWxseSwgYE5FVF9JUEdSRV9ERU1VWGAuIFRoZSBzeXN0ZW0mIzM5O3MgYWxyZWFkeSBzZWxlY3RlZCBgUFBQT1hgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGlzIGNvbnRleHQuCgpOb3csIHdoZXJlIGRvIEkgbmVlZCB0byBsb29rIHRvIGNvbmZpcm0gdGhlIGludGVncml0eSBvZiB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uPyBNeSBhdHRlbnRpb24gdHVybnMgdG8gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGUgZnVuY3Rpb25zIGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHJlY2VpdmluZyBQUFRQIHRyYWZmaWMgYW5kIHRoZSBzb2NrZXQgY2xlYW51cCBwcm9jZWR1cmVzLCByZXNwZWN0aXZlbHksIHJlc2lkZS4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwb2ludHMgdG8gdmVyaWZ5IHRvIHVuZGVyc3RhbmQgYW5kIHZhbGlkYXRlIHRoZSBlc3RhYmxpc2hlZCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xNDk9c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0Mj1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU1ODpcdHNrLVx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU5LVx0c2stXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBTZXR1cCBhbmQgRnVuY3Rpb24gSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHB0cGAgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoZSBhc3NpZ25tZW50OiBgcHB0cF9yY3ZfY29yZWAgaXMgYmVpbmcgc2V0IGFzIHRoZSBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gVGhpcyBtYWtlcyBzZW5zZSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBwYWNrZXQgcmVjZXB0aW9uIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGhhcHBlbi4gVGhlbiB3ZSYjMzk7dmUgZ290IGBwcHRwX3NvY2tfZGVzdHJ1Y3RgIGJlaW5nIGFzc2lnbmVkIHRvIGBzay0mZ3Q7c2tfZGVzdHJ1Y3RgLiBPa2F5LCB0aGF0JiMzOTtzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgc29ja2V0LCBhcyB5b3UmIzM5O2QgZXhwZWN0LiBOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zLCBzdGFydGluZyB3aXRoIGBwcHRwX3Jjdl9jb3JlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSBhbSBnb2luZyB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBgc3RhdGljYCwgYW5kIGlmIHRoZXkgYXJlLCB0aGF0IGdpdmVzIHVzIGEgY2xlYXIgaW5kaWNhdGlvbiBhYm91dCB0aGUgY29kZSBzY29wZS4gQWgsIHllcywgdGhleSBhcmUgaW5kZWVkIHN0YXRpYyBmdW5jdGlvbnMsIGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAgLiBUaGF0JiMzOTtzIGhlbHBmdWwuIFRoaXMgbWVhbnMgdGhleSBhcmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGlzIHNwZWNpZmljIHNvdXJjZSBmaWxlLCB3aGljaCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIG15IGludmVzdGlnYXRpb24sIGJ1dCB0aGlzIGFsc28gbWVhbnMgdGhhdCB0aGV5IHdpbGwgYWxzbyBiZSBhIGNvcmUgcGFydCBvZiB0aGUgY29kZSYjMzk7cyBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IGxvb2tpbmcgZm9yIG90aGVyIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHB0cF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00OC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDk6c3RhdGljIHN0cnVjdCBwcm90byBwcHRwX3NrX3Byb3RvIF9fcmVhZF9tb3N0bHk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1LVx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQ7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NzI9c3RhdGljIGludCBsb29rdXBfY2hhbl9kc3QodTE2IGNhbGxfaWQsIF9fYmUzMiBkX2FkZHIpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03NC1cdHN0cnVjdCBwcHBveF9zb2NrICpzb2NrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcdHN0cnVjdCBwcHRwX29wdCAqb3B0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy03Ni1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9OTQ9c3RhdGljIGludCBhZGRfY2hhbihzdHJ1Y3QgcHBwb3hfc29jayAqc29jayxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XHRcdCAgICBzdHJ1Y3QgcHB0cF9hZGRyICpzYSlcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTI0PXN0YXRpYyB2b2lkIGRlbF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMzI6c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVx0XHRcdFx0XHRzdHJ1Y3QgZmxvd2k0ICpmbDQpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE0OTpzdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTMtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE1NDpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTU1Olx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTYtXHR1bnNpZ25lZCBpbnQgaGVhZGVyX2xlbiA9IHNpemVvZigqaGRyKTtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE2OS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTcwOlx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTcxLVx0aWYgKElTX0VSUihydCkpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTYtXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyMTc6XHRoZHIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxOC1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjc2Olx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXHRpbnQgaGVhZGVyc2l6ZSwgcGF5bG9hZF9sZW4sIHNlcTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc4LVx0X191OCAqcGF5bG9hZDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Mjc5Olx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODAtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NDpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg1LVx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTItXHRcdFx0Z290byBkcm9wO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyOTM6XHRcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjk0LVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNDc6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDktXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG87XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM1MDpcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzUxLVx0c3RydWN0IGlwaGRyICppcGg7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNjAtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MTpcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE0LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyMC1cdHN0cnVjdCBwcHBveF9zb2NrICpwbyA9IHBwcG94X3NrKHNrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDIxOlx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcdTAwMjZwby1cdTAwM2Vwcm90by5wcHRwO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MjItXHRzdHJ1Y3QgcnRhYmxlICpydDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1My1cdHBvLVx1MDAzZWNoYW4ucHJpdmF0ZSA9IHNrO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTQ6XHRwby1cdTAwM2VjaGFuLm9wcyA9IFx1MDAyNnBwdHBfY2hhbl9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDU2Olx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXHUwMDI2Zmw0KTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDU3LVx0aWYgKElTX0VSUihydCkpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4Olx0cG8tXHUwMDNlY2hhbi5oZHJsZW4gPSAyICYjNDM7IHNpemVvZihzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY5LVx0cG8tXHUwMDNlY2hhbi5kaXJlY3RfeG1pdCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ4NDpzdGF0aWMgaW50IHBwdHBfZ2V0bmFtZShzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXHRpbnQgcGVlcilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMC1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAxOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMi17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUzMzpzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDI6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDMte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ2LVx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDc6XHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDk6XHRzayA9IHNrX2FsbG9jKG5ldCwgUEZfUFBQT1gsIEdGUF9LRVJORUwsIFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTAtXHRpZiAoIXNrKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU1LVx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTY6XHRzb2NrLVx1MDAzZW9wcyAgID0gXHUwMDI2cHB0cF9vcHM7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjItXHRzay1cdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU2MzpcdHNrLVx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NjQtXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NjpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODAtXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU4MTpcdHN0cnVjdCBwcHRwX29wdCAqb3B0ID0gXHUwMDI2cG8tXHUwMDNlcHJvdG8ucHB0cDtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTgyLVx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MDg6XHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA5Olx0LmlvY3RsICAgICAgPSBwcHRwX3BwcF9pb2N0bCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjEwLX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTMtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MTg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyMC1cdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYyMTpcdC5yZWxlYXNlICAgID0gcHB0cF9yZWxlYXNlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjI6XHQuYmluZCAgICAgICA9IHBwdHBfYmluZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjIzOlx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyNC1cdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXHQuYWNjZXB0ICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjY6XHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjI3LVx0Lmxpc3RlbiAgICAgPSBzb2NrX25vX2xpc3Rlbixcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwb3hfcHJvdG8gcHBwb3hfcHB0cF9wcm90byA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM5Olx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDAtXHQub3duZXIgID0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ0Olx0LmhhbmRsZXIgPSBwcHRwX3JjdixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Ni1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ3OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ4LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2Olx0ZXJyID0gZ3JlX2FkZF9wcm90b2NvbChcdTAwMjZncmVfcHB0cF9wcm90b2NvbCwgR1JFUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1Ny1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjYyOlx0ZXJyID0gcHJvdG9fcmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90bywgMCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2My1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjY4Olx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXHUwMDI2cHBwb3hfcHB0cF9wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2OS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY3Ni1vdXRfdW5yZWdpc3Rlcl9za19wcm90bzpcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc3Olx0cHJvdG9fdW5yZWdpc3RlcihcdTAwMjZwcHRwX3NrX3Byb3RvKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc4LW91dF9ncmVfZGVsX3Byb3RvY29sOlxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Nzk6XHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjgwLW91dF9tZW1fZnJlZTpcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg2OnN0YXRpYyB2b2lkIF9fZXhpdCBwcHRwX2V4aXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4Ny17XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1cdHVucmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4OTpcdHByb3RvX3VucmVnaXN0ZXIoXHUwMDI2cHB0cF9za19wcm90byk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5MDpcdGdyZV9kZWxfcHJvdG9jb2woXHUwMDI2Z3JlX3BwdHBfcHJvdG9jb2wsIEdSRVBST1RPX1BQVFApO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTEtXHR2ZnJlZShjYWxsaWRfc29jayk7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NDptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njk1Om1vZHVsZV9leGl0KHBwdHBfZXhpdF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3NjcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdC4gUmlnaHQsIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBpdCYjMzk7cyB0b3VjaGluZyBhcmUgYHBwdHBfcmN2YCwgYHBwdHBfYmluZGAsIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9yZWxlYXNlYCwgYHBwdHBfZ2V0bmFtZWAsIGBwcHRwX3htaXRgLCBgcHB0cF9wcHBfaW9jdGxgLCBhbmQgYHBwdHBfY3JlYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIFBQVHAgZnVuY3Rpb25zLCBzbyBjaGFuZ2VzIGhlcmUgYXJlIHNpZ25pZmljYW50LiBCdXQgaXQgbG9va3MgbGlrZSB0aGUgKmNvcmUqIHdvcmsgaXMgZm9jdXNlZCBvbiBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIGlzIGNhbGxlZCBpbmRpcmVjdGx5IGZyb20gYHBwdHBfcmN2YC4gTGV0IG1lIHNlZS4uLiBgc2tfcmVjZWl2ZV9za2JgLi4uIG5vLCB3YWl0LCBpdCYjMzk7cyBgc2stJmd0O3NrX2JhY2tsb2dfcmN2YC4gUmlnaHQsIHNvIHRoaXMgYHBwdHBfcmN2X2NvcmVgIGlzIGJlaW5nIGNhbGxlZCB3aGVuIHRoZSBzeXN0ZW0gcHJvY2Vzc2VzIHRoZSBiYWNrbG9nLiBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGxpa2VseSByZWxhdGVkIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBoYW5kbGVkLiBBbmQgaXQgYWxzbyB0b3VjaGVzIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyBkZXN0cm95ZWQsIHNvIHRoYXQmIzM5O3MgYSBjbGVhbnVwIGFzcGVjdCB0byBjb25zaWRlci4KCkFscmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBwdHBfcmN2YCBhbmQgZm9sbG93IHRoZSBjYWxsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwdHBfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozNDc6c3RhdGljIGludCBwcHRwX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTQyPXN0YXRpYyBpbnQgcHB0cF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQga2Vybilcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4Olx0c2stXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXHRzay1cdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz02NDM9c3RhdGljIGNvbnN0IHN0cnVjdCBncmVfcHJvdG9jb2wgZ3JlX3BwdHBfcHJvdG9jb2wgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcdC5oYW5kbGVyID0gcHB0cF9yY3YsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0NS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUFBUIFByb3RvY29sIEhhbmRsZXIqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBwcHRwYCBjb2RlLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHBwdHBfcmN2YCBzZWVtcyBsaWtlIHRoZSBjZW50cmFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLCBiZWluZyB0aGUgR1JFIHByb3RvY29sIGhhbmRsZXIuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHJlY2VpdmluZyBwYWNrZXRzLiBJJiMzOTtsbCBhbHNvIGFkZCBgcHB0cF9iaW5kYCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9yZWxlYXNlYCB0byB0aGUgbGlzdCBvZiBrZXkgc3ltYm9scyB0byBpbnZlc3RpZ2F0ZS4KCkhhbmcgb24sIHRob3VnaC4uLiBgcHB0cF9yY3ZgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgYHN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilgLiBUaGF0IGNvdWxkIGJlIGFuIGlzc3VlLiBCdXQgd2FpdCwgaXQmIzM5O3MgYWN0dWFsbHkgYXNzaWduZWQgdG8gYSBgLmhhbmRsZXJgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBncmVfcHB0cF9wcm90b2NvbGAuIEFoYSEgSWYgaXQgKndlcmVuJiMzOTt0KiBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0ICptaWdodCogYmUgaW5saW5lZCwgYW5kIHRoZXJlZm9yZSBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBCdXQgYmVjYXVzZSBpdCAqaXMqIGFzc2lnbmVkIHRvIHRoYXQgZnVuY3Rpb24gcG9pbnRlciwgaW5saW5pbmcgaXMgaW1wb3NzaWJsZS4gU28sIGRlc3BpdGUgYmVpbmcgc3RhdGljLCBpdCAqd2lsbCogaGF2ZSBhIHN5bWJvbC4KCk5vdywgSSBuZWVkIHRvIGtlZXAgdGhlIHByb21wdCYjMzk7cyBwcmVmZXJlbmNlIGluIG1pbmQ6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBwcHRwX3JjdmAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpcyAqbm90KiBpbmxpbmVkLiBJIGFtIGdvb2QsIGhlcmUhIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSB0aGUgY29kZWJhc2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XlthLXpBLVowLTlfXSYjNDM7IHBwdHBfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjMzCgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3RhdGljIElzc3VlcyoqCgpBbHJpZ2h0LCBiZWZvcmUgd2UgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJiMzOTt0IGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlZCBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBjYXVzZSBwcm9ibGVtcy4gSSBrbm93IGJldHRlciB0aGFuIHRvIGJsaW5kbHkgdHJ1c3QgdGhhdCBldmVyeXRoaW5nIGlzIGFzIGl0IHNob3VsZCBiZSwgZXNwZWNpYWxseSBpbiB0aGVzZSBraW5kcyBvZiBzeXN0ZW1zLiBUaGlzIGNoZWNrIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSByb2J1c3RuZXNzIGFuZCByZWxpYWJpbGl0eSBvZiB0aGUgY29kZWJhc2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RlcCwgYW5kIEkmIzM5O20gbm90IGdvaW5nIHRvIHNraXAgaXQuIFdlJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBhcmNoaXRlY3R1cmUgaXMgc291bmQuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgYnVpbHQgb24gc29saWQgZ3JvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWjAtOV9dJiM0MztcXCo/IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQzLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NDpzdGF0aWMgREVDTEFSRV9CSVRNQVAoY2FsbGlkX2JpdG1hcCwgTUFYX0NBTExJRCAmIzQzOyAxKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDUtc3RhdGljIHN0cnVjdCBwcHBveF9zb2NrIF9fcmN1ICoqY2FsbGlkX3NvY2s7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NzpzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNoYW5fbG9jayk7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU3NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkludGVybmFsIENvZGUgUmV2aWV3OiBTaW1wbGlmeWluZyBQUFRQIEZ1bmN0aW9uIENhbGxzKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGJhY2sgaW50byB0aGlzIFBQVFAgY29kZS4gSSYjMzk7bSB0aGlua2luZywgbGV0JiMzOTtzIGtlZXAgaXQgY2xlYW4gYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gSSYjMzk7bGwgc3RpY2sgdG8gdGhvc2UgY29yZSBmdW5jdGlvbiBjYWxscywgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBhbmQgYHBwdHBfcmVsZWFzZWAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIGFzcGVjdHMuCgpXYWl0IGEgc2Vjb25kLi4uIHNvbWV0aGluZyYjMzk7cyBuYWdnaW5nIGF0IG1lLiBBcmUgYWxsIHRoZSBmdW5jdGlvbnMgd2l0aGluIGBwcHRwLmNgICpzdGF0aWMqPyBJIHJlYWxseSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBUaGF0IGhhcyBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgaG93IHdlIGNhbiBpbnRlcmFjdCB3aXRoIHRoZW0uIElmIHRoZXkgYXJlLCB0aGF0IHdpbGwgaW1wYWN0IHRoZSBkZXNpZ24sIG1vZHVsYXJpdHksIGFuZCwgZnJhbmtseSwgdGhlIHRlc3RhYmlsaXR5IG9mIHRoaXMgbW9kdWxlIHNpZ25pZmljYW50bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3Qgb3Zlcmxvb2tpbmcgYSBjcml0aWNhbCBhY2Nlc3MgcG9pbnQuIFRpbWUgZm9yIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBUaGlzIGlzIGEgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZ290Y2hhLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGFjY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHB0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ0OnN0YXRpYyBERUNMQVJFX0JJVE1BUChjYWxsaWRfYml0bWFwLCBNQVhfQ0FMTElEICYjNDM7IDEpO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTpzdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgX19yY3UgKipjYWxsaWRfc29jaztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soY2hhbl9sb2NrKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ5OnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzO1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTItXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUzOnN0YXRpYyBzdHJ1Y3QgcHBwb3hfc29jayAqbG9va3VwX2NoYW4odTE2IGNhbGxfaWQsIF9fYmUzMiBzX2FkZHIpXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTcxLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MjpzdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzMte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjk0OnN0YXRpYyBpbnQgYWRkX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2ssXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTk1LVx0XHQgICAgc3RydWN0IHBwdHBfYWRkciAqc2EpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjMtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEyNDpzdGF0aWMgdm9pZCBkZWxfY2hhbihzdHJ1Y3QgcHBwb3hfc29jayAqc29jaylcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTMyOnN0YXRpYyBzdHJ1Y3QgcnRhYmxlICpwcHRwX3JvdXRlX291dHB1dChjb25zdCBzdHJ1Y3QgcHBwb3hfc29jayAqcG8sXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMy1cdFx0XHRcdFx0c3RydWN0IGZsb3dpNCAqZmw0KVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNDk6c3RhdGljIGludCBwcHRwX3htaXQoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTAte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ3OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ4LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4MS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cdFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE0LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVx0XHRcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4My1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDg0OnN0YXRpYyBpbnQgcHB0cF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4NS1cdGludCBwZWVyKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAwLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MDE6c3RhdGljIGludCBwcHRwX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzMi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTMzOnN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDEtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0MjpzdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0My17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU3NjpzdGF0aWMgaW50IHBwdHBfcHBwX2lvY3RsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgdW5zaWduZWQgaW50IGNtZCxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVx0dW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDgtXHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTMtXHQubmFtZSAgICAgPSBcJiMzNDtQUFRQXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MTg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcHB0cF9vcHMgPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzOS1cdC5jcmVhdGUgPSBwcHRwX2NyZWF0ZSxcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Mi1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3JlX3Byb3RvY29sIGdyZV9wcHRwX3Byb3RvY29sID0ge1xuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDQtXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ2LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDc6c3RhdGljIGludCBfX2luaXQgcHB0cF9pbml0X21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDgte1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg1LVxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2ODY6c3RhdGljIHZvaWQgX19leGl0IHBwdHBfZXhpdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2OTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBDb2RlIE1vZGlmaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQuIEhtbSwgaXQgbG9va3MgbGlrZSBtb3N0IG9mIHRoZW0gYXJlIHN0YXRpYywgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgc3RhcnQgYnkgaW5jbHVkaW5nIGBwcHRwX3JjdmAsIGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9iaW5kYC4gQWgsIGJ1dCBob2xkIG9uLCBgcHB0cF9yY3ZfY29yZWAgaXMgdGhlICptb2RpZmllZCogZnVuY3Rpb24sIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcHB0cF9zb2NrX2Rlc3RydWN0YCBoYXMgYWxzbyBiZWVuIGFsdGVyZWQuIFJpZ2h0LCBzbyBJJiMzOTtsbCBwcmlvcml0aXplIHRob3NlLiBUaGUgbGlzdCBzaG91bGQgcmVhbGx5IGJlIGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfc29ja19kZXN0cnVjdGAsIGBwcHRwX3JjdmAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIFRoYXQgY292ZXJzIHRoZSBjb3JlIGNoYW5nZXMuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBjb25maWd1cmF0aW9uIGFzcGVjdHMuIFRoZSBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCBhcmUgYFBQVFBgIGFuZCBgTkVUX0lQR1JFX0RFTVVYYC4gQnV0IHdhaXQgYSBzZWNvbmQsIGBORVRfSVBHUkVfREVNVVhgIGlzIGFjdHVhbGx5IGEgZGVwZW5kZW5jeSBvZiBgUFBUUGAuIEkgc2hvdWxkIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhvc2Ugb3B0aW9ucywgc28gdGhhdCB0aGUgYW5hbHlzaXMgaXMgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNzktXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI1MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBORVRfSVBHUkVfREVNVVhgKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYC4gQmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgYXNzZXNzbWVudCBvciB3b3JrIHdpdGggaXQsIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgcmVsaWVzIG9uIGFuZCB3aGF0IG1pZ2h0IGJyZWFrIGlmIEkgd2VyZSB0byBjaGFuZ2UgaXQuIFRoaXMgaXMgZnVuZGFtZW50YWw7IEkgY2FuJiMzOTt0IGJ1aWxkIG9uIHNoYWt5IGdyb3VuZC4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSB0cmVlIGlzIHRoZSBmaXJzdCBrZXkgdG8gc2FmZSBhbmQgaW5mb3JtZWQgbW9kaWZpY2F0aW9uLiBTbywgbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxODA6XHRjb25maWcgTkVUX0lQR1JFX0RFTVVYXG4gMTgxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbiAxODI6XHRcdGhlbHBcbiAxODM6XHRcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxuIDE4NDpcdFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cbiAxODU6XHRcbiAxODY6XHRjb25maWcgTkVUX0lQX1RVTk5FTFxuIDE4NzpcdFx0dHJpc3RhdGVcbiAxODg6XHRcdHNlbGVjdCBEU1RfQ0FDSEVcbiAxODk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1OTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBhbmQgRnV6emluZyBTdHJhdGVneSBmb3IgUFBUUCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBub3RpY2VkIHRoYXQgYE5FVF9JUEdSRV9ERU1VWGAgaGFzIG5vIGRpcmVjdCBkZXBlbmRlbmNpZXMgb24gaXRzIG93bi4gVGhhdCwgY291cGxlZCB3aXRoIGBQUFRQYCwgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUsIGBQUFRQYCAqZG9lcyogZGVwZW5kIG9uIGBORVRfSVBHUkVfREVNVVhgLiBTbyBpZiBJIHNwZWNpZnkgYFBQVFBgLCBgTkVUX0lQR1JFX0RFTVVYYCBtaWdodCBiZSBpbmRpcmVjdGx5IG5lZWRlZCB1bmxlc3MgaXQmIzM5O3MgaGFuZGxlZCB2aWEgYHNlbGVjdGAuIEp1c3QgdG8gYmUgc2FmZSwgSSYjMzk7bGwgaW5jbHVkZSBib3RoIGluIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIHdoYXQgYWJvdXQgYFBQUE9YYD8gQWgsIHJpZ2h0LCBgUFBUUGAgKnNlbGVjdHMqIGBQUFBPWGAuIFNvLCBgUFBUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGhlcmUuCgpOb3csIGxldCYjMzk7cyByZS1leGFtaW5lIHRoYXQgcGF0Y2guIEhtbSwgSSBzZWUgaXQmIzM5O3MgY2hhbmdlZCB0aGUgbG9naWMuIEl0IG5vdyBwcmV2ZW50cyBwYWNrZXRzIGZyb20gYmVpbmcgcXVldWVkIHRvIGFuIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0LiBJdCBhbHNvIHJlbW92ZXMgYSBxdWV1ZSBwdXJnZSBmcm9tIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGlzIHNpZ25pZmljYW50ISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSYjMzk7bGwgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzeW1ib2xzOiBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCBgcHB0cF9yY3ZgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX2JpbmRgLiBNeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBgUFBUUGAgYW5kIGBORVRfSVBHUkVfREVNVVhgLiAKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBQUFBPWGAgaXMgYWN0dWFsbHkgYSBjb25maWcgb3B0aW9uIHRvby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBQUE9YJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTA0PWNvbmZpZyBQUFBPQVRNXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTEzOmNvbmZpZyBQUFBPWFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNzgKCQkJCQkJCW91dHB1dDogMTQ0CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgeW91ciBzdW1tYXJ5OgoKKipDb25maWd1cmluZyBQUFBPWCBhbmQgU2V0dGluZyBSZXN1bHRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBQUFBPWGAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaW1lIHRvIGFkZCBpdCB0byB0aGUgc3lzdGVtLiBOb3cgdGhhdCBJJiMzOTt2ZSBoYW5kbGVkIHRoYXQsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSBkb2luZyB0aGluZ3MgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgdG8gZW5zdXJlIHRoZSByZXN1bHQgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQVFAmIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFX0RFTVVYJiMzNDssCiAgICAmIzM0O1BQUE9YJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHB0cF9yY3ZfY29yZSYjMzQ7LAogICAgJiMzNDtwcHRwX3NvY2tfZGVzdHJ1Y3QmIzM0OywKICAgICYjMzQ7cHB0cF9yY3YmIzM0OywKICAgICYjMzQ7cHB0cF9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BwdHBfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFRQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRV9ERU1VWCYjMzQ7LAogICAgJiMzNDtQUFBPWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwdHBfcmN2X2NvcmUmIzM0OywKICAgICYjMzQ7cHB0cF9zb2NrX2Rlc3RydWN0JiMzNDssCiAgICAmIzM0O3BwdHBfcmN2JiMzNDssCiAgICAmIzM0O3BwdHBfY29ubmVjdCYjMzQ7LAogICAgJiMzNDtwcHRwX2JpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZTMyYzI3OGQxZjMxODJlMjYxZDk3OTM2ZmQ0NjllNjllODdmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAwODoyODowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jCmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuYwpAQCAtMjc4LDExICYjNDM7Mjc4LDggQEAgc3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlfX3U4ICpwYXlsb2FkOwogCXN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjsKIAotCWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKSB7Ci0JCWlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpCi0JCQlnb3RvIGRyb3A7Ci0JCXJldHVybiBORVRfUlhfU1VDQ0VTUzsKLQl9CiYjNDM7CWlmICghKHNrLSZndDtza19zdGF0ZSAmYW1wOyBQUFBPWF9DT05ORUNURUQpKQomIzQzOwkJZ290byBkcm9wOwogCiAJaGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLSZndDtkYXRhKTsKIAloZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTsKQEAgLTUzOSw3ICYjNDM7NTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaykKIAkJZGVsX2NoYW4ocHBwb3hfc2soc2spKTsKIAkJcHBwb3hfdW5iaW5kX3NvY2soc2spOwogCX0KLQlza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSk7CiAJZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay0mZ3Q7c2tfZHN0X2NhY2hlLCAxKSk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUFBUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBUaGUgZmlyc3QgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYCBpcyBpbnRlcmVzdGluZy4gSXQgcmVtb3ZlcyB0aGUgcGFja2V0IHF1ZXVpbmcgaWYgdGhlIHNvY2tldCBpc24mIzM5O3QgY29ubmVjdGVkLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCB0aGlzIGNvbmRpdGlvbmFsOiBpZiB0aGUgc29ja2V0IHdhc24mIzM5O3QgaW4gYSBjb25uZWN0ZWQgc3RhdGUsIGl0IHdvdWxkICp0cnkqIHRvIHF1ZXVlIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgdXNpbmcgYHNvY2tfcXVldWVfcmN2X3NrYmAsIGFuZCBpZiB0aGF0IGZhaWxlZCwgdGhlIHBhY2tldCB3b3VsZCBiZSBkcm9wcGVkLiBUaGUgcGF0Y2ggc2ltcGxpZmllcyB0aGlzOyBpZiB0aGUgc29ja2V0IGlzbiYjMzk7dCBjb25uZWN0ZWQsIHRoZSBwYWNrZXQgaXMgc2ltcGx5IGRyb3BwZWQuIFN0cmFpZ2h0Zm9yd2FyZC4KCk5vdywgdGhlIHNlY29uZCBtb2RpZmljYXRpb24gaW4gYHBwdHBfc29ja19kZXN0cnVjdGAgaGFzIGNhdWdodCBteSBhdHRlbnRpb24uIEl0IHJlbW92ZXMgYSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSlgLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gYXNrICYjMzQ7d2h5PyYjMzQ7LiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHVyZ2luZyB0aGUgcmVjZWl2ZSBxdWV1ZSB3aGVuIHRoZSBzb2NrZXQgd2FzIGJlaW5nIGRlc3Ryb3llZC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgaWYgdGhlIHNvY2tldCBpc24mIzM5O3QgY29ubmVjdGVkLCB0aGVyZSBzaG91bGRuJiMzOTt0IGJlIGFueXRoaW5nIG9uIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciBpZiBzb21ldGhpbmcgaXMgb24gdGhlcmUsIGl0IHNob3VsZG4mIzM5O3QgY2F1c2UgYSBwcm9ibGVtLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIHN1c3BpY2lvbi4gTG9va2luZyBhdCB0aGUgY29kZSBtb3JlIGNsb3NlbHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhciBhcyB0aG91Z2ggdGhlcmUgaXMgYSByZWFkIG9wZXJhdGlvbiBmcm9tIGBza19yZWNlaXZlX3F1ZXVlYCBmb3IgYHBwdHBgIHNvY2tldHMuIElmIHRoYXQmIzM5O3MgdGhlIGNhc2UsIHRoZW4gcmVtb3ZpbmcgdGhlIHB1cmdlIG1ha2VzIHBlcmZlY3Qgc2Vuc2U6IGl0JiMzOTtzIGFuIHVubmVjZXNzYXJ5IG9wZXJhdGlvbi4gSSBuZWVkIHRvIGRpdmUgZGVlcGVyIGludG8gYHBwdHAuY2AgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza19yZWNlaXZlX3F1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwdHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgUmFiYml0IEhvbGUqKgoKQWxyaWdodCwgaGFuZyBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHJlY2FsaWJyYXRlIG15IG1lbnRhbCBtb2RlbCBoZXJlLiBUaGUgYHNrX3JlY2VpdmVfcXVldWVgLi4uIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgY29yZSBgc3RydWN0IHNvY2tgLCBpc24mIzM5O3QgaXQ/IENsYXNzaWMgbmV0d29ya2luZyBzdHJ1Y3R1cmUuIEl0JiMzOTtzIGVhc3kgdG8gbG9zZSB0cmFjayB3aGVuIHlvdSYjMzk7cmUganVtcGluZyBhcm91bmQgZGlmZmVyZW50IG1vZHVsZXMuIE9rYXksIHNvIGl0JiMzOTtzICp0aGVyZSouIFRoYXQgaGFzIHNvbWUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgaXQmIzM5O3MgaGFuZGxlZCBhdCBhIGxvd2VyIGxldmVsLCBpbXBsaWNhdGlvbnMgdGhhdCBhcmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgb3IgcXVldWluZyBiZWhhdmlvci4KCk5vdywgSSYjMzk7bSB0aGlua2luZywgd2hlcmUgZWxzZSBkb2VzIGBwcHRwLmNgIHRvdWNoIG9uIHRoaXM/IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYHBwdHAuY2AgZmlsZSBhbmQgc2VlIGlmIHRoaXMgcXVldWUgaXMgdXNlZCBpbiBhbnkgb3RoZXIgY29udGV4dCB0aGVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhleSYjMzk7cmUgKmFjdHVhbGx5KiBpbnRlcmFjdGluZyB3aXRoIGl0IGluIHRoaXMgc3BlY2lmaWMgUFBUUCBpbXBsZW1lbnRhdGlvbi4gQXJlIHRoZXkganVzdCB1c2luZyBpdCBpbiBhIHN0YW5kYXJkIHdheSwgb3IgYXJlIHRoZXJlIGFueS4uLiBsZXQmIzM5O3MgY2FsbCB0aGVtICYjMzQ7dW5pcXVlJiMzNDsgb3BlcmF0aW9ucy4gVGhvc2UgZGV0YWlscyBjb3VsZCBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcsIG9yIG9wdGltaXppbmcuIFRpbWUgdG8gcHVsbCB0aGF0IGNvZGUgdXAgYW5kIHNjcnV0aW5pemUgaXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tfcmVjZWl2ZV9xdWV1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL3BwcG9lLmM9NTAzPXN0YXRpYyB2b2lkIHBwcG9lX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbmRyaXZlcnMvbmV0L3BwcC9wcHBvZS5jLTUwNC17XG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYzo1MDU6XHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSk7XG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAwODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQxCgkJCQkJCQlvdXRwdXQ6IDE5MAoJCQkJCQkJdGhvdWdodHM6IDYwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHBwdHAuYyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgcHB0cF9yY3ZfY29yZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgdGhlIGJsb2NrIHRoYXQgcXVldWVzIGluY29taW5nIGBza2JgcyB0byBgc2stJmd0O3NrX3JlY2VpdmVfcXVldWVgIGlmIHRoZSBzb2NrZXQgaXNuJiMzOTt0IGNvbm5lY3RlZC4gSW5zdGVhZCBvZiBxdWV1ZWluZywgaXQmIzM5O3MganVzdCBkcm9wcGluZyB0aGUgYHNrYmAuIE1ha2VzIHNlbnNlLiBUaGUgbG9naWMgaXMgdGhhdCBpZiBpdCYjMzk7cyBub3QgY29ubmVjdGVkLCB3aHkgYm90aGVyPwoKVGhlbiwgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAsIGl0JiMzOTtzIHJlbW92aW5nIHRoZSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoJmFtcDtzay0mZ3Q7c2tfcmVjZWl2ZV9xdWV1ZSlgLiBSaWdodCwgYmVjYXVzZSBpZiBgcHB0cF9yY3ZfY29yZWAgaXNuJiMzOTt0IHVzaW5nIHRoZSBxdWV1ZSBhbnltb3JlLCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIHB1cmdlLiBJdCYjMzk7cyBjbGVhbnVwLgoKTXkgZmlyc3QgZ3V0IHJlYWN0aW9uIGlzIHRvIGNoZWNrIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU2luY2Ugd2UgYXJlIGNoYW5naW5nIGxvZ2ljLCBJIGhhdmUgdG8gYmUgc3VyZS4gQnV0IHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBwcmV2ZW50aW5nIHRoZSBxdWV1ZSBmcm9tIGJlaW5nIHVzZWQgd2hlbiBpdCBzaG91bGRuJiMzOTt0IGJlLiBJdCBmZWVscyBsaWtlIGEgZml4IHRvIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlLCBvciBhdCBsZWFzdCBhIGJ1ZyB3aGVyZSBza2JzIGdldCBxdWV1ZWQgYW5kIG5ldmVyIGhhbmRsZWQuCgpOb3csIEkgbmVlZCB0byBiZSAqc3VyZSouIElmIGBza2JfcXVldWVfcHVyZ2VgIGlzIHJlbW92ZWQgYW5kIHNvbWV0aGluZyAqZWxzZSogaXMgc3RpbGwgcXVldWluZywgd2UgY291bGQgaGF2ZSBhIGxlYWsuIFNvLCBJIGNoZWNrZWQuIEkgZ3JlcHBlZCB0aGUgd2hvbGUgYHBwdHAuY2AgZmlsZSBmb3IgYHNrX3JlY2VpdmVfcXVldWVgIHRvIGNvbmZpcm0gdGhhdCBgc29ja19xdWV1ZV9yY3Zfc2tiYCB3YXMgdGhlIG9ubHkgcGxhY2UgdGhhdCBkaWQgdGhpcy4gQW5kIEkgZGlkbiYjMzk7dCBnZXQgYW55IGhpdHMuIFNvLCBpdCYjMzk7cyBjbGVhbiBvbiB0aGF0IGZyb250LgoKRG9lcyB0aGlzIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZD8gSXQmIzM5O3MgYWxsIHJlbW92YWwsIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBmaWVsZHMsIGl0IG9ubHkgcHJldmVudHMgc2ticyBiZWluZyBxdWV1ZWQgYW5kIHB1cmdpbmcgdGhlIHF1ZXVlIHRoYXQgaXNuJiMzOTt0IGJlaW5nIHVzZWQuIEl0IHNlZW1zIGV4dHJlbWVseSB1bmxpa2VseS4gU28sIEkgZG9uJiMzOTt0IHRoaW5rIEtNU0FOIGlzIG5lZWRlZC4gS0FTQU4va21lbWxlYWsgc2hvdWxkIGJlIG1vcmUgdGhhbiBzdWZmaWNpZW50IHRvIGNhdGNoIHBvdGVudGlhbCBpc3N1ZXMsIHRob3VnaCB0aGUgY2hhbmNlcyBhcmUgbG93LgoKTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIG9uZSBtb3JlIHRoaW5nOiBgc29ja19xdWV1ZV9yY3Zfc2tiYC4gSWYgaXQgZHJvcHMgdGhlIHNrYiwgdGhlIHNrYiBpcyBmcmVlZC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXhwb3NlZC4KClRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGlzIHBhdGNoIGxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDA4OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MDUuNTUxMTE5NDgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ3NTEyNTg2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJQUFBPWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfc29ja19kZXN0cnVjdFwiLFxuICAgIFwicHB0cF9yY3ZcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MDUuNTUxMTIzNTgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ2MTc5OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMGUzMmMyNzhkMWYzMTgyZTI2MWQ5NzkzNmZkNDY5ZTY5ZTg3ZjJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDExIDA4OjI4OjA0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmMgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xcbkBAIC0yNzgsMTEgKzI3OCw4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdF9fdTggKnBheWxvYWQ7XFxuIFxcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcXG4gXFxuLVxcdGlmICghKHNrLVxcdTAwM2Vza19zdGF0ZSBcXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpIHtcXG4tXFx0XFx0aWYgKHNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSlcXG4tXFx0XFx0XFx0Z290byBkcm9wO1xcbi1cXHRcXHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XFxuLVxcdH1cXG4rXFx0aWYgKCEoc2stXFx1MDAzZXNrX3N0YXRlIFxcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcXG4rXFx0XFx0Z290byBkcm9wO1xcbiBcXG4gXFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVxcdTAwM2VkYXRhKTtcXG4gXFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XFxuQEAgLTUzOSw3ICs1MzYsNiBAQCBzdGF0aWMgdm9pZCBwcHRwX3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbiBcXHRcXHRkZWxfY2hhbihwcHBveF9zayhzaykpO1xcbiBcXHRcXHRwcHBveF91bmJpbmRfc29jayhzayk7XFxuIFxcdH1cXG4tXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSk7XFxuIFxcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXFx1MDAzZXNrX2RzdF9jYWNoZSwgMSkpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODowNS45ODY1MDIyOTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MzIyODQ3NjA4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIixcbiAgICBcIlBQUE9YXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9zb2NrX2Rlc3RydWN0XCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMGUzMmMyNzhkMWYzMTgyZTI2MWQ5NzkzNmZkNDY5ZTY5ZTg3ZjJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMDg6Mjg6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jIGIvZHJpdmVycy9uZXQvcHBwL3BwdHAuY1xuaW5kZXggY2M4YzEwMjEyMmQ4MC4uYTc5N2EwNjA2ZjZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbkBAIC0yNzgsMTEgKzI3OCw4IEBAIHN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRfX3U4ICpwYXlsb2FkO1xuIFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGVhZGVyO1xuIFxuLVx0aWYgKCEoc2stXHUwMDNlc2tfc3RhdGUgXHUwMDI2IFBQUE9YX0NPTk5FQ1RFRCkpIHtcbi1cdFx0aWYgKHNvY2tfcXVldWVfcmN2X3NrYihzaywgc2tiKSlcbi1cdFx0XHRnb3RvIGRyb3A7XG4tXHRcdHJldHVybiBORVRfUlhfU1VDQ0VTUztcbi1cdH1cbitcdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKVxuK1x0XHRnb3RvIGRyb3A7XG4gXG4gXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXHUwMDNlZGF0YSk7XG4gXHRoZWFkZXJzaXplICA9IHNpemVvZigqaGVhZGVyKTtcbkBAIC01MzksNyArNTM2LDYgQEAgc3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcbiBcdFx0ZGVsX2NoYW4ocHBwb3hfc2soc2spKTtcbiBcdFx0cHBwb3hfdW5iaW5kX3NvY2soc2spO1xuIFx0fVxuLVx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNnNrLVx1MDAzZXNrX3JlY2VpdmVfcXVldWUpO1xuIFx0ZHN0X3JlbGVhc2UocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzay1cdTAwM2Vza19kc3RfY2FjaGUsIDEpKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODowNS45ODY1MDM4OTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjgzMDc2NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBQVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIEl0IHNlZW1zIGxpa2Ugd2UndmUgZ290IHNvbWUgY2hhbmdlcyBpbiB0aGUgY29yZSBwYWNrZXQgaGFuZGxpbmcgYW5kIHNvY2tldCBkZXN0cnVjdGlvbiByb3V0aW5lcywgc3BlY2lmaWNhbGx5IGBwcHRwX3Jjdl9jb3JlYCBhbmQgYHBwdHBfc29ja19kZXN0cnVjdGAuIExldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuSW4gYHBwdHBfcmN2X2NvcmVgLCBpdCBsb29rcyBsaWtlIHdlJ3JlIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmb3IgcGFja2V0cyByZWNlaXZlZCB3aGVuIHRoZSBzb2NrZXQgaXNuJ3QgaW4gYSBjb25uZWN0ZWQgc3RhdGUgKGAhKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpYCkuIFByZXZpb3VzbHksIHRoZSBjb2RlIHdvdWxkIHF1ZXVlIHRoZXNlIHBhY2tldHMgdXNpbmcgYHNvY2tfcXVldWVfcmN2X3NrYmAgYW5kIHRoZW4sIGlmIHF1ZXVpbmcgZmFpbGVkLCB3b3VsZCBkcm9wIHRoZW0uIE5vdywgd2UncmUgZHJvcHBpbmcgdGhlbSBpbW1lZGlhdGVseSB3aXRoIGEgYGdvdG8gZHJvcGAuIFRoYXQncyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSDigJMgbm8gbW9yZSBidWZmZXJpbmcgb2YgdW5leHBlY3RlZCBwYWNrZXRzLiBUaGlzIGltcGxpZXMgYSBzdHJpY3RlciBhZGhlcmVuY2UgdG8gdGhlIFBQVFAgc3RhdGUgbWFjaGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hhbmdlIHdhcyBkZWVtZWQgbmVjZXNzYXJ5LiBQb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIGhlcmUgYXMgd2VsbC5cblxuVGhlbiwgbW92aW5nIG9uIHRvIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3ZSd2ZSBnb3QgdGhlIHJlbW92YWwgb2YgYHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKWAuIFRoYXQncyBpbnRlcmVzdGluZy4gUHJldmlvdXNseSwgd2hlbiBhIHNvY2tldCB3YXMgZGVzdHJ1Y3RlZCwgYW55IHJlbWFpbmluZyBwYWNrZXRzIGluIHRoZSByZWNlaXZlIHF1ZXVlIHdlcmUgcHVyZ2VkLiBOb3csIHdlJ3JlIGFzc3VtaW5nIHRoZSBxdWV1ZSBpcyBlbXB0eSwgb3IgdGhlIHBhY2tldHMgYXJlIGhhbmRsZWQgZWxzZXdoZXJlLiBBZ2FpbiwgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgd2UncmUgbWFuYWdpbmcgYnVmZmVyZWQgZGF0YSBhdCBzb2NrZXQgdGVhcmRvd24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHB1cmdlIGlzIG5vIGxvbmdlciBuZWVkZWQuIElzIHRoaXMgcmVsYXRlZCB0byB0aGUgY2hhbmdlIGluIGBwcHRwX3Jjdl9jb3JlYD8gUGVyaGFwcyB0aGUgbmV3IGRyb3Atb24tdW5jb25uZWN0ZWQgYmVoYXZpb3IgbWFrZXMgdGhlIHF1ZXVlIHB1cmdlIHJlZHVuZGFudD8gT3IgaXMgdGhlcmUgYSBkaWZmZXJlbnQgZGF0YSBtYW5hZ2VtZW50IHBsYW4/XG5cbkdpdmVuIHRoZXNlIGZ1bmN0aW9uYWwgY2hhbmdlcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyB3aXRoaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHRwLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgb3IgaW1wYWN0ZWQgYnkgdGhlc2UgbW9kaWZpY2F0aW9ucy4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhpcywgYXMgaXQgY291bGQgaGF2ZSBkb3duc3RyZWFtIGltcGxpY2F0aW9ucy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTIuNjY5NTgzMDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDU2NjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYyLVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTIuNzI2NjQ1OTAxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3OTg3MTMyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQUFRQIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgc3lzdGVtIGlzIHNldCB0byB1c2UgYFBQVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBtb2R1bGUuIFNpbmNlIEknbSB3b3JraW5nIHdpdGggdGhlIGtlcm5lbCwgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciBhbGwgdGhpbmdzIFBQUC1yZWxhdGVkLCBhbmQgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdGllZCB0byB0aGUgYFBQVFBgIHByb3RvY29sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzIGFyZSByZXF1aXJlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBgUFBUUGAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGp1c3Qgc3RhbmRhcmQgcHJhY3RpY2UgZm9yIG1lOiBxdWlja2x5IGxvY2F0ZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgZGVwZW5kZW5jaWVzLiBJdCdzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgUFBQIHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgzLCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTYuMjA2NTE5MTk1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDk4NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFRQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1Mz1jb25maWcgUFBQT0VfSEFTSF9CSVRTXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNjAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTYxOmNvbmZpZyBQUFRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTYyLVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MTYuMjU1MDIxMTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjE6XFx0Y29uZmlnIFBQVFBcXG4gMTYyOlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBJUHY0IChQUFRQKVxcXCJcXG4gMTYzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXFxuIDE2NDpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTY1OlxcdFxcdGhlbHBcXG4gMTY2OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQIG92ZXIgSVB2NC4oUG9pbnQtdG8tUG9pbnQgVHVubmVsaW5nIFByb3RvY29sKVxcbiAxNjc6XFx0XFxuIDE2ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBwcGQgcGx1Z2luIHRvIHdvcmsgaW4gY2xpZW50IG1vZGUgb3JcXG4gMTY5OlxcdFxcdCAgbW9kaWZpZWQgcHB0cGQgKHBvcHRvcCkgdG8gd29yayBpbiBzZXJ2ZXIgbW9kZS5cXG4gMTcwOlxcdFxcdCAgU2VlIGh0dHA6Ly9hY2NlbC1wcHRwLnNvdXJjZWZvcmdlLm5ldC8gZm9yIGluZm9ybWF0aW9uIGhvdyB0b1xcbiAxNzE6XFx0XFx0ICB1dGlsaXplIHRoaXMgbW9kdWxlLlxcbiAxNzI6XFx0XFxuIDE3MzpcXHRjb25maWcgUFBQT0wyVFBcXG4gMTc0OlxcdFxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbiAxNzU6XFx0XFx0ZGVwZW5kcyBvbiBMMlRQXFxuIDE3NjpcXHRcXHRzZWxlY3QgUFBQT1hcXG4gMTc3OlxcdFxcdGhlbHBcXG4gMTc4OlxcdFxcdCAgU3VwcG9ydCBmb3IgUFBQLW92ZXItTDJUUCBzb2NrZXQgZmFtaWx5LiBMMlRQIGlzIGEgcHJvdG9jb2xcXG4gMTc5OlxcdFxcdCAgdXNlZCBieSBJU1BzIGFuZCBlbnRlcnByaXNlcyB0byB0dW5uZWwgUFBQIHRyYWZmaWMgb3ZlciBVRFBcXG4gMTgwOlxcdFxcdCAgdHVubmVscy4gTDJUUCBpcyByZXBsYWNpbmcgUFBUUCBmb3IgVlBOIHVzZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjE2LjI1NTEwNzU0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MDU1MjcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKk5ldHdvcmsgUHJvdG9jb2wgRGVwZW5kZW5jaWVzIGFuZCBNb2R1bGUgUmV2aWV3KipcblxuUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIG15IGludGVybmFsIHByb2Nlc3MgZmxhZ3MgYSBkZXBlbmRlbmN5OiBgTkVUX0lQR1JFX0RFTVVYYC4gVGhhdCBtZWFucywgaW1tZWRpYXRlbHksIEkndmUgZ290IHRvIGVuc3VyZSB0aGUgcHJlc2VuY2UgYW5kIGNvcnJlY3QgY29uZmlndXJhdGlvbiBvZiBib3RoIGBQUFRQYCBhbmQsIGNydWNpYWxseSwgYE5FVF9JUEdSRV9ERU1VWGAuIFRoZSBzeXN0ZW0ncyBhbHJlYWR5IHNlbGVjdGVkIGBQUFBPWGAsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoaXMgY29udGV4dC5cblxuTm93LCB3aGVyZSBkbyBJIG5lZWQgdG8gbG9vayB0byBjb25maXJtIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIG9wZXJhdGlvbj8gTXkgYXR0ZW50aW9uIHR1cm5zIHRvIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlIGZ1bmN0aW9ucyBgcHB0cF9yY3ZfY29yZWAgYW5kIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHJlY2VpdmluZyBQUFRQIHRyYWZmaWMgYW5kIHRoZSBzb2NrZXQgY2xlYW51cCBwcm9jZWR1cmVzLCByZXNwZWN0aXZlbHksIHJlc2lkZS4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwb2ludHMgdG8gdmVyaWZ5IHRvIHVuZGVyc3RhbmQgYW5kIHZhbGlkYXRlIHRoZSBlc3RhYmxpc2hlZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODoyMC4yOTU2NjM0NDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDU1MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9MTQ5PXN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjczOnN0YXRpYyBpbnQgcHB0cF9yY3ZfY29yZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz01NDI9c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NTg6XFx0c2stXFx1MDAzZXNrX2JhY2tsb2dfcmN2ID0gcHB0cF9yY3ZfY29yZTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1OS1cXHRzay1cXHUwMDNlc2tfc3RhdGUgICAgICAgPSBQUFBPWF9OT05FO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODoyMC4zNDE3MTcyNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0MTMxMDc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIFNldHVwIGFuZCBGdW5jdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHB0cGAgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBub3RpbmcgaXMgdGhlIGFzc2lnbm1lbnQ6IGBwcHRwX3Jjdl9jb3JlYCBpcyBiZWluZyBzZXQgYXMgdGhlIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdmAuIFRoaXMgbWFrZXMgc2Vuc2UsIHRoYXQncyB3aGVyZSB0aGUgY29yZSBwYWNrZXQgcmVjZXB0aW9uIGhhbmRsaW5nIHdpbGwgbGlrZWx5IGhhcHBlbi4gVGhlbiB3ZSd2ZSBnb3QgYHBwdHBfc29ja19kZXN0cnVjdGAgYmVpbmcgYXNzaWduZWQgdG8gYHNrLVx1MDAzZXNrX2Rlc3RydWN0YC4gT2theSwgdGhhdCdzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgc29ja2V0LCBhcyB5b3UnZCBleHBlY3QuIE5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGVzZSBmdW5jdGlvbnMsIHN0YXJ0aW5nIHdpdGggYHBwdHBfcmN2X2NvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJIGFtIGdvaW5nIHRvIHNlZSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGBzdGF0aWNgLCBhbmQgaWYgdGhleSBhcmUsIHRoYXQgZ2l2ZXMgdXMgYSBjbGVhciBpbmRpY2F0aW9uIGFib3V0IHRoZSBjb2RlIHNjb3BlLiBBaCwgeWVzLCB0aGV5IGFyZSBpbmRlZWQgc3RhdGljIGZ1bmN0aW9ucywgYHBwdHBfcmN2X2NvcmVgIGFuZCBgcHB0cF9zb2NrX2Rlc3RydWN0YCAuIFRoYXQncyBoZWxwZnVsLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBzb3VyY2UgZmlsZSwgd2hpY2ggbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLCBidXQgdGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhleSB3aWxsIGFsc28gYmUgYSBjb3JlIHBhcnQgb2YgdGhlIGNvZGUncyBpbXBsZW1lbnRhdGlvbi4gTGV0J3Mgc3RhcnQgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjQuMDgzMDQyOTQzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYyMjg4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcHRwX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NDc9c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM9NTM9c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz03Mj1zdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzQtXFx0c3RydWN0IHBwcG94X3NvY2sgKnNvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3NTpcXHRzdHJ1Y3QgcHB0cF9vcHQgKm9wdDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTc2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz05ND1zdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6OTU6XFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTYte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYz0xMjQ9c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjEzMjpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqcHB0cF9yb3V0ZV9vdXRwdXQoY29uc3Qgc3RydWN0IHBwcG94X3NvY2sgKnBvLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTMzLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBmbG93aTQgKmZsNClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MTQ5OnN0YXRpYyBpbnQgcHB0cF94bWl0KHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE1My1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTQ6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNTU6XFx0c3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqaGRyO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMTU2LVxcdHVuc2lnbmVkIGludCBoZWFkZXJfbGVuID0gc2l6ZW9mKCpoZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNjktXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxNzA6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNzEtXFx0aWYgKElTX0VSUihydCkpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTIxNi1cXHRza2JfcHVzaChza2IsIGhlYWRlcl9sZW4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjE3OlxcdGhkciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NS1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzY6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzctXFx0aW50IGhlYWRlcnNpemUsIHBheWxvYWRfbGVuLCBzZXE7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzgtXFx0X191OCAqcGF5bG9hZDtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3OTpcXHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yODAtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI4My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI4NDpcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjg1LVxcdGhlYWRlcnNpemUgID0gc2l6ZW9mKCpoZWFkZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTItXFx0XFx0XFx0Z290byBkcm9wO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MjkzOlxcdFxcdGhlYWRlciA9IChzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICopKHNrYi1cXHUwMDNlZGF0YSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yOTQtXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0NzpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ5LVxcdHN0cnVjdCBwcHBveF9zb2NrICpwbztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM1MDpcXHRzdHJ1Y3QgcHB0cF9ncmVfaGVhZGVyICpoZWFkZXI7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNTEtXFx0c3RydWN0IGlwaGRyICppcGg7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2MC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM2MTpcXHRoZWFkZXIgPSAoc3RydWN0IHBwdHBfZ3JlX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM2Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzgxLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzgyOnN0YXRpYyBpbnQgcHB0cF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1c2VydmFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODMtXFx0XFx0ICAgICBpbnQgc29ja2FkZHJfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MTQtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MTU6c3RhdGljIGludCBwcHRwX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNi1cXHRcXHRcXHRpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQyMC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0MjE6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00MjItXFx0c3RydWN0IHJ0YWJsZSAqcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ1My1cXHRwby1cXHUwMDNlY2hhbi5wcml2YXRlID0gc2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTQ6XFx0cG8tXFx1MDAzZWNoYW4ub3BzID0gXFx1MDAyNnBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NTUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTY6XFx0cnQgPSBwcHRwX3JvdXRlX291dHB1dChwbywgXFx1MDAyNmZsNCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NTctXFx0aWYgKElTX0VSUihydCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDY4OlxcdHBvLVxcdTAwM2VjaGFuLmhkcmxlbiA9IDIgKyBzaXplb2Yoc3RydWN0IHBwdHBfZ3JlX2hlYWRlcik7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00NjktXFx0cG8tXFx1MDAzZWNoYW4uZGlyZWN0X3htaXQgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0ODQ6c3RhdGljIGludCBwcHRwX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4NS1cXHRpbnQgcGVlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAwLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTAxOnN0YXRpYyBpbnQgcHB0cF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MzM6c3RhdGljIHZvaWQgcHB0cF9zb2NrX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0MS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU0MjpzdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDYtXFx0c3RydWN0IHBwcG94X3NvY2sgKnBvO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ3OlxcdHN0cnVjdCBwcHRwX29wdCAqb3B0O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTQ5OlxcdHNrID0gc2tfYWxsb2MobmV0LCBQRl9QUFBPWCwgR0ZQX0tFUk5FTCwgXFx1MDAyNnBwdHBfc2tfcHJvdG8sIGtlcm4pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTUwLVxcdGlmICghc2spXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1NS1cXHRzb2NrLVxcdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU2OlxcdHNvY2stXFx1MDAzZW9wcyAgID0gXFx1MDAyNnBwdHBfb3BzO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTU4OlxcdHNrLVxcdTAwM2Vza19iYWNrbG9nX3JjdiA9IHBwdHBfcmN2X2NvcmU7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NTktXFx0c2stXFx1MDAzZXNrX3N0YXRlICAgICAgID0gUFBQT1hfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTYyLVxcdHNrLVxcdTAwM2Vza19wcm90b2NvbCAgICA9IFBYX1BST1RPX1BQVFA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NjM6XFx0c2stXFx1MDAzZXNrX2Rlc3RydWN0ICAgID0gcHB0cF9zb2NrX2Rlc3RydWN0O1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTY0LVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzUtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NzY6c3RhdGljIGludCBwcHRwX3BwcF9pb2N0bChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHVuc2lnbmVkIGludCBjbWQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NzctXFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU4MC1cXHRzdHJ1Y3QgcHBwb3hfc29jayAqcG8gPSBwcHBveF9zayhzayk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1ODE6XFx0c3RydWN0IHBwdHBfb3B0ICpvcHQgPSBcXHUwMDI2cG8tXFx1MDAzZXByb3RvLnBwdHA7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01ODItXFx0dm9pZCBfX3VzZXIgKmFyZ3AgPSAodm9pZCBfX3VzZXIgKilhcmc7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYwNi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYwNzpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcF9jaGFubmVsX29wcyBwcHRwX2NoYW5fb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA4OlxcdC5zdGFydF94bWl0ID0gcHB0cF94bWl0LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjA5OlxcdC5pb2N0bCAgICAgID0gcHB0cF9wcHBfaW9jdGwsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MTAtfTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxMjpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxMy1cXHQubmFtZSAgICAgPSBcXFwiUFBUUFxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxNy1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYxODpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYxOS1cXHQuZmFtaWx5ICAgICA9IEFGX1BQUE9YLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjIwLVxcdC5vd25lciAgICAgID0gVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjE6XFx0LnJlbGVhc2UgICAgPSBwcHRwX3JlbGVhc2UsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjI6XFx0LmJpbmQgICAgICAgPSBwcHRwX2JpbmQsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MjM6XFx0LmNvbm5lY3QgICAgPSBwcHRwX2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjQtXFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MjUtXFx0LmFjY2VwdCAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYyNjpcXHQuZ2V0bmFtZSAgICA9IHBwdHBfZ2V0bmFtZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYyNy1cXHQubGlzdGVuICAgICA9IHNvY2tfbm9fbGlzdGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Mzg6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBveF9wcm90byBwcHBveF9wcHRwX3Byb3RvID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjM5OlxcdC5jcmVhdGUgPSBwcHRwX2NyZWF0ZSxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0MC1cXHQub3duZXIgID0gVEhJU19NT0RVTEUsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDYtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDc6c3RhdGljIGludCBfX2luaXQgcHB0cF9pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjU1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjU2OlxcdGVyciA9IGdyZV9hZGRfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY1Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY2MS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY2MjpcXHRlcnIgPSBwcm90b19yZWdpc3RlcihcXHUwMDI2cHB0cF9za19wcm90bywgMCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NjctXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2Njg6XFx0ZXJyID0gcmVnaXN0ZXJfcHBwb3hfcHJvdG8oUFhfUFJPVE9fUFBUUCwgXFx1MDAyNnBwcG94X3BwdHBfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjY5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc2LW91dF91bnJlZ2lzdGVyX3NrX3Byb3RvOlxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc3OlxcdHByb3RvX3VucmVnaXN0ZXIoXFx1MDAyNnBwdHBfc2tfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjc4LW91dF9ncmVfZGVsX3Byb3RvY29sOlxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njc5OlxcdGdyZV9kZWxfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4MC1vdXRfbWVtX2ZyZWU6XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4NjpzdGF0aWMgdm9pZCBfX2V4aXQgcHB0cF9leGl0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4OC1cXHR1bnJlZ2lzdGVyX3BwcG94X3Byb3RvKFBYX1BST1RPX1BQVFApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6Njg5OlxcdHByb3RvX3VucmVnaXN0ZXIoXFx1MDAyNnBwdHBfc2tfcHJvdG8pO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjkwOlxcdGdyZV9kZWxfcHJvdG9jb2woXFx1MDAyNmdyZV9wcHRwX3Byb3RvY29sLCBHUkVQUk9UT19QUFRQKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5MS1cXHR2ZnJlZShjYWxsaWRfc29jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NDptb2R1bGVfaW5pdChwcHRwX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY5NTptb2R1bGVfZXhpdChwcHRwX2V4aXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY5Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjQuMTQwNjcyMTA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTI0Mjc1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3QuIFJpZ2h0LCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaXQncyB0b3VjaGluZyBhcmUgYHBwdHBfcmN2YCwgYHBwdHBfYmluZGAsIGBwcHRwX2Nvbm5lY3RgLCBgcHB0cF9yZWxlYXNlYCwgYHBwdHBfZ2V0bmFtZWAsIGBwcHRwX3htaXRgLCBgcHB0cF9wcHBfaW9jdGxgLCBhbmQgYHBwdHBfY3JlYXRlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIFBQVHAgZnVuY3Rpb25zLCBzbyBjaGFuZ2VzIGhlcmUgYXJlIHNpZ25pZmljYW50LiBCdXQgaXQgbG9va3MgbGlrZSB0aGUgKmNvcmUqIHdvcmsgaXMgZm9jdXNlZCBvbiBgcHB0cF9yY3ZfY29yZWAsIHdoaWNoIGlzIGNhbGxlZCBpbmRpcmVjdGx5IGZyb20gYHBwdHBfcmN2YC4gTGV0IG1lIHNlZS4uLiBgc2tfcmVjZWl2ZV9za2JgLi4uIG5vLCB3YWl0LCBpdCdzIGBzay1cdTAwM2Vza19iYWNrbG9nX3JjdmAuIFJpZ2h0LCBzbyB0aGlzIGBwcHRwX3Jjdl9jb3JlYCBpcyBiZWluZyBjYWxsZWQgd2hlbiB0aGUgc3lzdGVtIHByb2Nlc3NlcyB0aGUgYmFja2xvZy4gVGhhdCBzdWdnZXN0cyBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBoYW5kbGVkLiBBbmQgaXQgYWxzbyB0b3VjaGVzIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyBkZXN0cm95ZWQsIHNvIHRoYXQncyBhIGNsZWFudXAgYXNwZWN0IHRvIGNvbnNpZGVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzdGFydCBieSBkaWdnaW5nIGludG8gYHBwdHBfcmN2YCBhbmQgZm9sbG93IHRoZSBjYWxsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NjcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MjguMzMzMTAyMDkxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc0NzQwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHB0cF9yY3ZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jPTE0OT1zdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3Mi1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjI3MzpzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtMzQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6MzQ3OnN0YXRpYyBpbnQgcHB0cF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTU0Mj1zdGF0aWMgaW50IHBwdHBfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2tldCAqc29jaywgaW50IGtlcm4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU1Ny1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjU1ODpcXHRzay1cXHUwMDNlc2tfYmFja2xvZ19yY3YgPSBwcHRwX3Jjdl9jb3JlO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTU5LVxcdHNrLVxcdTAwM2Vza19zdGF0ZSAgICAgICA9IFBQUE9YX05PTkU7XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jPTY0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGdyZV9wcm90b2NvbCBncmVfcHB0cF9wcm90b2NvbCA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY0NDpcXHQuaGFuZGxlciA9IHBwdHBfcmN2LFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ1LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjI4LjQ3MDU4MjM2N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk3NzUyODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBUIFByb3RvY29sIEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgcHB0cGAgY29kZS4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBwcHRwX3JjdmAgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYmVpbmcgdGhlIEdSRSBwcm90b2NvbCBoYW5kbGVyLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBjb3JlIG9mIHJlY2VpdmluZyBwYWNrZXRzLiBJJ2xsIGFsc28gYWRkIGBwcHRwX2JpbmRgLCBgcHB0cF9jb25uZWN0YCwgYW5kIGBwcHRwX3JlbGVhc2VgIHRvIHRoZSBsaXN0IG9mIGtleSBzeW1ib2xzIHRvIGludmVzdGlnYXRlLlxuXG5IYW5nIG9uLCB0aG91Z2guLi4gYHBwdHBfcmN2YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGBzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpYC4gVGhhdCBjb3VsZCBiZSBhbiBpc3N1ZS4gQnV0IHdhaXQsIGl0J3MgYWN0dWFsbHkgYXNzaWduZWQgdG8gYSBgLmhhbmRsZXJgIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aGluIGBncmVfcHB0cF9wcm90b2NvbGAuIEFoYSEgSWYgaXQgKndlcmVuJ3QqIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEJ1dCBiZWNhdXNlIGl0ICppcyogYXNzaWduZWQgdG8gdGhhdCBmdW5jdGlvbiBwb2ludGVyLCBpbmxpbmluZyBpcyBpbXBvc3NpYmxlLiBTbywgZGVzcGl0ZSBiZWluZyBzdGF0aWMsIGl0ICp3aWxsKiBoYXZlIGEgc3ltYm9sLlxuXG5Ob3csIEkgbmVlZCB0byBrZWVwIHRoZSBwcm9tcHQncyBwcmVmZXJlbmNlIGluIG1pbmQ6IHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBwcHRwX3JjdmAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpcyAqbm90KiBpbmxpbmVkLiBJIGFtIGdvb2QsIGhlcmUhIFRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhwbG9yZSB0aGUgY29kZWJhc2UgYW5kIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHdpdGhpbiBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MzQuMzY4MzM3OTAyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzU2Mzc4MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVowLTlfXSsgcHB0cF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6MzQuNDY1OTA5NjgzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzI4MTgxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgUG90ZW50aWFsIFN0YXRpYyBJc3N1ZXMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgd2UgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGhhdmVuJ3QgaW5hZHZlcnRlbnRseSBpbnRyb2R1Y2VkIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGNhdXNlIHByb2JsZW1zLiBJIGtub3cgYmV0dGVyIHRoYW4gdG8gYmxpbmRseSB0cnVzdCB0aGF0IGV2ZXJ5dGhpbmcgaXMgYXMgaXQgc2hvdWxkIGJlLCBlc3BlY2lhbGx5IGluIHRoZXNlIGtpbmRzIG9mIHN5c3RlbXMuIFRoaXMgY2hlY2sgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgdGhlIHJvYnVzdG5lc3MgYW5kIHJlbGlhYmlsaXR5IG9mIHRoZSBjb2RlYmFzZS4gSXQncyBhIGZ1bmRhbWVudGFsIHN0ZXAsIGFuZCBJJ20gbm90IGdvaW5nIHRvIHNraXAgaXQuIFdlJ3ZlIGdvdCB0byBlbnN1cmUgdGhlIGFyY2hpdGVjdHVyZSBpcyBzb3VuZC4gTGV0J3MgbWFrZSBzdXJlIHRoaXMgaXMgYWxsIGJ1aWx0IG9uIHNvbGlkIGdyb3VuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMzMsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODozOC42Mzg3MzA1ODdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzU1MTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rXFxcXCo/IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NDpzdGF0aWMgREVDTEFSRV9CSVRNQVAoY2FsbGlkX2JpdG1hcCwgTUFYX0NBTExJRCArIDEpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDUtc3RhdGljIHN0cnVjdCBwcHBveF9zb2NrIF9fcmN1ICoqY2FsbGlkX3NvY2s7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ3OnN0YXRpYyBERUZJTkVfU1BJTkxPQ0soY2hhbl9sb2NrKTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODozOC42ODYwOTA2MzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NDE4MzE5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqSW50ZXJuYWwgQ29kZSBSZXZpZXc6IFNpbXBsaWZ5aW5nIFBQVFAgRnVuY3Rpb24gQ2FsbHMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGJhY2sgaW50byB0aGlzIFBQVFAgY29kZS4gSSdtIHRoaW5raW5nLCBsZXQncyBrZWVwIGl0IGNsZWFuIGFuZCBzdHJhaWdodGZvcndhcmQuIEknbGwgc3RpY2sgdG8gdGhvc2UgY29yZSBmdW5jdGlvbiBjYWxscywgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGBwcHRwX2JpbmRgLCBhbmQgYHBwdHBfcmVsZWFzZWAuIFRoYXQgc2hvdWxkIGNvdmVyIHRoZSBjcnVjaWFsIGFzcGVjdHMuXG5cbldhaXQgYSBzZWNvbmQuLi4gc29tZXRoaW5nJ3MgbmFnZ2luZyBhdCBtZS4gQXJlIGFsbCB0aGUgZnVuY3Rpb25zIHdpdGhpbiBgcHB0cC5jYCAqc3RhdGljKj8gSSByZWFsbHkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gVGhhdCBoYXMgc2VyaW91cyBpbXBsaWNhdGlvbnMgZm9yIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGVtLiBJZiB0aGV5IGFyZSwgdGhhdCB3aWxsIGltcGFjdCB0aGUgZGVzaWduLCBtb2R1bGFyaXR5LCBhbmQsIGZyYW5rbHksIHRoZSB0ZXN0YWJpbGl0eSBvZiB0aGlzIG1vZHVsZSBzaWduaWZpY2FudGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYSBjcml0aWNhbCBhY2Nlc3MgcG9pbnQuIFRpbWUgZm9yIGEgcXVpY2sgdmVyaWZpY2F0aW9uLiBUaGlzIGlzIGEgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZ290Y2hhLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU3NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjQyLjI0MDI3NjE1OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDcwMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHRwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00My1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQ0OnN0YXRpYyBERUNMQVJFX0JJVE1BUChjYWxsaWRfYml0bWFwLCBNQVhfQ0FMTElEICsgMSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0NTpzdGF0aWMgc3RydWN0IHBwcG94X3NvY2sgX19yY3UgKipjYWxsaWRfc29jaztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDc6c3RhdGljIERFRklORV9TUElOTE9DSyhjaGFuX2xvY2spO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo0OTpzdGF0aWMgc3RydWN0IHByb3RvIHBwdHBfc2tfcHJvdG8gX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHBwX2NoYW5uZWxfb3BzIHBwdHBfY2hhbl9vcHM7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1MTpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwcHRwX29wcztcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTM6c3RhdGljIHN0cnVjdCBwcHBveF9zb2NrICpsb29rdXBfY2hhbih1MTYgY2FsbF9pZCwgX19iZTMyIHNfYWRkcilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNzEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo3MjpzdGF0aWMgaW50IGxvb2t1cF9jaGFuX2RzdCh1MTYgY2FsbF9pZCwgX19iZTMyIGRfYWRkcilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo5NDpzdGF0aWMgaW50IGFkZF9jaGFuKHN0cnVjdCBwcHBveF9zb2NrICpzb2NrLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtOTUtXFx0XFx0ICAgIHN0cnVjdCBwcHRwX2FkZHIgKnNhKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjMtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMjQ6c3RhdGljIHZvaWQgZGVsX2NoYW4oc3RydWN0IHBwcG94X3NvY2sgKnNvY2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMjUte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xMzEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoxMzI6c3RhdGljIHN0cnVjdCBydGFibGUgKnBwdHBfcm91dGVfb3V0cHV0KGNvbnN0IHN0cnVjdCBwcHBveF9zb2NrICpwbyxcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTEzMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZmxvd2k0ICpmbDQpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTE0OC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjE0OTpzdGF0aWMgaW50IHBwdHBfeG1pdChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0xNTAte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0yNzItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzoyNzM6c3RhdGljIGludCBwcHRwX3Jjdl9jb3JlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTI3NC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjM0NzpzdGF0aWMgaW50IHBwdHBfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zNDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy0zODEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzozODI6c3RhdGljIGludCBwcHRwX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVzZXJ2YWRkcixcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTM4My1cXHRcXHQgICAgIGludCBzb2NrYWRkcl9sZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTQxNC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjQxNTpzdGF0aWMgaW50IHBwdHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdXNlcnZhZGRyLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDE2LVxcdFxcdFxcdGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncylcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNDgzLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NDg0OnN0YXRpYyBpbnQgcHB0cF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy00ODUtXFx0aW50IHBlZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTUwMC1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjUwMTpzdGF0aWMgaW50IHBwdHBfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTMyLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTMzOnN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy01NDEtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo1NDI6c3RhdGljIGludCBwcHRwX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBrZXJuKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc1LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NTc2OnN0YXRpYyBpbnQgcHB0cF9wcHBfaW9jdGwoc3RydWN0IHBwcF9jaGFubmVsICpjaGFuLCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNTc3LVxcdHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MDYtXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2MDc6c3RhdGljIGNvbnN0IHN0cnVjdCBwcHBfY2hhbm5lbF9vcHMgcHB0cF9jaGFuX29wcyA9IHtcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYwOC1cXHQuc3RhcnRfeG1pdCA9IHBwdHBfeG1pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjExLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjEyOnN0YXRpYyBzdHJ1Y3QgcHJvdG8gcHB0cF9za19wcm90byBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjEzLVxcdC5uYW1lICAgICA9IFxcXCJQUFRQXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE3LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwdHBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjE5LVxcdC5mYW1pbHkgICAgID0gQUZfUFBQT1gsXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTYzNy1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjYzODpzdGF0aWMgY29uc3Qgc3RydWN0IHBwcG94X3Byb3RvIHBwcG94X3BwdHBfcHJvdG8gPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02MzktXFx0LmNyZWF0ZSA9IHBwdHBfY3JlYXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDItXFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYzo2NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBncmVfcHJvdG9jb2wgZ3JlX3BwdHBfcHJvdG9jb2wgPSB7XFxuZHJpdmVycy9uZXQvcHBwL3BwdHAuYy02NDQtXFx0LmhhbmRsZXIgPSBwcHRwX3JjdixcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjQ2LVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmM6NjQ3OnN0YXRpYyBpbnQgX19pbml0IHBwdHBfaW5pdF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jLTY4NS1cXG5kcml2ZXJzL25ldC9wcHAvcHB0cC5jOjY4NjpzdGF0aWMgdm9pZCBfX2V4aXQgcHB0cF9leGl0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3BwcC9wcHRwLmMtNjg3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NDIuNDIwMzU0MTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3ODk0MTM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvZGUgTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNoYW5nZWQuIEhtbSwgaXQgbG9va3MgbGlrZSBtb3N0IG9mIHRoZW0gYXJlIHN0YXRpYywgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIExldCdzIHNlZS4uLiBJJ2xsIHN0YXJ0IGJ5IGluY2x1ZGluZyBgcHB0cF9yY3ZgLCBgcHB0cF9yY3ZfY29yZWAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIEFoLCBidXQgaG9sZCBvbiwgYHBwdHBfcmN2X2NvcmVgIGlzIHRoZSAqbW9kaWZpZWQqIGZ1bmN0aW9uLCB0aGF0J3MgaW1wb3J0YW50LiBBbmQgaXQgbG9va3MgbGlrZSBgcHB0cF9zb2NrX2Rlc3RydWN0YCBoYXMgYWxzbyBiZWVuIGFsdGVyZWQuIFJpZ2h0LCBzbyBJJ2xsIHByaW9yaXRpemUgdGhvc2UuIFRoZSBsaXN0IHNob3VsZCByZWFsbHkgYmUgYHBwdHBfcmN2X2NvcmVgLCBgcHB0cF9zb2NrX2Rlc3RydWN0YCwgYHBwdHBfcmN2YCwgYHBwdHBfY29ubmVjdGAsIGFuZCBgcHB0cF9iaW5kYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgY2hhbmdlcy4gTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gYXNwZWN0cy4gVGhlIGNvbmZpZyBvcHRpb25zIGludm9sdmVkIGFyZSBgUFBUUGAgYW5kIGBORVRfSVBHUkVfREVNVVhgLiBCdXQgd2FpdCBhIHNlY29uZCwgYE5FVF9JUEdSRV9ERU1VWGAgaXMgYWN0dWFsbHkgYSBkZXBlbmRlbmN5IG9mIGBQUFRQYC4gSSBzaG91bGQgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aG9zZSBvcHRpb25zLCBzbyB0aGF0IHRoZSBhbmFseXNpcyBpcyBjb21wcmVoZW5zaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0Ni44OTkyOTg0MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTU3ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVfREVNVVhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0Ni45NDg0NjEyNDhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkxNjQ5MTI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUX0lQR1JFX0RFTVVYYC4gQmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgYXNzZXNzbWVudCBvciB3b3JrIHdpdGggaXQsIEkgbmVlZCB0byBrbm93IHdoYXQgaXQgcmVsaWVzIG9uIGFuZCB3aGF0IG1pZ2h0IGJyZWFrIGlmIEkgd2VyZSB0byBjaGFuZ2UgaXQuIFRoaXMgaXMgZnVuZGFtZW50YWw7IEkgY2FuJ3QgYnVpbGQgb24gc2hha3kgZ3JvdW5kLiBVbmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmN5IHRyZWUgaXMgdGhlIGZpcnN0IGtleSB0byBzYWZlIGFuZCBpbmZvcm1lZCBtb2RpZmljYXRpb24uIFNvLCBsZXQncyBkaWcgaW50byB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo0OS44NjQ5NTQ5OThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjQ5Ljg2NTA0MDU2OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU4NjQxMTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gYW5kIEZ1enppbmcgU3RyYXRlZ3kgZm9yIFBQVFAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5vdGljZWQgdGhhdCBgTkVUX0lQR1JFX0RFTVVYYCBoYXMgbm8gZGlyZWN0IGRlcGVuZGVuY2llcyBvbiBpdHMgb3duLiBUaGF0LCBjb3VwbGVkIHdpdGggYFBQVFBgLCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZSwgYFBQVFBgICpkb2VzKiBkZXBlbmQgb24gYE5FVF9JUEdSRV9ERU1VWGAuIFNvIGlmIEkgc3BlY2lmeSBgUFBUUGAsIGBORVRfSVBHUkVfREVNVVhgIG1pZ2h0IGJlIGluZGlyZWN0bHkgbmVlZGVkIHVubGVzcyBpdCdzIGhhbmRsZWQgdmlhIGBzZWxlY3RgLiBKdXN0IHRvIGJlIHNhZmUsIEknbGwgaW5jbHVkZSBib3RoIGluIHRoZSBjb25maWd1cmF0aW9uLiBOb3csIHdoYXQgYWJvdXQgYFBQUE9YYD8gQWgsIHJpZ2h0LCBgUFBUUGAgKnNlbGVjdHMqIGBQUFBPWGAuIFNvLCBgUFBUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGhlcmUuXG5cbk5vdywgbGV0J3MgcmUtZXhhbWluZSB0aGF0IHBhdGNoLiBIbW0sIEkgc2VlIGl0J3MgY2hhbmdlZCB0aGUgbG9naWMuIEl0IG5vdyBwcmV2ZW50cyBwYWNrZXRzIGZyb20gYmVpbmcgcXVldWVkIHRvIGFuIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0LiBJdCBhbHNvIHJlbW92ZXMgYSBxdWV1ZSBwdXJnZSBmcm9tIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGlzIHNpZ25pZmljYW50ISBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gSSdsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBwcHRwX3Jjdl9jb3JlYCwgYHBwdHBfc29ja19kZXN0cnVjdGAsIGBwcHRwX3JjdmAsIGBwcHRwX2Nvbm5lY3RgLCBhbmQgYHBwdHBfYmluZGAuIE15IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGBQUFRQYCBhbmQgYE5FVF9JUEdSRV9ERU1VWGAuIFxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBQUFBPWGAgaXMgYWN0dWFsbHkgYSBjb25maWcgb3B0aW9uIHRvby5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1OTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1NS44MjM2ODQxNzVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTE5MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQUFBPWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMDQ9Y29uZmlnIFBQUE9BVE1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExMi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI4OjU1Ljg3ODIwODMxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTc0Mzk4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyB5b3VyIHN1bW1hcnk6XG5cbioqQ29uZmlndXJpbmcgUFBQT1ggYW5kIFNldHRpbmcgUmVzdWx0cyoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYFBQUE9YYCBpcyBpbmRlZWQgYSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRpbWUgdG8gYWRkIGl0IHRvIHRoZSBzeXN0ZW0uIE5vdyB0aGF0IEkndmUgaGFuZGxlZCB0aGF0LCBJJ2xsIGdvIGFoZWFkIGFuZCBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIGRvaW5nIHRoaW5ncyBpbiB0aGUgY29ycmVjdCBvcmRlciB0byBlbnN1cmUgdGhlIHJlc3VsdCBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM3OCwiT3V0cHV0VG9rZW5zIjoxNDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1OS4xMzU2NTAxODRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMyNTUyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUFBUUFwiLFxuICAgIFwiTkVUX0lQR1JFX0RFTVVYXCIsXG4gICAgXCJQUFBPWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwdHBfcmN2X2NvcmVcIixcbiAgICBcInBwdHBfc29ja19kZXN0cnVjdFwiLFxuICAgIFwicHB0cF9yY3ZcIixcbiAgICBcInBwdHBfY29ubmVjdFwiLFxuICAgIFwicHB0cF9iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFBQVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBwYWNrZXRzIGlmIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgaW5zdGVhZCBvZiBxdWV1ZWluZyB0aGVtIGluIHRoZSBzb2NrZXQgcmVjZWl2ZSBxdWV1ZS4gSXQgYWxzbyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXVlIHB1cmdlIGluIHRoZSBzb2NrZXQgZGVzdHJ1Y3Rvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFRQXCIsXG4gICAgXCJORVRfSVBHUkVfREVNVVhcIixcbiAgICBcIlBQUE9YXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHB0cF9yY3ZfY29yZVwiLFxuICAgIFwicHB0cF9zb2NrX2Rlc3RydWN0XCIsXG4gICAgXCJwcHRwX3JjdlwiLFxuICAgIFwicHB0cF9jb25uZWN0XCIsXG4gICAgXCJwcHRwX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUFBUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiB0byBkcm9wIHBhY2tldHMgaWYgdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBpbnN0ZWFkIG9mIHF1ZXVlaW5nIHRoZW0gaW4gdGhlIHNvY2tldCByZWNlaXZlIHF1ZXVlLiBJdCBhbHNvIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgcXVldWUgcHVyZ2UgaW4gdGhlIHNvY2tldCBkZXN0cnVjdG9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyODo1OS4yMTQ5ODE5NjZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMDg3Mzg0Njg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NTkuMjE1NTU4Mjg2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxMDg2ODA0MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcHB0cF9yY3ZfY29yZWAgdG8gZHJvcCBwYWNrZXRzIGluc3RlYWQgb2YgcXVldWluZyB0aGVtIHRvIGBza19yZWNlaXZlX3F1ZXVlYCB3aGVuIHRoZSBzb2NrZXQgaXMgbm90IGNvbm5lY3RlZCwgYW5kIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYHNrYl9xdWV1ZV9wdXJnZWAgaW4gYHBwdHBfc29ja19kZXN0cnVjdGAuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIGxvZ2ljIGJ1ZyAobGlrZWx5IGEgbWVtb3J5IGxlYWsgb3IgaW1wcm9wZXIgcGFja2V0IGhhbmRsaW5nKSBieSByZW1vdmluZyB0aGUgcXVldWluZyBtZWNoYW5pc20gZW50aXJlbHkgZm9yIHVuY29ubmVjdGVkIFBQVFAgc29ja2V0cy4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgaW50cm9kdWNlZCwgbm8gZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGNvbXBsZXggYWxsb2NhdGlvbnMgYXJlIGFkZGVkLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEFueSBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGlzIHBhdGNoIChzdWNoIGFzIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIGttZW1sZWFrLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzBlMzJjMjc4ZDFmMzE4MmUyNjFkOTc5MzZmZDQ2OWU2OWU4N2YyYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDA4OjI4OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwdHAuYyBiL2RyaXZlcnMvbmV0L3BwcC9wcHRwLmNcbmluZGV4IGNjOGMxMDIxMjJkODAuLmE3OTdhMDYwNmY2YjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHB0cC5jXG5AQCAtMjc4LDExICsyNzgsOCBAQCBzdGF0aWMgaW50IHBwdHBfcmN2X2NvcmUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0X191OCAqcGF5bG9hZDtcbiBcdHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKmhlYWRlcjtcbiBcbi1cdGlmICghKHNrLVx1MDAzZXNrX3N0YXRlIFx1MDAyNiBQUFBPWF9DT05ORUNURUQpKSB7XG4tXHRcdGlmIChzb2NrX3F1ZXVlX3Jjdl9za2Ioc2ssIHNrYikpXG4tXHRcdFx0Z290byBkcm9wO1xuLVx0XHRyZXR1cm4gTkVUX1JYX1NVQ0NFU1M7XG4tXHR9XG4rXHRpZiAoIShzay1cdTAwM2Vza19zdGF0ZSBcdTAwMjYgUFBQT1hfQ09OTkVDVEVEKSlcbitcdFx0Z290byBkcm9wO1xuIFxuIFx0aGVhZGVyID0gKHN0cnVjdCBwcHRwX2dyZV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEpO1xuIFx0aGVhZGVyc2l6ZSAgPSBzaXplb2YoKmhlYWRlcik7XG5AQCAtNTM5LDcgKzUzNiw2IEBAIHN0YXRpYyB2b2lkIHBwdHBfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gXHRcdGRlbF9jaGFuKHBwcG94X3NrKHNrKSk7XG4gXHRcdHBwcG94X3VuYmluZF9zb2NrKHNrKTtcbiBcdH1cbi1cdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZzay1cdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcbiBcdGRzdF9yZWxlYXNlKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc2stXHUwMDNlc2tfZHN0X2NhY2hlLCAxKSk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjg6NTkuMjE1NTU5MDc2WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjA2NjMxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUFBUUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9wcHAvcHB0cC5jYC4gVGhlIGZpcnN0IGNoYW5nZSBpbiBgcHB0cF9yY3ZfY29yZWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlbW92ZXMgdGhlIHBhY2tldCBxdWV1aW5nIGlmIHRoZSBzb2NrZXQgaXNuJ3QgY29ubmVjdGVkLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCB0aGlzIGNvbmRpdGlvbmFsOiBpZiB0aGUgc29ja2V0IHdhc24ndCBpbiBhIGNvbm5lY3RlZCBzdGF0ZSwgaXQgd291bGQgKnRyeSogdG8gcXVldWUgdGhlIHJlY2VpdmVkIGBza2JgIChzb2NrZXQgYnVmZmVyKSB1c2luZyBgc29ja19xdWV1ZV9yY3Zfc2tiYCwgYW5kIGlmIHRoYXQgZmFpbGVkLCB0aGUgcGFja2V0IHdvdWxkIGJlIGRyb3BwZWQuIFRoZSBwYXRjaCBzaW1wbGlmaWVzIHRoaXM7IGlmIHRoZSBzb2NrZXQgaXNuJ3QgY29ubmVjdGVkLCB0aGUgcGFja2V0IGlzIHNpbXBseSBkcm9wcGVkLiBTdHJhaWdodGZvcndhcmQuXG5cbk5vdywgdGhlIHNlY29uZCBtb2RpZmljYXRpb24gaW4gYHBwdHBfc29ja19kZXN0cnVjdGAgaGFzIGNhdWdodCBteSBhdHRlbnRpb24uIEl0IHJlbW92ZXMgYSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSlgLiBUaGlzIGlzIHdoZXJlIEkgc3RhcnQgdG8gYXNrIFwid2h5P1wiLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHVyZ2luZyB0aGUgcmVjZWl2ZSBxdWV1ZSB3aGVuIHRoZSBzb2NrZXQgd2FzIGJlaW5nIGRlc3Ryb3llZC4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgaWYgdGhlIHNvY2tldCBpc24ndCBjb25uZWN0ZWQsIHRoZXJlIHNob3VsZG4ndCBiZSBhbnl0aGluZyBvbiB0aGUgYHNrX3JlY2VpdmVfcXVldWVgIGluIHRoZSBmaXJzdCBwbGFjZSwgb3IgaWYgc29tZXRoaW5nIGlzIG9uIHRoZXJlLCBpdCBzaG91bGRuJ3QgY2F1c2UgYSBwcm9ibGVtLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhpcyBzdXNwaWNpb24uIExvb2tpbmcgYXQgdGhlIGNvZGUgbW9yZSBjbG9zZWx5LCBpdCBkb2Vzbid0IGFwcGVhciBhcyB0aG91Z2ggdGhlcmUgaXMgYSByZWFkIG9wZXJhdGlvbiBmcm9tIGBza19yZWNlaXZlX3F1ZXVlYCBmb3IgYHBwdHBgIHNvY2tldHMuIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiByZW1vdmluZyB0aGUgcHVyZ2UgbWFrZXMgcGVyZmVjdCBzZW5zZTogaXQncyBhbiB1bm5lY2Vzc2FyeSBvcGVyYXRpb24uIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIGBwcHRwLmNgIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNTQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowNC4yNzYyMjU0OTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTQwNTEzNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2tfcmVjZWl2ZV9xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHB0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowNC40Mzc2NDMyNTZaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTYxNTc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAgUmFiYml0IEhvbGUqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gcmVjYWxpYnJhdGUgbXkgbWVudGFsIG1vZGVsIGhlcmUuIFRoZSBgc2tfcmVjZWl2ZV9xdWV1ZWAuLi4gdGhhdCdzIHBhcnQgb2YgdGhlIGNvcmUgYHN0cnVjdCBzb2NrYCwgaXNuJ3QgaXQ/IENsYXNzaWMgbmV0d29ya2luZyBzdHJ1Y3R1cmUuIEl0J3MgZWFzeSB0byBsb3NlIHRyYWNrIHdoZW4geW91J3JlIGp1bXBpbmcgYXJvdW5kIGRpZmZlcmVudCBtb2R1bGVzLiBPa2F5LCBzbyBpdCdzICp0aGVyZSouIFRoYXQgaGFzIHNvbWUgc2lnbmlmaWNhbnQgaW1wbGljYXRpb25zIGZvciBob3cgaXQncyBoYW5kbGVkIGF0IGEgbG93ZXIgbGV2ZWwsIGltcGxpY2F0aW9ucyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciBxdWV1aW5nIGJlaGF2aW9yLlxuXG5Ob3csIEknbSB0aGlua2luZywgd2hlcmUgZWxzZSBkb2VzIGBwcHRwLmNgIHRvdWNoIG9uIHRoaXM/IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgcHB0cC5jYCBmaWxlIGFuZCBzZWUgaWYgdGhpcyBxdWV1ZSBpcyB1c2VkIGluIGFueSBvdGhlciBjb250ZXh0IHRoZXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5J3JlICphY3R1YWxseSogaW50ZXJhY3Rpbmcgd2l0aCBpdCBpbiB0aGlzIHNwZWNpZmljIFBQVFAgaW1wbGVtZW50YXRpb24uIEFyZSB0aGV5IGp1c3QgdXNpbmcgaXQgaW4gYSBzdGFuZGFyZCB3YXksIG9yIGFyZSB0aGVyZSBhbnkuLi4gbGV0J3MgY2FsbCB0aGVtIFwidW5pcXVlXCIgb3BlcmF0aW9ucy4gVGhvc2UgZGV0YWlscyBjb3VsZCBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZywgb3Igb3B0aW1pemluZy4gVGltZSB0byBwdWxsIHRoYXQgY29kZSB1cCBhbmQgc2NydXRpbml6ZSBpdC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzkxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMDg6Mjk6MDcuOTY5MjYxNDE0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjAxNTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza19yZWNlaXZlX3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcG9lLmM9NTAzPXN0YXRpYyB2b2lkIHBwcG9lX2Rlc3RydWN0KHN0cnVjdCBzb2NrICpzaylcXG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDQte1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBvZS5jOjUwNTpcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNnNrLVxcdTAwM2Vza19yZWNlaXZlX3F1ZXVlKTtcXG5kcml2ZXJzL25ldC9wcHAvcHBwb2UuYy01MDYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQwODoyOTowOC4wMjEyODA2NjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIyODEwNjEwMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwcHRwLmMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvcHBwL3BwdHAuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIG1vZGlmeWluZyB0aGUgYHBwdHBfcmN2X2NvcmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgcmVtb3ZpbmcgdGhlIGJsb2NrIHRoYXQgcXVldWVzIGluY29taW5nIGBza2JgcyB0byBgc2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZWAgaWYgdGhlIHNvY2tldCBpc24ndCBjb25uZWN0ZWQuIEluc3RlYWQgb2YgcXVldWVpbmcsIGl0J3MganVzdCBkcm9wcGluZyB0aGUgYHNrYmAuIE1ha2VzIHNlbnNlLiBUaGUgbG9naWMgaXMgdGhhdCBpZiBpdCdzIG5vdCBjb25uZWN0ZWQsIHdoeSBib3RoZXI/XG5cblRoZW4sIGluIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLCBpdCdzIHJlbW92aW5nIHRoZSBjYWxsIHRvIGBza2JfcXVldWVfcHVyZ2UoXHUwMDI2c2stXHUwMDNlc2tfcmVjZWl2ZV9xdWV1ZSlgLiBSaWdodCwgYmVjYXVzZSBpZiBgcHB0cF9yY3ZfY29yZWAgaXNuJ3QgdXNpbmcgdGhlIHF1ZXVlIGFueW1vcmUsIHRoZXJlJ3Mgbm90aGluZyB0byBwdXJnZS4gSXQncyBjbGVhbnVwLlxuXG5NeSBmaXJzdCBndXQgcmVhY3Rpb24gaXMgdG8gY2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTaW5jZSB3ZSBhcmUgY2hhbmdpbmcgbG9naWMsIEkgaGF2ZSB0byBiZSBzdXJlLiBCdXQgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgZXNzZW50aWFsbHkgcHJldmVudGluZyB0aGUgcXVldWUgZnJvbSBiZWluZyB1c2VkIHdoZW4gaXQgc2hvdWxkbid0IGJlLiBJdCBmZWVscyBsaWtlIGEgZml4IHRvIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlLCBvciBhdCBsZWFzdCBhIGJ1ZyB3aGVyZSBza2JzIGdldCBxdWV1ZWQgYW5kIG5ldmVyIGhhbmRsZWQuXG5cbk5vdywgSSBuZWVkIHRvIGJlICpzdXJlKi4gSWYgYHNrYl9xdWV1ZV9wdXJnZWAgaXMgcmVtb3ZlZCBhbmQgc29tZXRoaW5nICplbHNlKiBpcyBzdGlsbCBxdWV1aW5nLCB3ZSBjb3VsZCBoYXZlIGEgbGVhay4gU28sIEkgY2hlY2tlZC4gSSBncmVwcGVkIHRoZSB3aG9sZSBgcHB0cC5jYCBmaWxlIGZvciBgc2tfcmVjZWl2ZV9xdWV1ZWAgdG8gY29uZmlybSB0aGF0IGBzb2NrX3F1ZXVlX3Jjdl9za2JgIHdhcyB0aGUgb25seSBwbGFjZSB0aGF0IGRpZCB0aGlzLiBBbmQgSSBkaWRuJ3QgZ2V0IGFueSBoaXRzLiBTbywgaXQncyBjbGVhbiBvbiB0aGF0IGZyb250LlxuXG5Eb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkPyBJdCdzIGFsbCByZW1vdmFsLCBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIGRhdGEgY29weWluZyB0byB1c2VyIHNwYWNlLCBubyBuZXcgZmllbGRzLCBpdCBvbmx5IHByZXZlbnRzIHNrYnMgYmVpbmcgcXVldWVkIGFuZCBwdXJnaW5nIHRoZSBxdWV1ZSB0aGF0IGlzbid0IGJlaW5nIHVzZWQuIEl0IHNlZW1zIGV4dHJlbWVseSB1bmxpa2VseS4gU28sIEkgZG9uJ3QgdGhpbmsgS01TQU4gaXMgbmVlZGVkLiBLQVNBTi9rbWVtbGVhayBzaG91bGQgYmUgbW9yZSB0aGFuIHN1ZmZpY2llbnQgdG8gY2F0Y2ggcG90ZW50aWFsIGlzc3VlcywgdGhvdWdoIHRoZSBjaGFuY2VzIGFyZSBsb3cuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBvbmUgbW9yZSB0aGluZzogYHNvY2tfcXVldWVfcmN2X3NrYmAuIElmIGl0IGRyb3BzIHRoZSBza2IsIHRoZSBza2IgaXMgZnJlZWQuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV4cG9zZWQuXG5cblRoZXJlZm9yZSwgTmVlZHNLTVNBTiA9IGZhbHNlLiBUaGlzIHBhdGNoIGxvb2tzIGdvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDEsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDA4OjI5OjMwLjMwMjM0NDE0M1oiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBwdHBfcmN2X2NvcmVgIHRvIGRyb3AgcGFja2V0cyBpbnN0ZWFkIG9mIHF1ZXVpbmcgdGhlbSB0byBgc2tfcmVjZWl2ZV9xdWV1ZWAgd2hlbiB0aGUgc29ja2V0IGlzIG5vdCBjb25uZWN0ZWQsIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGBza2JfcXVldWVfcHVyZ2VgIGluIGBwcHRwX3NvY2tfZGVzdHJ1Y3RgLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBsb2dpYyBidWcgKGxpa2VseSBhIG1lbW9yeSBsZWFrIG9yIGltcHJvcGVyIHBhY2tldCBoYW5kbGluZykgYnkgcmVtb3ZpbmcgdGhlIHF1ZXVpbmcgbWVjaGFuaXNtIGVudGlyZWx5IGZvciB1bmNvbm5lY3RlZCBQUFRQIHNvY2tldHMuIE5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYXJlIGludHJvZHVjZWQsIG5vIGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBjb21wbGV4IGFsbG9jYXRpb25zIGFyZSBhZGRlZC4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhpcyBwYXRjaCAoc3VjaCBhcyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBvciBrbWVtbGVhay4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwcHRwX3Jjdl9jb3JlYCB0byBkcm9wIHBhY2tldHMgaW5zdGVhZCBvZiBxdWV1aW5nIHRoZW0gdG8gYHNrX3JlY2VpdmVfcXVldWVgIHdoZW4gdGhlIHNvY2tldCBpcyBub3QgY29ubmVjdGVkLCBhbmQgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBgc2tiX3F1ZXVlX3B1cmdlYCBpbiBgcHB0cF9zb2NrX2Rlc3RydWN0YC4gVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGEgbG9naWMgYnVnIChsaWtlbHkgYSBtZW1vcnkgbGVhayBvciBpbXByb3BlciBwYWNrZXQgaGFuZGxpbmcpIGJ5IHJlbW92aW5nIHRoZSBxdWV1aW5nIG1lY2hhbmlzbSBlbnRpcmVseSBmb3IgdW5jb25uZWN0ZWQgUFBUUCBzb2NrZXRzLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnRyb2R1Y2VkLCBubyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gY29tcGxleCBhbGxvY2F0aW9ucyBhcmUgYWRkZWQuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgcGF0Y2ggKHN1Y2ggYXMgbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gb3Iga21lbWxlYWsuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow98c8x[1] Phase: Succeeded StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 08:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 08:29:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2] Phase: Succeeded StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 08:29:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-11 08:29:42 +0000 UTC FinishedAt: 2026-08-11 08:29:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow98c8x/series-workflow98c8x-convert-artifact-2697651684/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-11 08:29:52 +0000 UTC FinishedAt: 2026-08-11 08:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-11 08:29:52 +0000 UTC FinishedAt: 2026-08-11 08:46:04 +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:*55434068-7cc1-4702-a528-bc4b55baecba,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-workflow98c8x/series-workflow98c8x-convert-artifact-2697651684/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": "289d9cb5-6dae-47db-b83a-f1251f024d7d", "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-workflow98c8x/series-workflow98c8x-build-action-3421931042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-11 08:29:52 +0000 UTC FinishedAt: 2026-08-11 08:45:54 +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:*55434068-7cc1-4702-a528-bc4b55baecba,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-workflow98c8x/series-workflow98c8x-convert-artifact-2697651684/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": "289d9cb5-6dae-47db-b83a-f1251f024d7d", "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-workflow98c8x/series-workflow98c8x-build-action-3421931042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-11 08:46:04 +0000 UTC FinishedAt: 2026-08-11 08:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-11 08:46:04 +0000 UTC FinishedAt: 2026-08-11 08:46:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-11 08:46:04 +0000 UTC FinishedAt: 2026-08-11 08:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-11 08:46:04 +0000 UTC FinishedAt: 2026-08-11 08:46:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow98c8x/series-workflow98c8x-convert-artifact-3114624483/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-11 08:46:14 +0000 UTC FinishedAt: 2026-08-11 08:48:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-11 08:46:14 +0000 UTC FinishedAt: 2026-08-11 08:48:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*289d9cb5-6dae-47db-b83a-f1251f024d7d,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-workflow98c8x/series-workflow98c8x-build-action-3421931042/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-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-11 08:48:43 +0000 UTC FinishedAt: 2026-08-11 08:48:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-11 08:48:43 +0000 UTC FinishedAt: 2026-08-11 08:48:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-11 08:48:43 +0000 UTC FinishedAt: 2026-08-11 09:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-11 08:48:43 +0000 UTC FinishedAt: 2026-08-11 09:04:53 +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:*55434068-7cc1-4702-a528-bc4b55baecba,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-workflow98c8x/series-workflow98c8x-convert-artifact-3114624483/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": "58c65015-2d39-47a3-9119-e7d0da79abd7", "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-workflow98c8x/series-workflow98c8x-build-action-1203417751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-11 08:48:43 +0000 UTC FinishedAt: 2026-08-11 09:04:43 +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:*55434068-7cc1-4702-a528-bc4b55baecba,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-workflow98c8x/series-workflow98c8x-convert-artifact-3114624483/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": "58c65015-2d39-47a3-9119-e7d0da79abd7", "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-workflow98c8x/series-workflow98c8x-build-action-1203417751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-11 09:04:53 +0000 UTC FinishedAt: 2026-08-11 09:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-11 09:04:53 +0000 UTC FinishedAt: 2026-08-11 09:04:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-11 09:04:53 +0000 UTC FinishedAt: 2026-08-11 09:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-11 09:04:53 +0000 UTC FinishedAt: 2026-08-11 09:06:47 +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:*58c65015-2d39-47a3-9119-e7d0da79abd7,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-workflow98c8x/series-workflow98c8x-build-action-1203417751/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-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"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:*289d9cb5-6dae-47db-b83a-f1251f024d7d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58c65015-2d39-47a3-9119-e7d0da79abd7,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-workflow98c8x/series-workflow98c8x-build-action-3421931042/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-workflow98c8x/series-workflow98c8x-build-action-1203417751/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 09:07:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 09:07:06 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"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-workflow98c8x/series-workflow98c8x-convert-artifact-3688804860/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 09:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 09:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-11 09:06:57 +0000 UTC FinishedAt: 2026-08-11 09:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-11 09:07:18 +0000 UTC FinishedAt: 2026-08-11 12:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["pptp_rcv_core","pptp_sock_destruct","pptp_rcv","pptp_connect","pptp_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"202fef9bbbf5784487eec27581389c6fb97c350d","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPTP","NET_IPGRE_DEMUX","PPPOX"],"series_id":"f621065d-56bb-409a-a7e1-242f38cdd539","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-11 09:07:18 +0000 UTC FinishedAt: 2026-08-11 12:08:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*289d9cb5-6dae-47db-b83a-f1251f024d7d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*58c65015-2d39-47a3-9119-e7d0da79abd7,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-workflow98c8x/series-workflow98c8x-build-action-3421931042/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-workflow98c8x/series-workflow98c8x-build-action-1203417751/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-workflow98c8x/series-workflow98c8x-convert-artifact-3688804860/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,}