Name: series-workflowh6m67 Phase: Succeeded StartedAt: 2026-06-28 10:11:55 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[0] Phase: Succeeded StartedAt: 2026-06-28 10:11:55 +0000 UTC FinishedAt: 2026-06-28 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[0].run-triage Phase: Succeeded StartedAt: 2026-06-28 10:11:55 +0000 UTC FinishedAt: 2026-06-28 10:26:09 +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": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "9c16abd4-cdca-4c63-93a3-d1dbd6875ac4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_register_hw" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3JlZ2lzdGVyX2h3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmNcbmluZGV4IGY0N2RkNTg3NzBhZGI5Li5kYmE2NmRkOTY0YWYzMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tYWluLmNcbkBAIC0xNTk5LDcgJiM0MzsxNTk5LDcgQEAgaW50IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbiBcdFx0c2JhbmQgPSBrbWVtZHVwKHNiYW5kLCBzaXplb2YoKnNiYW5kKSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmICghc2JhbmQpIHtcbiBcdFx0XHRyZXN1bHQgPSAtRU5PTUVNO1xuLVx0XHRcdGdvdG8gZmFpbF9yYXRlO1xuJiM0MztcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbiBcdFx0fVxuIFxuIFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxuXCYjMzQ7LFxuQEAgLTE2NzUsNiAmIzQzOzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuICNlbmRpZlxuIFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gIGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4mIzQzOyBmYWlsX2JhbmQ6XG4gXHRydG5sX2xvY2soKTtcbiBcdHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpO1xuIFx0aWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9yZWdpc3Rlcl9odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2Agd2hlbiBga21lbWR1cGAgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0gYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBhbmQgaW5qZWN0aW5nIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWFpbi5jIGIvbmV0L21hYzgwMjExL21haW4uYwppbmRleCBmNDdkZDU4NzcwYWRiOS4uZGJhNjZkZDk2NGFmMzMgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL21haW4uYwpAQCAtMTU5OSw3ICYjNDM7MTU5OSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpCiAJCXNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpOwogCQlpZiAoIXNiYW5kKSB7CiAJCQlyZXN1bHQgPSAtRU5PTUVNOwotCQkJZ290byBmYWlsX3JhdGU7CiYjNDM7CQkJZ290byBmYWlsX2JhbmQ7CiAJCX0KIAogCQl3aXBoeV9kYmcoaHctJmd0O3dpcGh5LCAmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXG4mIzM0OywKQEAgLTE2NzUsNiAmIzQzOzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogI2VuZGlmCiAJd2lwaHlfdW5yZWdpc3Rlcihsb2NhbC0mZ3Q7aHcud2lwaHkpOwogIGZhaWxfd2lwaHlfcmVnaXN0ZXI6CiYjNDM7IGZhaWxfYmFuZDoKIAlydG5sX2xvY2soKTsKIAlyYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsKIAlpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIG1hYzgwMjExIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9tYWluLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIHRoYXQmIzM5O3MgYSBjb3JlIGZpbGUuIExldCYjMzk7cyBkaWcgaW4uIEl0JiMzOTtzIG1ha2luZyBhIHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFRoZSBrZXkgc2VlbXMgdG8gYmUgdGhlIGhhbmRsaW5nIG9mIGEgYGttZW1kdXBgIGZhaWx1cmUgcmVsYXRlZCB0byBgc2JhbmRgLiBQcmV2aW91c2x5LCBpZiBga21lbWR1cGAgZmFpbGVkLCB0aGUgY29kZSBqdW1wZWQgdG8gYGZhaWxfcmF0ZWAuIE5vdywgaXQmIzM5O3MgYmVpbmcgcmVkaXJlY3RlZCB0byBgZmFpbF9iYW5kYC4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiwgYW5kIHRoZSByZWFzb24gZm9yIHRoYXQgbWF0dGVycy4KCkFuZCB0aGVuIHRoZXJlJiMzOTtzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGZhaWxfYmFuZDpgIGxhYmVsIGltbWVkaWF0ZWx5ICpiZWZvcmUqIGBydG5sX2xvY2soKWAgYW5kIHRoZSBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgIGNhbGxzLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIGZhaWx1cmUgaGFuZGxpbmcgaXMgYmVpbmcgZXhwYW5kZWQ7IHRoZSBpbnRlbnQgbWF5IGJlIHRvIG1ha2UgdGhlIGhhbmRsaW5nIG1vcmUgc3BlY2lmaWMgdG8gYmFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBhZmZlY3RzIGxvY2tpbmcuIEl0IHdpbGwgYmUgdXNlZnVsIHRvIHVuZGVyc3RhbmQgaG93IHRvIGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGNoYW5nZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGV4aXN0aW5nIGxvY2tpbmcgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbiBsb2dpYy4KCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBjcmVhdGluZyBhIG1vcmUgcm9idXN0IGZhaWx1cmUgcGF0aCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSBgc2JhbmRgIGFsbG9jYXRpb24gZmFpbHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHdhbGtpbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGNvbnNlcXVlbmNlcyBvZiB0aGlzIOKAkyBtZW1vcnkgbGVha3MsIHJlc291cmNlIHN0YXJ2YXRpb24sIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGl0c2VsZiwgdG8gcHV0IHRoaXMgaW50byBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZhaWxfcmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21haW4uYz0xMTM0PWludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNTY0LVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxuXCYjMzQ7KTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTU2NTpcdFx0Z290byBmYWlsX3JhdGU7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTE1NjYtXHR9XG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNjgyLVx0cnRubF91bmxvY2soKTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTY4MzogZmFpbF9yYXRlOlxubmV0L21hYzgwMjExL21haW4uYy0xNjg0LVx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgZmFpbF9yYXRlYCBpc3N1ZS4gUmlnaHQsIGxpbmUgbnVtYmVycy4uLiBgZmFpbF9yYXRlYCBpcyBhdCAxNjgzLCBhbmQgYGZhaWxfYmFuZGAgaXMgYXQgMTY3NS4gVGhhdCBtYWtlcyBzZW5zZSwgdGhleSBhcmUgbGlrZWx5IHJlbGF0ZWQuIExldCYjMzk7cyBzZWUuLi4gdGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIHByb2JhYmx5IG5lYXIgYG5ldC9tYWM4MDIxMS9tYWluLmNgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSAxNjc1LiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZmFpbCByYXRlcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBtdXN0IGxpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XHRyZXN1bHQgPSByZWdpc3Rlcl9pbmV0NmFkZHJfbm90aWZpZXIoXHUwMDI2bG9jYWwtXHUwMDNlaWZhNl9ub3RpZmllcik7XG4xNjYxOlx0XHRpZiAocmVzdWx0KVxuMTY2MjpcdFx0XHRnb3RvIGZhaWxfaWZhNjtcbjE2NjM6XHQjZW5kaWZcbjE2NjQ6XHRcbjE2NjU6XHRcdHJldHVybiAwO1xuMTY2NjpcdFxuMTY2NzpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuMTY2ODpcdCBmYWlsX2lmYTY6XG4xNjY5Olx0I2lmZGVmIENPTkZJR19JTkVUXG4xNjcwOlx0XHR1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKFx1MDAyNmxvY2FsLVx1MDAzZWlmYV9ub3RpZmllcik7XG4xNjcxOlx0I2VuZGlmXG4xNjcyOlx0I2VuZGlmXG4xNjczOlx0I2lmIGRlZmluZWQoQ09ORklHX0lORVQpIHx8IGRlZmluZWQoQ09ORklHX0lQVjYpXG4xNjc0Olx0IGZhaWxfaWZhOlxuMTY3NTpcdCNlbmRpZlxuMTY3NjpcdFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4xNjc3Olx0IGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4xNjc4Olx0IGZhaWxfYmFuZDpcbjE2Nzk6XHRcdHJ0bmxfbG9jaygpO1xuMTY4MDpcdFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XG4xNjgxOlx0XHRpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpO1xuMTY4MjpcdFx0cnRubF91bmxvY2soKTtcbjE2ODM6XHQgZmFpbF9yYXRlOlxuMTY4NDpcdFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XG4xNjg1Olx0IGZhaWxfZmxvd3M6XG4xNjg2Olx0XHRpZWVlODAyMTFfbGVkX2V4aXQobG9jYWwpO1xuMTY4NzpcdFx0ZGVzdHJveV93b3JrcXVldWUobG9jYWwtXHUwMDNld29ya3F1ZXVlKTtcbjE2ODg6XHQgZmFpbF93b3JrcXVldWU6XG4xNjg5Olx0XHRrZnJlZShsb2NhbC1cdTAwM2VpbnRfc2Nhbl9yZXEpO1xuMTY5MDpcdFx0cmV0dXJuIHJlc3VsdDtcbjE2OTE6XHR9XG4xNjkyOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmVnaXN0ZXJfaHcpO1xuMTY5MzpcdFxuMTY5NDpcdHZvaWQgaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4xNjk1Olx0e1xuMTY5NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4xNjk3Olx0XG4xNjk4Olx0XHR0YXNrbGV0X2tpbGwoXHUwMDI2bG9jYWwtXHUwMDNldHhfcGVuZGluZ190YXNrbGV0KTtcbjE2OTk6XHRcdHRhc2tsZXRfa2lsbChcdTAwMjZsb2NhbC1cdTAwM2V0YXNrbGV0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXJyb3IgSGFuZGxpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgcGF0aC4gSSBzZWUgYGZhaWxfYmFuZGAgaXMgdGhlIGxhYmVsIHJpZ2h0IGJlZm9yZSB0aGUgY3JpdGljYWwgc2VjdGlvbiwgYHJ0bmxfbG9jaygpOyByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsgaWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTsgcnRubF91bmxvY2soKTtgLiBUaGlzIHNlZW1zIGxpa2UgYSBjbGVhbnVwIGJsb2NrLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUmIzM5O3MgYW5vdGhlciBmYWlsdXJlIGxhYmVsLCBgZmFpbF9yYXRlYCwgd2hpY2ggKmRvZXNuJiMzOTt0KiBleGVjdXRlIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgb3IgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgaXQgbWVhbnMgdGhlcmUmIzM5O3MgYSBkaXN0aW5jdGlvbiBpbiB3aGF0IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgYmFzZWQgb24gd2hlcmUgdGhlIGVycm9yIG9jY3Vycy4KCk5vdywgSSYjMzk7dmUgZ290IGEgc3BlY2lmaWMgZmFpbHVyZSB0byB0cmFjayBkb3duOiB0aGUgYGttZW1kdXBgIGZhaWx1cmUuIFRoZSBjb2RlIHRlbGxzIG1lIHRoYXQgdGhpcyBmYWlsdXJlIGhhcHBlbnMgKmFmdGVyKiBgcmF0ZV9jb250cm9sX2luaXRpYWxpemUobG9jYWwpYCBpcyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCwgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBmYWlsdXJlLCBhbmQgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGNsZWFudXAgaGFwcGVucy4gTGV0IG1lIGdvIGJhY2sgYW5kIHNlZSB3aGVyZSB0aGF0IGBrbWVtZHVwYCBpcyBoYXBwZW5pbmcgZXhhY3RseSwgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIGF0IHRoaXMgcG9pbnQgdG8gZ2V0IHRoaXMgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1MDpcdFx0bG9jYWwtXHUwMDNlaHcuY29uZi5mbGFncyA9IElFRUU4MDIxMV9DT05GX0lETEU7XG4xNTUxOlx0XG4xNTUyOlx0XHRpZWVlODAyMTFfbGVkX2luaXQobG9jYWwpO1xuMTU1MzpcdFxuMTU1NDpcdFx0cmVzdWx0ID0gaWVlZTgwMjExX3R4cV9zZXR1cF9mbG93cyhsb2NhbCk7XG4xNTU1Olx0XHRpZiAocmVzdWx0KVxuMTU1NjpcdFx0XHRnb3RvIGZhaWxfZmxvd3M7XG4xNTU3Olx0XG4xNTU4Olx0XHRydG5sX2xvY2soKTtcbjE1NTk6XHRcdHJlc3VsdCA9IGllZWU4MDIxMV9pbml0X3JhdGVfY3RybF9hbGcobG9jYWwsXG4xNTYwOlx0XHRcdFx0XHRcdCAgICAgIGh3LVx1MDAzZXJhdGVfY29udHJvbF9hbGdvcml0aG0pO1xuMTU2MTpcdFx0cnRubF91bmxvY2soKTtcbjE1NjI6XHRcdGlmIChyZXN1bHQgXHUwMDNjIDApIHtcbjE1NjM6XHRcdFx0d2lwaHlfZGVidWcobG9jYWwtXHUwMDNlaHcud2lwaHksXG4xNTY0Olx0XHRcdFx0ICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXG5cJiMzNDspO1xuMTU2NTpcdFx0XHRnb3RvIGZhaWxfcmF0ZTtcbjE1NjY6XHRcdH1cbjE1Njc6XHRcbjE1Njg6XHRcdGlmIChsb2NhbC1cdTAwM2VyYXRlX2N0cmwpIHtcbjE1Njk6XHRcdFx0Y2xlYXJfYml0KElFRUU4MDIxMV9IV19TVVBQT1JUU19WSFRfRVhUX05TU19CVywgaHctXHUwMDNlZmxhZ3MpO1xuMTU3MDpcdFx0XHRpZiAobG9jYWwtXHUwMDNlcmF0ZV9jdHJsLVx1MDAzZW9wcy1cdTAwM2VjYXBhIFx1MDAyNiBSQVRFX0NUUkxfQ0FQQV9WSFRfRVhUX05TU19CVylcbjE1NzE6XHRcdFx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XG4xNTcyOlx0XHR9XG4xNTczOlx0XG4xNTc0Olx0XHQvKlxuMTU3NTpcdFx0ICogSWYgdGhlIFZIVCBjYXBhYmlsaXRpZXMgZG9uJiMzOTt0IGhhdmUgSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUsXG4xNTc2Olx0XHQgKiBvciBoYXZlIGl0IHdoZW4gd2UgZG9uJiMzOTt0LCBjb3B5IHRoZSBzYmFuZCBzdHJ1Y3R1cmUgYW5kIHNldC9jbGVhciBpdC5cbjE1Nzc6XHRcdCAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgcmF0ZSBzY2FsaW5nIGFsZ29yaXRobXMgY291bGQgYmUgc3dpdGNoZWRcbjE1Nzg6XHRcdCAqIGFuZCBoYXZlIGRpZmZlcmVudCBzdXBwb3J0IHZhbHVlcy5cbjE1Nzk6XHRcdCAqIFByaW50IGEgbWVzc2FnZSBzbyB0aGF0IGluIHRoZSBjb21tb24gY2FzZSB0aGUgcmVhbGxvY2F0aW9uIGNhbiBiZVxuMTU4MDpcdFx0ICogYXZvaWRlZC5cbjE1ODE6XHRcdCAqL1xuMTU4MjpcdFx0QlVJTERfQlVHX09OKE5VTV9OTDgwMjExX0JBTkRTIFx1MDAzZSA4ICogc2l6ZW9mKGxvY2FsLVx1MDAzZXNiYW5kX2FsbG9jYXRlZCkpO1xuMTU4MzpcdFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7XG4xNTg0Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuMTU4NTpcdFx0XHRib29sIGxvY2FsX2NhcCwgaWVfY2FwO1xuMTU4NjpcdFxuMTU4NzpcdFx0XHRsb2NhbF9jYXAgPSBpZWVlODAyMTFfaHdfY2hlY2soaHcsIFNVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXKTtcbjE1ODg6XHRcbjE1ODk6XHRcdFx0c2JhbmQgPSBsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tiYW5kXTtcbjE1OTA6XHRcdFx0aWYgKCFzYmFuZCB8fCAhc2JhbmQtXHUwMDNldmh0X2NhcC52aHRfc3VwcG9ydGVkKVxuMTU5MTpcdFx0XHRcdGNvbnRpbnVlO1xuMTU5MjpcdFxuMTU5MzpcdFx0XHRpZV9jYXAgPSAhIShzYmFuZC1cdTAwM2V2aHRfY2FwLnZodF9tY3MudHhfaGlnaGVzdCBcdTAwMjZcbjE1OTQ6XHRcdFx0XHQgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUpKTtcbjE1OTU6XHRcbjE1OTY6XHRcdFx0aWYgKGxvY2FsX2NhcCA9PSBpZV9jYXApXG4xNTk3Olx0XHRcdFx0Y29udGludWU7XG4xNTk4Olx0XG4xNTk5Olx0XHRcdHNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpO1xuMTYwMDpcdFx0XHRpZiAoIXNiYW5kKSB7XG4xNjAxOlx0XHRcdFx0cmVzdWx0ID0gLUVOT01FTTtcbjE2MDI6XHRcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbjE2MDM6XHRcdFx0fVxuMTYwNDpcdFxuMTYwNTpcdFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxuXCYjMzQ7LFxuMTYwNjpcdFx0XHRcdCAgYmFuZCk7XG4xNjA3Olx0XG4xNjA4Olx0XHRcdHNiYW5kLVx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IF49XG4xNjA5Olx0XHRcdFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUpO1xuMTYxMDpcdFxuMTYxMTpcdFx0XHRsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tiYW5kXSA9IHNiYW5kO1xuMTYxMjpcdFx0XHRsb2NhbC1cdTAwM2VzYmFuZF9hbGxvY2F0ZWQgfD0gQklUKGJhbmQpO1xuMTYxMzpcdFx0fVxuMTYxNDpcdFxuMTYxNTpcdFx0LypcbjE2MTY6XHRcdCAqIG1hYzgwMjExIHN1cHBvcnRzIEVQUEtFLCBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIChSZSlBc3NvY2lhdGlvblxuMTYxNzpcdFx0ICogZnJhbWUgZW5jcnlwdGlvblxuMTYxODpcdFx0ICovXG4xNjE5Olx0XHRpZiAod2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXHUwMDNlaHcud2lwaHksXG4xNjIwOlx0XHRcdFx0XHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BU1NPQ19GUkFNRV9FTkNSWVBUSU9OKSlcbjE2MjE6XHRcdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGxvY2FsLVx1MDAzZWh3LndpcGh5LFxuMTYyMjpcdFx0XHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9FUFBLRSk7XG4xNjIzOlx0XG4xNjI0Olx0XHRyZXN1bHQgPSB3aXBoeV9yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4xNjI1Olx0XHRpZiAocmVzdWx0IFx1MDAzYyAwKVxuMTYyNjpcdFx0XHRnb3RvIGZhaWxfd2lwaHlfcmVnaXN0ZXI7XG4xNjI3Olx0XG4xNjI4Olx0XHRkZWJ1Z2ZzX2h3X2FkZChsb2NhbCk7XG4xNjI5Olx0XHRyYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMobG9jYWwpO1xuMTYzMDpcdFxuMTYzMTpcdFx0aWVlZTgwMjExX2NoZWNrX3dicmZfc3VwcG9ydChsb2NhbCk7XG4xNjMyOlx0XG4xNjMzOlx0XHRydG5sX2xvY2soKTtcbjE2MzQ6XHRcdHdpcGh5X2xvY2soaHctXHUwMDNld2lwaHkpO1xuMTYzNTpcdFxuMTYzNjpcdFx0LyogYWRkIG9uZSBkZWZhdWx0IFNUQSBpbnRlcmZhY2UgaWYgc3VwcG9ydGVkICovXG4xNjM3Olx0XHRpZiAobG9jYWwtXHUwMDNlaHcud2lwaHktXHUwMDNlaW50ZXJmYWNlX21vZGVzIFx1MDAyNiBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTikgXHUwMDI2XHUwMDI2XG4xNjM4Olx0XHQgICAgIWllZWU4MDIxMV9od19jaGVjayhodywgTk9fQVVUT19WSUYpKSB7XG4xNjM5Olx0XHRcdHN0cnVjdCB2aWZfcGFyYW1zIHBhcmFtcyA9IHswfTtcbjE2NDA6XHRcbjE2NDE6XHRcdFx0cmVzdWx0ID0gaWVlZTgwMjExX2lmX2FkZChsb2NhbCwgXCYjMzQ7d2xhbiVkXCYjMzQ7LCBORVRfTkFNRV9FTlVNLCBOVUxMLFxuMTY0MjpcdFx0XHRcdFx0XHQgIE5MODAyMTFfSUZUWVBFX1NUQVRJT04sIFx1MDAyNnBhcmFtcyk7XG4xNjQzOlx0XHRcdGlmIChyZXN1bHQpXG4xNjQ0Olx0XHRcdFx0d2lwaHlfd2Fybihsb2NhbC1cdTAwM2Vody53aXBoeSxcbjE2NDU6XHRcdFx0XHRcdCAgIFwmIzM0O0ZhaWxlZCB0byBhZGQgZGVmYXVsdCB2aXJ0dWFsIGlmYWNlXFxuXCYjMzQ7KTtcbjE2NDY6XHRcdH1cbjE2NDc6XHRcbjE2NDg6XHRcdHdpcGh5X3VubG9jayhody1cdTAwM2V3aXBoeSk7XG4xNjQ5Olx0XHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uIEJ1ZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoZSBwcm9ibGVtLiBgaWVlZTgwMjExX2luaXRfcmF0ZV9jdHJsX2FsZ2AgZ2V0cyBjYWxsZWQgYmVmb3JlIGBrbWVtZHVwYC4gSWYgYGttZW1kdXBgIGZhaWxzLCB3ZSB1c2VkIHRvIGp1bXAgdG8gYGZhaWxfcmF0ZWAsIHNraXBwaW5nIHRoZSBjcnVjaWFsIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgY2FsbC4gQnV0IGBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnYCBoYXMgYWxyZWFkeSBzZXQgdXAgdGhlIHJhdGUgY29udHJvbCBhbGdvcml0aG0sIHJpZ2h0PyBTbywgdGhlIGZhaWx1cmUgbWVhbnMgd2UmIzM5O2QgaGF2ZSBhbiB1bmluaXRpYWxpemVkIGFsZ29yaXRobSBoYW5naW5nIGFyb3VuZCDigJMgYSBjbGFzc2ljIG1lbW9yeSBsZWFrIG9yIHJlc291cmNlIGxlYWsgc2NlbmFyaW8uIFRoZSBwYXRjaCBjb3JyZWN0bHkgZml4ZXMgdGhpcyBieSByZWRpcmVjdGluZyB0byBgZmFpbF9iYW5kYCwgd2hpY2ggbm93IGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgY2xlYW51cCB3aXRoIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAuCgpIb2xkIG9uLi4uIGBmYWlsX2JhbmRgIGFsc28gY2FsbHMgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBCdXQgd2UgKmhhdmVuJiMzOTt0KiBhZGRlZCBhbnkgaW50ZXJmYWNlcyB5ZXQ7IHRoYXQgaGFwcGVucyBsYXRlciBpbiB0aGUgcHJvY2VzcyB3aXRoIGBpZWVlODAyMTFfaWZfYWRkYC4gSXMgaXQgc2FmZSB0byBjYWxsIGBpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpYCBhdCB0aGlzIHBvaW50PyBQcm9iYWJseS4gSXQgbGlrZWx5IGp1c3QgaXRlcmF0ZXMgb3ZlciBhbiBlbXB0eSBsaXN0LCB3aGljaCBzaG91bGQgYmUgaGFybWxlc3MuCgpOb3csIGlzIHRoaXMgYnVnIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0JiMzOTtzIGEgc29saWQgYnVnIGZpeCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhlIGZpeCBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIGBrbWVtZHVwYCBmYWlscywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiBzaXR1YXRpb24gZnV6emluZyBleGNlbHMgYXQgdW5jb3ZlcmluZy4gVG8gdHJpZ2dlciBpdCwgd2UgbmVlZCB0byBmb3JjZSBhIGZhaWx1cmUgaW4gYGttZW1kdXBgIGR1cmluZyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gUmVtZW1iZXIgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBjYWxsZWQgd2hlbiBhIG1hYzgwMjExIGRyaXZlciByZWdpc3RlcnMgaXRzIGhhcmR3YXJlLiBGb3J0dW5hdGVseSwgd2UgY2FuIHJlYWNoIHRoaXMgdmlhIGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBpbmRlZWQgcmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yZWdpc3Rlcl9odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyB0aGUgbWFjODAyMTFfaHdzaW0gSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiBgbWFjODAyMTFfaHdzaW1gLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHJlZ2lzdGVycyB0aGUgc2ltdWxhdGVkIGhhcmR3YXJlIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXMgaXQgYG1hYzgwMjExX2h3c2ltYCB0aGF0IGRvZXMgdGhpcywgb3IgZG9lcyBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCBtYWtlIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgPyBHb3R0YSBjbGFyaWZ5IHRoYXQuIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGNvZGUg4oCTIGxldCYjMzk7cyBvcGVuIHVwIGBtYWM4MDIxMV9od3NpbS5jYCBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGVkaXRvciBhbmQgc3RhcnQgc2xldXRoaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2h3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4ODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgbGlrZWx5IGJ5IGRldmljZSBkcml2ZXJzIHdhbnRpbmcgdG8gcmVnaXN0ZXIgYSBuZXcgODAyLjExIChXaUZpKSBkZXZpY2UuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCAqd2hvKiBpcyB1c2luZyBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGF0JiMzOTtzIGNhbGxpbmcgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgaHVnZSBhbW91bnQgb2YgaW5zaWdodCBpbnRvIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBhIG5ldyBkZXZpY2Ugb3IgbW9kdWxlIGZpdHMgaW50byB0aGUgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBjaGFuZ2UgaG93IHRoaXMgZnVuY3Rpb24gd2lsbCBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL2FkbTgyMTEuYz0xNzgwPXN0YXRpYyBpbnQgYWRtODIxMV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jLTE5MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jOjE5MTk6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmMtMTkyMC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jPTE1OTA9c3RhdGljIGludCBhcjU1MjNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYy0xNzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYzoxNzI1Olx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYy0xNzI2LVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzMzOlx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ2MD1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDY1NzpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhhci1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNjU4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NjMtXHRpZiAoIWFiLVx1MDAzZWh3X3BhcmFtcy5zdXBwb3J0c19tb25pdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDY2NDpcdFx0LyogVGhlcmUmIzM5O3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY2NS1cdFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ0NzE9c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzE1Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDcyMS1cdGlmIChpc19tb25pdG9yX2Rpc2FibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzIyOlx0XHQvKiBUaGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjYWxsaW5nIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzIzLVx0XHQgKiBhbmQgaGVyZSB3aGVyZSB0aGUgbW9uaXRvciBtb2RlIGlzIGVuYWJsZWQgZm9yIGEgbGl0dGxlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI3PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTQ0Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzE0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9ODI4PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzAtI2lmZGVmIENPTkZJR19NQUM4MDIxMV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODcxOlx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODcyLVx0cHJpdi1cdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihwcml2LVx1MDAzZWh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzctXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODc4Olx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg3OS1cdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDY9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDQ0LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDQ1Olx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNDYtXHRzYy1cdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihzYy1cdTAwM2Vodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTMtXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwNTQ6XHRlcnJvciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTUtXHRpZiAoZXJyb3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ3PWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jLTE5NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5ODA6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoYXItXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM9Mzk4PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0Ni1cdFx0XHQgKiBmaXJtd2FyZSBsb2FkaW5nIGF0dGVtcHRzIChzbyBpdCBkb2VzbiYjMzk7dCBwYXNzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM6NDQ3Olx0XHRcdCAqIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpIGFuZCB0aGVyZSBpcyBubyBpbnRlcm5hbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0OC1cdFx0XHQgKiB3b3JrcXVldWUgYXQgYWxsKS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTU1OD1zdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzNy1cdHdjbjM2eHhfaW5pdF9pZWVlODAyMTEod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjM4Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdjbi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MjI5OT1zdGF0aWMgaW50IGF0NzZfaW5pdF9uZXdfZGV2aWNlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMjM2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjIzNjE6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaD04OTg9c3RydWN0IGI0M193bCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL2I0My5oLTkwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaDo5MTA6XHQvKiBTZXQgdGhpcyBpZiB3ZSBjYWxsIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpIGFuZCBjaGVjayBpZiB3ZSBjYWxsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvYjQzLmgtOTExLVx0ICogaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoKS4gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jPTI1NDg9c3RhdGljIHZvaWQgYjQzX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMjU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MjU5NDpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTI1OTUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM9MTU2MT1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy0xNjI4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxNjI5Olx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdsLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYzMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9MTEyOT1zdGF0aWMgc3RydWN0IGJyY21zX2luZm8gKmJyY21zX2F0dGFjaChzdHJ1Y3QgYmNtYV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjExOTU6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMTE5Ni1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoxMTk3Olx0XHR3aXBoeV9lcnIod2wtXHUwMDNld2lwaHksIFwmIzM0OyVzOiBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgZmFpbGVkLCBzdGF0dXNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTExOTgtXHRcdFx0ICBcJiMzNDslZFxcblwmIzM0OywgX19mdW5jX18sIGVycik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYz0zNDg2PWlsMzk0NV9zZXR1cF9tYWMoc3RydWN0IGlsX3ByaXYgKmlsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMzUyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MzUyOTpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhpbC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jLTM1MzAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz01NzIwPWlsNDk2NV9tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGlsX3ByaXYgKmlsLCB1MzIgbWF4X3Byb2JlX2xlbmd0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTU3NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjU3NzU6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaWwtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy01Nzc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5oPTI4NzY9dm9pZCBpbDM5NDVfcnNfcmF0ZV9pbml0KHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg1LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaDoyODg2OiAqIGllZWU4MDIxMV9yZWdpc3Rlcl9od1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmgtMjg4Ny0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM9Nzg9aW50IGl3bGFnbl9tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxOTg6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE5OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oPTM3OT12b2lkIGl3bF9yc19yYXRlX2luaXQoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzg4LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM4OTogKiBpZWVlODAyMTFfcmVnaXN0ZXJfaHdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzkwLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz00ODg9aW50IGl3bF9tbGRfcmVnaXN0ZXJfaHcoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6NTA4Olx0cmV0dXJuIGllZWU4MDIxMV9yZWdpc3Rlcl9odyhtbGQtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxPWludCBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgaXdsX212bSAqbXZtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo3OTQ6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcobXZtLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzk1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDAyPXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQxMS0gKiB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uICBUaGlzIHNob3VsZCBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gY2FsbGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0MTI6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQxMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODEwOlx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgxMS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYz01NTU9c3RydWN0IGxidGZfcHJpdmF0ZSAqbGJ0Zl9hZGRfY2FyZCh2b2lkICpjYXJkLCBzdHJ1Y3QgZGV2aWNlICpkbWRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYy02MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYzo2MjA6XHRpZiAoaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jLTYyMS1cdFx0Z290byBlcnJfaW5pdF9hZGFwdGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdsOGsuYz02MTU2PXN0YXRpYyBpbnQgbXdsOGtfZmlybXdhcmVfbG9hZF9zdWNjZXNzKHN0cnVjdCBtd2w4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdsOGsuYy02MjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jOjYyNDg6XHRyYyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmMtNjI0OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NDg9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTg2LVx0aWYgKCh2b2lkICopcGh5ID09IHBoeS1cdTAwM2Vody1cdTAwM2Vwcml2KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTg3Olx0XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocGh5LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01ODgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0ND1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg2Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03ODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjI0Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jLTYyNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvcGxmeGxjL3VzYi5jPTU4MD1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYy02MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmM6NjE5Olx0ciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmMtNjIwLVx0aWYgKHIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jPTExMTc9c3RhdGljIGludCBydDJ4MDBsaWJfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jLTEyMDUtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmM6MTIwNjpcdHN0YXR1cyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhydDJ4MDBkZXYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBkZXYuYy0xMjA3LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYz0xNzMwPXN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xOTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTkzNDpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTkzNS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDQyPXN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY0MTpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTY0Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYz03Njc5PXN0YXRpYyBpbnQgcnRsOHh4eHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYy03ODY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmM6Nzg3MDpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jLTc4NzEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jPTIwNzA9aW50IHJ0bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jLTIyMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmM6MjIwOTpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmMtMjIxMC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvdXNiLmM9OTUxPWludCBydGxfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYy0xMDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jOjEwMjI6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jLTEwMjMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1NT1pbnQgcnR3X3JlZ2lzdGVyX2h3KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzI1Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM9MzMzPXZvaWQgcnR3X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozMzU6LyogY2FsbCB0aGlzIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzM2LWludCBydHdfcmVnZF9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzUwOlx0XHQvKiBTZXQgUkVHVUxBVE9SWV9TVFJJQ1RfUkVHIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM1MS1cdFx0ICogc3RhY2sgd2lsbCB3YWl0IGZvciByZWd1bGF0b3J5X2hpbnQoKSBhbmQgY29uc2lkZXIgaXRcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozNjg6LyogY2FsbCB0aGlzIGFmdGVyIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjktaW50IHJ0d19yZWdkX2hpbnQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NzA4PXN0YXRpYyBpbnQgcnR3ODlfY29yZV9yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY4Mjg6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jPTIwMjI9aW50IHJzaV9tYWM4MDIxMV9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTIxMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjIxMjc6XHRzdGF0dXMgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYy0yMTI4LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYz0zNTQ9aW50IHdmeF9wcm9iZShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYzo0NjQ6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcod2Rldi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy00NjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmM9NDE5PXN0YXRpYyBpbnQgY3cxMjAwX3JlZ2lzdGVyX2NvbW1vbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYy00MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvbWFpbi5jOjQzMzpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYy00MzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL21haW4uYz0xNDkxPXN0YXRpYyBpbnQgd2wxMjUxX3JlZ2lzdGVyX2h3KHN0cnVjdCB3bDEyNTEgKndsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmMtMTQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmM6MTUwMDpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvbWFpbi5jLTE1MDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYz02MTE5PXN0YXRpYyBpbnQgd2wxMjcxX3JlZ2lzdGVyX2h3KHN0cnVjdCB3bDEyNzEgKndsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjE3MjpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYxNzMtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jPTU1ODA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYzo2MDE5Olx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYy02MDIwLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jOjYwMjE6XHRcdHByX2RlYnVnKFwmIzM0O21hYzgwMjExX2h3c2ltOiBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgZmFpbGVkICglZClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAyMi1cdFx0ICAgICAgIGVycik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTM0OT1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTU6XHRyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzOTYtXHRpZiAocikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI5NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gdmVyaWZ5IHRoZSBiZWhhdmlvciBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB0aGFua3MgdG8gdGhlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGZ1bmN0aW9uLiBUaGF0IGNhbGwgZXhwbGljaXRseSBsZWFkcyB0byBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgd2hpY2ggZ2l2ZXMgdXMgYSBjbGVhciBlbnRyeSBwb2ludCB2aWEgbmV0bGluayBjb21tYW5kcyB0byBjcmVhdGUgYSB2aXJ0dWFsIHJhZGlvLiBUaGlzIG1lYW5zIHdlIGNhbiBkZWZpbml0ZWx5IHJlYWNoIGFuZCB0ZXN0IGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGluIGEgdmlydHVhbGl6ZWQsIGNvbnRyb2xsZWQgc2V0dXAg4oCTIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yay4KClRvIGZvY3VzIG9uIGVycm9yIHBhdGhzLCBhbmQgc3BlY2lmaWNhbGx5IHRhcmdldCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgSSBjYW4gc2VlIHdlIGNhbiBsZXZlcmFnZSBmYXVsdCBpbmplY3Rpb24sIHBhcnRpY3VsYXJseSBvbiBga21lbWR1cGAuCgpJIG5lZWQgdG8gY29uZmlybSBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBhcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB3ZSYjMzk7cmUgYWZ0ZXIsIGJ1dCBpdCBzZWVtcyB0byByZXF1aXJlIGBNQUM4MDIxMV9IV1NJTWAgdG8gYmUgZW5hYmxlZCB0byBnZW5lcmF0ZSByYWRpb3MuIE5vdyBJIHJlbWVtYmVyLi4ud2FpdCwgYE1BQzgwMjExYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgaXMgbW9yZSBvZiBhIHN1Yi1mZWF0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWd1cmF0aW9uIHJpZ2h0IGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIGFuZCBjb25maWcgb3B0aW9ucyBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5ODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBgTUFDODAyMTFgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBvbmUgaGVyZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uLCBgTUFDODAyMTFfSFdTSU1gLiBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBjb25maXJtLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHZpcnR1YWxpemVkIHdpcmVsZXNzIGVudmlyb25tZW50cy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBhcyBlZmZpY2llbnQgYW5kIGNvcnJlY3QgYXMgaXQgY2FuIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjgzCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDY3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogbWFjODAyMTFfaHdzaW0gYW5kIGllZWU4MDIxMV9yZWdpc3Rlcl9odyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIGluIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgZnVuY3Rpb24uICBUaGUgY2x1ZSB0aGF0IG1hZGUgdGhpcyBhIGdvb2QgdGFyZ2V0IGlzIHRoZSByZWZlcmVuY2UgdG8gYGttZW1kdXBgIGZhaWxpbmcuCgpSaWdodCwgc28gZmlyc3QgdGhpbmdzIGZpcnN0LCB0byB0cmlnZ2VyIHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAgaW4gdGhlIGtlcm5lbCBjb25maWcuIGBNQUM4MDIxMV9IV1NJTWAgaXMgd2hhdCBhbGxvd3MgdXMgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIHJhZGlvcyB3ZSBuZWVkIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gTG9va2luZyBhdCB0aGUgY29kZSBkaWZmLCB0aGUgb3JpZ2luYWwgaGFkIGEgYGdvdG8gZmFpbF9yYXRlYCB3aGVuIGBrbWVtZHVwYCBmYWlscywgYnV0IHRoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkIHRvIGEgYGdvdG8gZmFpbF9iYW5kYC4gVGhpcyBzdWdnZXN0cyBhIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGgsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gdGhlIHJhdGUgY29udHJvbCBub3QgYmVpbmcgZGVpbml0aWFsaXplZCB3aGVuIHRoZSBga21lbWR1cGAgYWxsb2NhdGlvbiBmYWlscy4KClNvLCB0aGUgZm9jdXMgaXMgZGVmaW5pdGl2ZWx5IG9uIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGl0JiMzOTtzIGNhbGxlZCB3aGVuIGEgbmV3IGhhcmR3YXJlIGludGVyZmFjZSBpcyByZWdpc3RlcmVkLiBJdCYjMzk7cyBub3QgYSAqaG90KiBwYXRoLCBzbyBpdCYjMzk7cyBvbmx5IGNhbGxlZCB3aGVuIGEgbmV3IHJhZGlvIGlzIGNyZWF0ZWQsIHdoaWNoIG1ha2VzIGl0IGFuIGlkZWFsIGZ1enppbmcgdGFyZ2V0LCBhcyBpdCYjMzk7cyBsZXNzIGxpa2VseSB0byBiZSBpbXBhY3RlZCBieSBvdGhlciB0aGluZ3MuIFdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2UgY2FuIHJlbGlhYmx5IHRyaWdnZXIgY2FsbHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyB0byByZWFjaCB0aGUgY29kZSB3aGVyZSB0aGUgcGF0Y2ggYXBwbGllcy4gVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjIyMDQwNTIxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjEyMDE0NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjIyMDQxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODgwNDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY3YjM3YWZjNjBkNDdkMzNkNGY0N2Y2YjY3OGVlMzNmMDBjYmExODJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmNcXG5pbmRleCBmNDdkZDU4NzcwYWRiOS4uZGJhNjZkZDk2NGFmMzMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21haW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tYWluLmNcXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgaW50IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4gXFx0XFx0c2JhbmQgPSBrbWVtZHVwKHNiYW5kLCBzaXplb2YoKnNiYW5kKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGlmICghc2JhbmQpIHtcXG4gXFx0XFx0XFx0cmVzdWx0ID0gLUVOT01FTTtcXG4tXFx0XFx0XFx0Z290byBmYWlsX3JhdGU7XFxuK1xcdFxcdFxcdGdvdG8gZmFpbF9iYW5kO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHR3aXBoeV9kYmcoaHctXFx1MDAzZXdpcGh5LCBcXFwiY29weWluZyBzYmFuZCAoYmFuZCAlZCkgZHVlIHRvIFZIVCBFWFQgTlNTIEJXIGZsYWdcXFxcblxcXCIsXFxuQEAgLTE2NzUsNiArMTY3NSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuICNlbmRpZlxcbiBcXHR3aXBoeV91bnJlZ2lzdGVyKGxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuICBmYWlsX3dpcGh5X3JlZ2lzdGVyOlxcbisgZmFpbF9iYW5kOlxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XFxuIFxcdGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjczMDIyMjQ3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxMDIxNzY2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3JlZ2lzdGVyX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWFpbi5jIGIvbmV0L21hYzgwMjExL21haW4uY1xuaW5kZXggZjQ3ZGQ1ODc3MGFkYjkuLmRiYTY2ZGQ5NjRhZjMzIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21haW4uY1xuKysrIGIvbmV0L21hYzgwMjExL21haW4uY1xuQEAgLTE1OTksNyArMTU5OSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXHRcdHNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpO1xuIFx0XHRpZiAoIXNiYW5kKSB7XG4gXHRcdFx0cmVzdWx0ID0gLUVOT01FTTtcbi1cdFx0XHRnb3RvIGZhaWxfcmF0ZTtcbitcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbiBcdFx0fVxuIFxuIFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwiY29weWluZyBzYmFuZCAoYmFuZCAlZCkgZHVlIHRvIFZIVCBFWFQgTlNTIEJXIGZsYWdcXG5cIixcbkBAIC0xNjc1LDYgKzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuICNlbmRpZlxuIFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gIGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4rIGZhaWxfYmFuZDpcbiBcdHJ0bmxfbG9jaygpO1xuIFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XG4gXHRpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MDguNzMwMjI2NzgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5NTA5NDEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9tYWluLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIHRoYXQncyBhIGNvcmUgZmlsZS4gTGV0J3MgZGlnIGluLiBJdCdzIG1ha2luZyBhIHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFRoZSBrZXkgc2VlbXMgdG8gYmUgdGhlIGhhbmRsaW5nIG9mIGEgYGttZW1kdXBgIGZhaWx1cmUgcmVsYXRlZCB0byBgc2JhbmRgLiBQcmV2aW91c2x5LCBpZiBga21lbWR1cGAgZmFpbGVkLCB0aGUgY29kZSBqdW1wZWQgdG8gYGZhaWxfcmF0ZWAuIE5vdywgaXQncyBiZWluZyByZWRpcmVjdGVkIHRvIGBmYWlsX2JhbmRgLiBUaGF0J3MgdGhlIGZpcnN0IHNpZ25pZmljYW50IGFsdGVyYXRpb24sIGFuZCB0aGUgcmVhc29uIGZvciB0aGF0IG1hdHRlcnMuXG5cbkFuZCB0aGVuIHRoZXJlJ3MgdGhlIGFkZGl0aW9uIG9mIHRoZSBgZmFpbF9iYW5kOmAgbGFiZWwgaW1tZWRpYXRlbHkgKmJlZm9yZSogYHJ0bmxfbG9jaygpYCBhbmQgdGhlIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgY2FsbHMuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZmFpbHVyZSBoYW5kbGluZyBpcyBiZWluZyBleHBhbmRlZDsgdGhlIGludGVudCBtYXkgYmUgdG8gbWFrZSB0aGUgaGFuZGxpbmcgbW9yZSBzcGVjaWZpYyB0byBiYW5kIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgbG9ja2luZy4gSXQgd2lsbCBiZSB1c2VmdWwgdG8gdW5kZXJzdGFuZCBob3cgdG8gY29ycmVjdGx5IGludGVycHJldCB0aGUgY2hhbmdlIHdpdGggcmVzcGVjdCB0byB0aGUgZXhpc3RpbmcgbG9ja2luZyBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uIGxvZ2ljLlxuXG5Fc3NlbnRpYWxseSwgdGhleSdyZSBjcmVhdGluZyBhIG1vcmUgcm9idXN0IGZhaWx1cmUgcGF0aCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSBgc2JhbmRgIGFsbG9jYXRpb24gZmFpbHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFscmVhZHkgbWVudGFsbHkgd2Fsa2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoaXMg4oCTIG1lbW9yeSBsZWFrcywgcmVzb3VyY2Ugc3RhcnZhdGlvbiwgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgaXRzZWxmLCB0byBwdXQgdGhpcyBpbnRvIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNToxMi45MjUzMjQ1NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzE5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhaWxfcmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzND1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNTY0LVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXFxuXFxcIik7XFxubmV0L21hYzgwMjExL21haW4uYzoxNTY1OlxcdFxcdGdvdG8gZmFpbF9yYXRlO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTU2Ni1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE2ODItXFx0cnRubF91bmxvY2soKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jOjE2ODM6IGZhaWxfcmF0ZTpcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE2ODQtXFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjEzLjAzMDY1MzU1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTE2MzkzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgZmFpbF9yYXRlYCBpc3N1ZS4gUmlnaHQsIGxpbmUgbnVtYmVycy4uLiBgZmFpbF9yYXRlYCBpcyBhdCAxNjgzLCBhbmQgYGZhaWxfYmFuZGAgaXMgYXQgMTY3NS4gVGhhdCBtYWtlcyBzZW5zZSwgdGhleSBhcmUgbGlrZWx5IHJlbGF0ZWQuIExldCdzIHNlZS4uLiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gaXMgcHJvYmFibHkgbmVhciBgbmV0L21hYzgwMjExL21haW4uY2AuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE2NzUuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBmYWlsIHJhdGVzLiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBtdXN0IGxpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNToyMC4xNDIyOTg0MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcdHJlc3VsdCA9IHJlZ2lzdGVyX2luZXQ2YWRkcl9ub3RpZmllcihcXHUwMDI2bG9jYWwtXFx1MDAzZWlmYTZfbm90aWZpZXIpO1xcbjE2NjE6XFx0XFx0aWYgKHJlc3VsdClcXG4xNjYyOlxcdFxcdFxcdGdvdG8gZmFpbF9pZmE2O1xcbjE2NjM6XFx0I2VuZGlmXFxuMTY2NDpcXHRcXG4xNjY1OlxcdFxcdHJldHVybiAwO1xcbjE2NjY6XFx0XFxuMTY2NzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4xNjY4OlxcdCBmYWlsX2lmYTY6XFxuMTY2OTpcXHQjaWZkZWYgQ09ORklHX0lORVRcXG4xNjcwOlxcdFxcdHVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoXFx1MDAyNmxvY2FsLVxcdTAwM2VpZmFfbm90aWZpZXIpO1xcbjE2NzE6XFx0I2VuZGlmXFxuMTY3MjpcXHQjZW5kaWZcXG4xNjczOlxcdCNpZiBkZWZpbmVkKENPTkZJR19JTkVUKSB8fCBkZWZpbmVkKENPTkZJR19JUFY2KVxcbjE2NzQ6XFx0IGZhaWxfaWZhOlxcbjE2NzU6XFx0I2VuZGlmXFxuMTY3NjpcXHRcXHR3aXBoeV91bnJlZ2lzdGVyKGxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuMTY3NzpcXHQgZmFpbF93aXBoeV9yZWdpc3RlcjpcXG4xNjc4OlxcdCBmYWlsX2JhbmQ6XFxuMTY3OTpcXHRcXHRydG5sX2xvY2soKTtcXG4xNjgwOlxcdFxcdHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpO1xcbjE2ODE6XFx0XFx0aWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTtcXG4xNjgyOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuMTY4MzpcXHQgZmFpbF9yYXRlOlxcbjE2ODQ6XFx0XFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XFxuMTY4NTpcXHQgZmFpbF9mbG93czpcXG4xNjg2OlxcdFxcdGllZWU4MDIxMV9sZWRfZXhpdChsb2NhbCk7XFxuMTY4NzpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShsb2NhbC1cXHUwMDNld29ya3F1ZXVlKTtcXG4xNjg4OlxcdCBmYWlsX3dvcmtxdWV1ZTpcXG4xNjg5OlxcdFxcdGtmcmVlKGxvY2FsLVxcdTAwM2VpbnRfc2Nhbl9yZXEpO1xcbjE2OTA6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4xNjkxOlxcdH1cXG4xNjkyOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3JlZ2lzdGVyX2h3KTtcXG4xNjkzOlxcdFxcbjE2OTQ6XFx0dm9pZCBpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4xNjk1OlxcdHtcXG4xNjk2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcbjE2OTc6XFx0XFxuMTY5ODpcXHRcXHR0YXNrbGV0X2tpbGwoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9wZW5kaW5nX3Rhc2tsZXQpO1xcbjE2OTk6XFx0XFx0dGFza2xldF9raWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNldGFza2xldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjIwLjE0MjU1MTY4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NDQyMDc4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFcnJvciBIYW5kbGluZyBGbG93KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgcGF0aC4gSSBzZWUgYGZhaWxfYmFuZGAgaXMgdGhlIGxhYmVsIHJpZ2h0IGJlZm9yZSB0aGUgY3JpdGljYWwgc2VjdGlvbiwgYHJ0bmxfbG9jaygpOyByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsgaWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTsgcnRubF91bmxvY2soKTtgLiBUaGlzIHNlZW1zIGxpa2UgYSBjbGVhbnVwIGJsb2NrLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUncyBhbm90aGVyIGZhaWx1cmUgbGFiZWwsIGBmYWlsX3JhdGVgLCB3aGljaCAqZG9lc24ndCogZXhlY3V0ZSBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgIG9yIGBpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpYC4gVGhhdCdzIGltcG9ydGFudDsgaXQgbWVhbnMgdGhlcmUncyBhIGRpc3RpbmN0aW9uIGluIHdoYXQgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cCBiYXNlZCBvbiB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzLlxuXG5Ob3csIEkndmUgZ290IGEgc3BlY2lmaWMgZmFpbHVyZSB0byB0cmFjayBkb3duOiB0aGUgYGttZW1kdXBgIGZhaWx1cmUuIFRoZSBjb2RlIHRlbGxzIG1lIHRoYXQgdGhpcyBmYWlsdXJlIGhhcHBlbnMgKmFmdGVyKiBgcmF0ZV9jb250cm9sX2luaXRpYWxpemUobG9jYWwpYCBpcyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCwgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBmYWlsdXJlLCBhbmQgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGNsZWFudXAgaGFwcGVucy4gTGV0IG1lIGdvIGJhY2sgYW5kIHNlZSB3aGVyZSB0aGF0IGBrbWVtZHVwYCBpcyBoYXBwZW5pbmcgZXhhY3RseSwgdGhhdCdzIHRoZSBuZXh0IHN0ZXAuIEknbSBnb2luZyB0byBoYXZlIHRvIGNhcmVmdWxseSBjb25zaWRlciB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGlzIHBvaW50IHRvIGdldCB0aGlzIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MjguODg2NzYzMzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU1MDpcXHRcXHRsb2NhbC1cXHUwMDNlaHcuY29uZi5mbGFncyA9IElFRUU4MDIxMV9DT05GX0lETEU7XFxuMTU1MTpcXHRcXG4xNTUyOlxcdFxcdGllZWU4MDIxMV9sZWRfaW5pdChsb2NhbCk7XFxuMTU1MzpcXHRcXG4xNTU0OlxcdFxcdHJlc3VsdCA9IGllZWU4MDIxMV90eHFfc2V0dXBfZmxvd3MobG9jYWwpO1xcbjE1NTU6XFx0XFx0aWYgKHJlc3VsdClcXG4xNTU2OlxcdFxcdFxcdGdvdG8gZmFpbF9mbG93cztcXG4xNTU3OlxcdFxcbjE1NTg6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTU1OTpcXHRcXHRyZXN1bHQgPSBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnKGxvY2FsLFxcbjE1NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgaHctXFx1MDAzZXJhdGVfY29udHJvbF9hbGdvcml0aG0pO1xcbjE1NjE6XFx0XFx0cnRubF91bmxvY2soKTtcXG4xNTYyOlxcdFxcdGlmIChyZXN1bHQgXFx1MDAzYyAwKSB7XFxuMTU2MzpcXHRcXHRcXHR3aXBoeV9kZWJ1Zyhsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTU2NDpcXHRcXHRcXHRcXHQgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFxcblxcXCIpO1xcbjE1NjU6XFx0XFx0XFx0Z290byBmYWlsX3JhdGU7XFxuMTU2NjpcXHRcXHR9XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdGlmIChsb2NhbC1cXHUwMDNlcmF0ZV9jdHJsKSB7XFxuMTU2OTpcXHRcXHRcXHRjbGVhcl9iaXQoSUVFRTgwMjExX0hXX1NVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXLCBody1cXHUwMDNlZmxhZ3MpO1xcbjE1NzA6XFx0XFx0XFx0aWYgKGxvY2FsLVxcdTAwM2VyYXRlX2N0cmwtXFx1MDAzZW9wcy1cXHUwMDNlY2FwYSBcXHUwMDI2IFJBVEVfQ1RSTF9DQVBBX1ZIVF9FWFRfTlNTX0JXKVxcbjE1NzE6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfVkhUX0VYVF9OU1NfQlcpO1xcbjE1NzI6XFx0XFx0fVxcbjE1NzM6XFx0XFxuMTU3NDpcXHRcXHQvKlxcbjE1NzU6XFx0XFx0ICogSWYgdGhlIFZIVCBjYXBhYmlsaXRpZXMgZG9uJ3QgaGF2ZSBJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSxcXG4xNTc2OlxcdFxcdCAqIG9yIGhhdmUgaXQgd2hlbiB3ZSBkb24ndCwgY29weSB0aGUgc2JhbmQgc3RydWN0dXJlIGFuZCBzZXQvY2xlYXIgaXQuXFxuMTU3NzpcXHRcXHQgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHJhdGUgc2NhbGluZyBhbGdvcml0aG1zIGNvdWxkIGJlIHN3aXRjaGVkXFxuMTU3ODpcXHRcXHQgKiBhbmQgaGF2ZSBkaWZmZXJlbnQgc3VwcG9ydCB2YWx1ZXMuXFxuMTU3OTpcXHRcXHQgKiBQcmludCBhIG1lc3NhZ2Ugc28gdGhhdCBpbiB0aGUgY29tbW9uIGNhc2UgdGhlIHJlYWxsb2NhdGlvbiBjYW4gYmVcXG4xNTgwOlxcdFxcdCAqIGF2b2lkZWQuXFxuMTU4MTpcXHRcXHQgKi9cXG4xNTgyOlxcdFxcdEJVSUxEX0JVR19PTihOVU1fTkw4MDIxMV9CQU5EUyBcXHUwMDNlIDggKiBzaXplb2YobG9jYWwtXFx1MDAzZXNiYW5kX2FsbG9jYXRlZCkpO1xcbjE1ODM6XFx0XFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kKyspIHtcXG4xNTg0OlxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbjE1ODU6XFx0XFx0XFx0Ym9vbCBsb2NhbF9jYXAsIGllX2NhcDtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0XFx0bG9jYWxfY2FwID0gaWVlZTgwMjExX2h3X2NoZWNrKGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XFxuMTU4ODpcXHRcXG4xNTg5OlxcdFxcdFxcdHNiYW5kID0gbG9jYWwtXFx1MDAzZWh3LndpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXTtcXG4xNTkwOlxcdFxcdFxcdGlmICghc2JhbmQgfHwgIXNiYW5kLVxcdTAwM2V2aHRfY2FwLnZodF9zdXBwb3J0ZWQpXFxuMTU5MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4xNTkyOlxcdFxcbjE1OTM6XFx0XFx0XFx0aWVfY2FwID0gISEoc2JhbmQtXFx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IFxcdTAwMjZcXG4xNTk0OlxcdFxcdFxcdFxcdCAgICBjcHVfdG9fbGUxNihJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSkpO1xcbjE1OTU6XFx0XFxuMTU5NjpcXHRcXHRcXHRpZiAobG9jYWxfY2FwID09IGllX2NhcClcXG4xNTk3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjE1OTg6XFx0XFxuMTU5OTpcXHRcXHRcXHRzYmFuZCA9IGttZW1kdXAoc2JhbmQsIHNpemVvZigqc2JhbmQpLCBHRlBfS0VSTkVMKTtcXG4xNjAwOlxcdFxcdFxcdGlmICghc2JhbmQpIHtcXG4xNjAxOlxcdFxcdFxcdFxcdHJlc3VsdCA9IC1FTk9NRU07XFxuMTYwMjpcXHRcXHRcXHRcXHRnb3RvIGZhaWxfYmFuZDtcXG4xNjAzOlxcdFxcdFxcdH1cXG4xNjA0OlxcdFxcbjE2MDU6XFx0XFx0XFx0d2lwaHlfZGJnKGh3LVxcdTAwM2V3aXBoeSwgXFxcImNvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxcXG5cXFwiLFxcbjE2MDY6XFx0XFx0XFx0XFx0ICBiYW5kKTtcXG4xNjA3OlxcdFxcbjE2MDg6XFx0XFx0XFx0c2JhbmQtXFx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IF49XFxuMTYwOTpcXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSk7XFxuMTYxMDpcXHRcXG4xNjExOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2Vody53aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0gPSBzYmFuZDtcXG4xNjEyOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzYmFuZF9hbGxvY2F0ZWQgfD0gQklUKGJhbmQpO1xcbjE2MTM6XFx0XFx0fVxcbjE2MTQ6XFx0XFxuMTYxNTpcXHRcXHQvKlxcbjE2MTY6XFx0XFx0ICogbWFjODAyMTEgc3VwcG9ydHMgRVBQS0UsIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgKFJlKUFzc29jaWF0aW9uXFxuMTYxNzpcXHRcXHQgKiBmcmFtZSBlbmNyeXB0aW9uXFxuMTYxODpcXHRcXHQgKi9cXG4xNjE5OlxcdFxcdGlmICh3aXBoeV9leHRfZmVhdHVyZV9pc3NldChsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTYyMDpcXHRcXHRcXHRcXHRcXHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BU1NPQ19GUkFNRV9FTkNSWVBUSU9OKSlcXG4xNjIxOlxcdFxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTYyMjpcXHRcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0VQUEtFKTtcXG4xNjIzOlxcdFxcbjE2MjQ6XFx0XFx0cmVzdWx0ID0gd2lwaHlfcmVnaXN0ZXIobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4xNjI1OlxcdFxcdGlmIChyZXN1bHQgXFx1MDAzYyAwKVxcbjE2MjY6XFx0XFx0XFx0Z290byBmYWlsX3dpcGh5X3JlZ2lzdGVyO1xcbjE2Mjc6XFx0XFxuMTYyODpcXHRcXHRkZWJ1Z2ZzX2h3X2FkZChsb2NhbCk7XFxuMTYyOTpcXHRcXHRyYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMobG9jYWwpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRpZWVlODAyMTFfY2hlY2tfd2JyZl9zdXBwb3J0KGxvY2FsKTtcXG4xNjMyOlxcdFxcbjE2MzM6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTYzNDpcXHRcXHR3aXBoeV9sb2NrKGh3LVxcdTAwM2V3aXBoeSk7XFxuMTYzNTpcXHRcXG4xNjM2OlxcdFxcdC8qIGFkZCBvbmUgZGVmYXVsdCBTVEEgaW50ZXJmYWNlIGlmIHN1cHBvcnRlZCAqL1xcbjE2Mzc6XFx0XFx0aWYgKGxvY2FsLVxcdTAwM2Vody53aXBoeS1cXHUwMDNlaW50ZXJmYWNlX21vZGVzIFxcdTAwMjYgQklUKE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIFxcdTAwMjZcXHUwMDI2XFxuMTYzODpcXHRcXHQgICAgIWllZWU4MDIxMV9od19jaGVjayhodywgTk9fQVVUT19WSUYpKSB7XFxuMTYzOTpcXHRcXHRcXHRzdHJ1Y3QgdmlmX3BhcmFtcyBwYXJhbXMgPSB7MH07XFxuMTY0MDpcXHRcXG4xNjQxOlxcdFxcdFxcdHJlc3VsdCA9IGllZWU4MDIxMV9pZl9hZGQobG9jYWwsIFxcXCJ3bGFuJWRcXFwiLCBORVRfTkFNRV9FTlVNLCBOVUxMLFxcbjE2NDI6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX0lGVFlQRV9TVEFUSU9OLCBcXHUwMDI2cGFyYW1zKTtcXG4xNjQzOlxcdFxcdFxcdGlmIChyZXN1bHQpXFxuMTY0NDpcXHRcXHRcXHRcXHR3aXBoeV93YXJuKGxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4xNjQ1OlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJGYWlsZWQgdG8gYWRkIGRlZmF1bHQgdmlydHVhbCBpZmFjZVxcXFxuXFxcIik7XFxuMTY0NjpcXHRcXHR9XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdFxcdHdpcGh5X3VubG9jayhody1cXHUwMDNld2lwaHkpO1xcbjE2NDk6XFx0XFx0cnRubF91bmxvY2soKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MjguODg3MDIzNjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc1OTg2NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBJbml0aWFsaXphdGlvbiBCdWcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhlIHByb2JsZW0uIGBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnYCBnZXRzIGNhbGxlZCBiZWZvcmUgYGttZW1kdXBgLiBJZiBga21lbWR1cGAgZmFpbHMsIHdlIHVzZWQgdG8ganVtcCB0byBgZmFpbF9yYXRlYCwgc2tpcHBpbmcgdGhlIGNydWNpYWwgYHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpYCBjYWxsLiBCdXQgYGllZWU4MDIxMV9pbml0X3JhdGVfY3RybF9hbGdgIGhhcyBhbHJlYWR5IHNldCB1cCB0aGUgcmF0ZSBjb250cm9sIGFsZ29yaXRobSwgcmlnaHQ/IFNvLCB0aGUgZmFpbHVyZSBtZWFucyB3ZSdkIGhhdmUgYW4gdW5pbml0aWFsaXplZCBhbGdvcml0aG0gaGFuZ2luZyBhcm91bmQg4oCTIGEgY2xhc3NpYyBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIHNjZW5hcmlvLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGZpeGVzIHRoaXMgYnkgcmVkaXJlY3RpbmcgdG8gYGZhaWxfYmFuZGAsIHdoaWNoIG5vdyBpbmNsdWRlcyB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgd2l0aCBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgLlxuXG5Ib2xkIG9uLi4uIGBmYWlsX2JhbmRgIGFsc28gY2FsbHMgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBCdXQgd2UgKmhhdmVuJ3QqIGFkZGVkIGFueSBpbnRlcmZhY2VzIHlldDsgdGhhdCBoYXBwZW5zIGxhdGVyIGluIHRoZSBwcm9jZXNzIHdpdGggYGllZWU4MDIxMV9pZl9hZGRgLiBJcyBpdCBzYWZlIHRvIGNhbGwgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgIGF0IHRoaXMgcG9pbnQ/IFByb2JhYmx5LiBJdCBsaWtlbHkganVzdCBpdGVyYXRlcyBvdmVyIGFuIGVtcHR5IGxpc3QsIHdoaWNoIHNob3VsZCBiZSBoYXJtbGVzcy5cblxuTm93LCBpcyB0aGlzIGJ1ZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCdzIGEgc29saWQgYnVnIGZpeCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhlIGZpeCBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIGBrbWVtZHVwYCBmYWlscywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiBzaXR1YXRpb24gZnV6emluZyBleGNlbHMgYXQgdW5jb3ZlcmluZy4gVG8gdHJpZ2dlciBpdCwgd2UgbmVlZCB0byBmb3JjZSBhIGZhaWx1cmUgaW4gYGttZW1kdXBgIGR1cmluZyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gUmVtZW1iZXIgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBjYWxsZWQgd2hlbiBhIG1hYzgwMjExIGRyaXZlciByZWdpc3RlcnMgaXRzIGhhcmR3YXJlLiBGb3J0dW5hdGVseSwgd2UgY2FuIHJlYWNoIHRoaXMgdmlhIGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBpbmRlZWQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjkxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MzUuMjYzMDE3NDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzkwNzU4MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTozNS43MDIxMDc5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjgxNzMyNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiBgbWFjODAyMTFfaHdzaW1gLiBTcGVjaWZpY2FsbHksIEknbSB0cnlpbmcgdG8gcGluIGRvd24gdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgcmVnaXN0ZXJzIHRoZSBzaW11bGF0ZWQgaGFyZHdhcmUgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJcyBpdCBgbWFjODAyMTFfaHdzaW1gIHRoYXQgZG9lcyB0aGlzLCBvciBkb2VzIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIG1ha2UgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2A/IEdvdHRhIGNsYXJpZnkgdGhhdC4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSDigJMgbGV0J3Mgb3BlbiB1cCBgbWFjODAyMTFfaHdzaW0uY2AgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVGltZSB0byBmaXJlIHVwIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IHNsZXV0aGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjU4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjM4Ljk4Mzg0NTk1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDA4Njc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTozOS4xMDE4Njk2NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NjE2NDc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIDgwMi4xMSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBsaWtlbHkgYnkgZGV2aWNlIGRyaXZlcnMgd2FudGluZyB0byByZWdpc3RlciBhIG5ldyA4MDIuMTEgKFdpRmkpIGRldmljZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0ICp3aG8qIGlzIHVzaW5nIGl0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQncyBjYWxsaW5nIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSBhIGh1Z2UgYW1vdW50IG9mIGluc2lnaHQgaW50byBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciA4MDIuMTEgbmV0d29ya2luZyBzdGFjay4gSSdsbCBuZWVkIHRvIGtub3cgdGhpcyB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBhIG5ldyBkZXZpY2Ugb3IgbW9kdWxlIGZpdHMgaW50byB0aGUgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGFueSBvZiB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZSBob3cgdGhpcyBmdW5jdGlvbiB3aWxsIG9wZXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo0Mi4yODgwMzkyMzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDE5MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcmVnaXN0ZXJfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmM9MTc4MD1zdGF0aWMgaW50IGFkbTgyMTFfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jLTE5MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL2FkbTgyMTEuYzoxOTE5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmMtMTkyMC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jPTE1OTA9c3RhdGljIGludCBhcjU1MjNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jLTE3MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYzoxNzI1OlxcdGVycm9yID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jLTE3MjYtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMzM6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMzNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDYwPXN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNjU3OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhhci1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY2My1cXHRpZiAoIWFiLVxcdTAwM2Vod19wYXJhbXMuc3VwcG9ydHNfbW9uaXRvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNjY0OlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NjUtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDQ3MT1zdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ3MTU6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzE2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MjEtXFx0aWYgKGlzX21vbml0b3JfZGlzYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzIyOlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MjMtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI3PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTQ0OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTQ1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODcwLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4NzE6XFx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg3Mi1cXHRwcml2LVxcdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihwcml2LVxcdTAwM2VodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzctXFx0LyogUmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4Nzg6XFx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzktXFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMDA2PWludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDQ0LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTA0NTpcXHQvKiBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNDYtXFx0c2MtXFx1MDAzZWxlZF9jZGV2LmRlZmF1bHRfdHJpZ2dlciA9IGllZWU4MDIxMV9jcmVhdGVfdHB0X2xlZF90cmlnZ2VyKHNjLVxcdTAwM2VodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTA1My1cXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDU0OlxcdGVycm9yID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTUtXFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ3PWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5ODA6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM9Mzk4PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMtNDQ2LVxcdFxcdFxcdCAqIGZpcm13YXJlIGxvYWRpbmcgYXR0ZW1wdHMgKHNvIGl0IGRvZXNuJ3QgcGFzc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC91c2IuYzo0NDc6XFx0XFx0XFx0ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCkgYW5kIHRoZXJlIGlzIG5vIGludGVybmFsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0OC1cXHRcXHRcXHQgKiB3b3JrcXVldWUgYXQgYWxsKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MzctXFx0d2NuMzZ4eF9pbml0X2llZWU4MDIxMSh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjM4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3Y24tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MjI5OT1zdGF0aWMgaW50IGF0NzZfaW5pdF9uZXdfZGV2aWNlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjIzNjE6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaD04OTg9c3RydWN0IGI0M193bCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvYjQzLmgtOTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaDo5MTA6XFx0LyogU2V0IHRoaXMgaWYgd2UgY2FsbCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSBhbmQgY2hlY2sgaWYgd2UgY2FsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaC05MTEtXFx0ICogaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoKS4gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM9MjU0OD1zdGF0aWMgdm9pZCBiNDNfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTI1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoyNTk0OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMjU5NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYz0xNTYxPXN0YXRpYyB2b2lkIGI0M2xlZ2FjeV9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYyOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxNjI5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9MTEyOT1zdGF0aWMgc3RydWN0IGJyY21zX2luZm8gKmJyY21zX2F0dGFjaChzdHJ1Y3QgYmNtYV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjExOTU6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk2LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6MTE5NzpcXHRcXHR3aXBoeV9lcnIod2wtXFx1MDAzZXdpcGh5LCBcXFwiJXM6IGllZWU4MDIxMV9yZWdpc3Rlcl9odyBmYWlsZWQsIHN0YXR1c1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk4LVxcdFxcdFxcdCAgXFxcIiVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM9MzQ4Nj1pbDM5NDVfc2V0dXBfbWFjKHN0cnVjdCBpbF9wcml2ICppbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMzUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jOjM1Mjk6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGlsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYy0zNTMwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmM9NTcyMD1pbDQ5NjVfbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpbF9wcml2ICppbCwgdTMyIG1heF9wcm9iZV9sZW5ndGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTU3NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzo1Nzc1OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhpbC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtNTc3Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0yODc2PXZvaWQgaWwzOTQ1X3JzX3JhdGVfaW5pdChzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg1LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmg6Mjg4NjogKiBpZWVlODAyMTFfcmVnaXN0ZXJfaHdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTk4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xOTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaD0zNzk9dm9pZCBpd2xfcnNfcmF0ZV9pbml0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzg4LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaDozODk6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaC0zOTAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NDg4PWludCBpd2xfbWxkX3JlZ2lzdGVyX2h3KHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjUwODpcXHRyZXR1cm4gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KG1sZC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxPWludCBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgaXdsX212bSAqbXZtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy03OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo3OTQ6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzk1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDAyPXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDExLSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0MTI6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00MTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODEwOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODExLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jPTU1NT1zdHJ1Y3QgbGJ0Zl9wcml2YXRlICpsYnRmX2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBkZXZpY2UgKmRtZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9tYWluLmMtNjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jOjYyMDpcXHRpZiAoaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYy02MjEtXFx0XFx0Z290byBlcnJfaW5pdF9hZGFwdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jPTYxNTY9c3RhdGljIGludCBtd2w4a19maXJtd2FyZV9sb2FkX3N1Y2Nlc3Moc3RydWN0IG13bDhrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmMtNjI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmM6NjI0ODpcXHRyYyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jLTYyNDktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NTQ4PWludCBtdDc2X3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgYm9vbCB2aHQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTg2LVxcdGlmICgodm9pZCAqKXBoeSA9PSBwaHktXFx1MDAzZWh3LVxcdTAwM2Vwcml2KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU4NzpcXHRcXHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocGh5LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU4OC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0ND1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg2OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM9NTc0PWludCBtdDc2MDF1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAxdV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYzo2MjQ6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYy02MjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYz01ODA9c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYy02MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvcGxmeGxjL3VzYi5jOjYxOTpcXHRyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmMtNjIwLVxcdGlmIChyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jPTExMTc9c3RhdGljIGludCBydDJ4MDBsaWJfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmMtMTIwNS1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jOjEyMDY6XFx0c3RhdHVzID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHJ0MngwMGRldi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmMtMTIwNy1cXHRpZiAoc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE5MzQ6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTkzNS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDQyPXN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY0MTpcXHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjQyLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jPTc2Nzk9c3RhdGljIGludCBydGw4eHh4dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmMtNzg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYzo3ODcwOlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmMtNzg3MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmM9MjA3MD1pbnQgcnRsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9wY2kuYy0yMjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9wY2kuYzoyMjA5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jLTIyMTAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jPTk1MT1pbnQgcnRsX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYy0xMDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYzoxMDIyOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jLTEwMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1NT1pbnQgcnR3X3JlZ2lzdGVyX2h3KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzI1OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjMyNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYz0zMzM9dm9pZCBydHdfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzM1Oi8qIGNhbGwgdGhpcyBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzYtaW50IHJ0d19yZWdkX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozNTA6XFx0XFx0LyogU2V0IFJFR1VMQVRPUllfU1RSSUNUX1JFRyBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzUxLVxcdFxcdCAqIHN0YWNrIHdpbGwgd2FpdCBmb3IgcmVndWxhdG9yeV9oaW50KCkgYW5kIGNvbnNpZGVyIGl0XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzY4Oi8qIGNhbGwgdGhpcyBhZnRlciBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM2OS1pbnQgcnR3X3JlZ2RfaGludChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjcwOD1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2ODI4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jPTIwMjI9aW50IHJzaV9tYWM4MDIxMV9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmMtMjEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjIxMjc6XFx0c3RhdHVzID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTIxMjgtXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTM1ND1pbnQgd2Z4X3Byb2JlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjQ2NDpcXHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcod2Rldi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTQ2NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYz00MTk9c3RhdGljIGludCBjdzEyMDBfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmMtNDMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmM6NDMzOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmMtNDM0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmM9MTQ5MT1zdGF0aWMgaW50IHdsMTI1MV9yZWdpc3Rlcl9odyhzdHJ1Y3Qgd2wxMjUxICp3bClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmMtMTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvbWFpbi5jOjE1MDA6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL21haW4uYy0xNTAxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTYxMTk9c3RhdGljIGludCB3bDEyNzFfcmVnaXN0ZXJfaHcoc3RydWN0IHdsMTI3MSAqd2wpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYxNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYzo2MTcyOlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjE3My1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jPTU1ODA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYy02MDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYzo2MDE5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jLTYwMjAtXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmM6NjAyMTpcXHRcXHRwcl9kZWJ1ZyhcXFwibWFjODAyMTFfaHdzaW06IGllZWU4MDIxMV9yZWdpc3Rlcl9odyBmYWlsZWQgKCVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAyMi1cXHRcXHQgICAgICAgZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEzNDk9c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzk1OlxcdHIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzOTYtXFx0aWYgKHIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NDIuNTA4MjM5NDgxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjAzNDQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiB2ZXJpZnkgdGhlIGJlaGF2aW9yIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLCBhbmQgaXQncyBsb29raW5nIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdGhhbmtzIHRvIHRoZSBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCBmdW5jdGlvbi4gVGhhdCBjYWxsIGV4cGxpY2l0bHkgbGVhZHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AsIHdoaWNoIGdpdmVzIHVzIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIG5ldGxpbmsgY29tbWFuZHMgdG8gY3JlYXRlIGEgdmlydHVhbCByYWRpby4gVGhpcyBtZWFucyB3ZSBjYW4gZGVmaW5pdGVseSByZWFjaCBhbmQgdGVzdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpbiBhIHZpcnR1YWxpemVkLCBjb250cm9sbGVkIHNldHVwIOKAkyB3aGljaCBpcyBpZGVhbCBmb3IgdGhpcyBraW5kIG9mIHdvcmsuXG5cblRvIGZvY3VzIG9uIGVycm9yIHBhdGhzLCBhbmQgc3BlY2lmaWNhbGx5IHRhcmdldCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgSSBjYW4gc2VlIHdlIGNhbiBsZXZlcmFnZSBmYXVsdCBpbmplY3Rpb24sIHBhcnRpY3VsYXJseSBvbiBga21lbWR1cGAuXG5cbkkgbmVlZCB0byBjb25maXJtIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGFzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIHdlJ3JlIGFmdGVyLCBidXQgaXQgc2VlbXMgdG8gcmVxdWlyZSBgTUFDODAyMTFfSFdTSU1gIHRvIGJlIGVuYWJsZWQgdG8gZ2VuZXJhdGUgcmFkaW9zLiBOb3cgSSByZW1lbWJlci4uLndhaXQsIGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgTUFDODAyMTFfSFdTSU1gIGlzIG1vcmUgb2YgYSBzdWItZmVhdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgY29uZmlndXJhdGlvbiByaWdodCBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBhbmQgY29uZmlnIG9wdGlvbnMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mjk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjQ2Ljk2ODU4ODU0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MDA5MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NDcuMDY1NTAyNjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzYxMDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBgTUFDODAyMTFgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBvbmUgaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24sIGBNQUM4MDIxMV9IV1NJTWAuIEkgc2VlbSB0byByZWNhbGwgaXQgYmVpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGZpbGUuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gY29uZmlybS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB2aXJ0dWFsaXplZCB3aXJlbGVzcyBlbnZpcm9ubWVudHMuIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgYXMgZWZmaWNpZW50IGFuZCBjb3JyZWN0IGFzIGl0IGNhbiBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5ODMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo0OS45MjkxMTc0NzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzYxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo1MC4wMjE4ODkxMzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY1NTM0OTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogbWFjODAyMTFfaHdzaW0gYW5kIGllZWU4MDIxMV9yZWdpc3Rlcl9odyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIGluIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgZnVuY3Rpb24uICBUaGUgY2x1ZSB0aGF0IG1hZGUgdGhpcyBhIGdvb2QgdGFyZ2V0IGlzIHRoZSByZWZlcmVuY2UgdG8gYGttZW1kdXBgIGZhaWxpbmcuXG5cblJpZ2h0LCBzbyBmaXJzdCB0aGluZ3MgZmlyc3QsIHRvIHRyaWdnZXIgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTUFDODAyMTFgIGFuZCBgTUFDODAyMTFfSFdTSU1gIGluIHRoZSBrZXJuZWwgY29uZmlnLiBgTUFDODAyMTFfSFdTSU1gIGlzIHdoYXQgYWxsb3dzIHVzIHRvIGNyZWF0ZSB0aGUgdmlydHVhbCByYWRpb3Mgd2UgbmVlZCB0byBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gTG9va2luZyBhdCB0aGUgY29kZSBkaWZmLCB0aGUgb3JpZ2luYWwgaGFkIGEgYGdvdG8gZmFpbF9yYXRlYCB3aGVuIGBrbWVtZHVwYCBmYWlscywgYnV0IHRoYXQncyBiZWVuIGNoYW5nZWQgdG8gYSBgZ290byBmYWlsX2JhbmRgLiBUaGlzIHN1Z2dlc3RzIGEgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgcmF0ZSBjb250cm9sIG5vdCBiZWluZyBkZWluaXRpYWxpemVkIHdoZW4gdGhlIGBrbWVtZHVwYCBhbGxvY2F0aW9uIGZhaWxzLlxuXG5TbywgdGhlIGZvY3VzIGlzIGRlZmluaXRpdmVseSBvbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCdzIGNhbGxlZCB3aGVuIGEgbmV3IGhhcmR3YXJlIGludGVyZmFjZSBpcyByZWdpc3RlcmVkLiBJdCdzIG5vdCBhICpob3QqIHBhdGgsIHNvIGl0J3Mgb25seSBjYWxsZWQgd2hlbiBhIG5ldyByYWRpbyBpcyBjcmVhdGVkLCB3aGljaCBtYWtlcyBpdCBhbiBpZGVhbCBmdXp6aW5nIHRhcmdldCwgYXMgaXQncyBsZXNzIGxpa2VseSB0byBiZSBpbXBhY3RlZCBieSBvdGhlciB0aGluZ3MuIFdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2UgY2FuIHJlbGlhYmx5IHRyaWdnZXIgY2FsbHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyB0byByZWFjaCB0aGUgY29kZSB3aGVyZSB0aGUgcGF0Y2ggYXBwbGllcy4gVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI4MywiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NTguNjc3MjQzMjY2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTQ1NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcmVnaXN0ZXJfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2Agd2hlbiBga21lbWR1cGAgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0gYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBhbmQgaW5qZWN0aW5nIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-28 10:11:55 +0000 UTC FinishedAt: 2026-06-28 10:25:59 +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": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "098e32cba334da0f3fa8cfd4e022ae7c72341400", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "9c16abd4-cdca-4c63-93a3-d1dbd6875ac4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_register_hw" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3JlZ2lzdGVyX2h3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmNcbmluZGV4IGY0N2RkNTg3NzBhZGI5Li5kYmE2NmRkOTY0YWYzMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tYWluLmNcbkBAIC0xNTk5LDcgJiM0MzsxNTk5LDcgQEAgaW50IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbiBcdFx0c2JhbmQgPSBrbWVtZHVwKHNiYW5kLCBzaXplb2YoKnNiYW5kKSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmICghc2JhbmQpIHtcbiBcdFx0XHRyZXN1bHQgPSAtRU5PTUVNO1xuLVx0XHRcdGdvdG8gZmFpbF9yYXRlO1xuJiM0MztcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbiBcdFx0fVxuIFxuIFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxuXCYjMzQ7LFxuQEAgLTE2NzUsNiAmIzQzOzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuICNlbmRpZlxuIFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gIGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4mIzQzOyBmYWlsX2JhbmQ6XG4gXHRydG5sX2xvY2soKTtcbiBcdHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpO1xuIFx0aWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9yZWdpc3Rlcl9odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2Agd2hlbiBga21lbWR1cGAgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0gYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBhbmQgaW5qZWN0aW5nIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWFpbi5jIGIvbmV0L21hYzgwMjExL21haW4uYwppbmRleCBmNDdkZDU4NzcwYWRiOS4uZGJhNjZkZDk2NGFmMzMgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL21haW4uYwpAQCAtMTU5OSw3ICYjNDM7MTU5OSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpCiAJCXNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpOwogCQlpZiAoIXNiYW5kKSB7CiAJCQlyZXN1bHQgPSAtRU5PTUVNOwotCQkJZ290byBmYWlsX3JhdGU7CiYjNDM7CQkJZ290byBmYWlsX2JhbmQ7CiAJCX0KIAogCQl3aXBoeV9kYmcoaHctJmd0O3dpcGh5LCAmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXG4mIzM0OywKQEAgLTE2NzUsNiAmIzQzOzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogI2VuZGlmCiAJd2lwaHlfdW5yZWdpc3Rlcihsb2NhbC0mZ3Q7aHcud2lwaHkpOwogIGZhaWxfd2lwaHlfcmVnaXN0ZXI6CiYjNDM7IGZhaWxfYmFuZDoKIAlydG5sX2xvY2soKTsKIAlyYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsKIAlpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIG1hYzgwMjExIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9tYWluLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIHRoYXQmIzM5O3MgYSBjb3JlIGZpbGUuIExldCYjMzk7cyBkaWcgaW4uIEl0JiMzOTtzIG1ha2luZyBhIHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFRoZSBrZXkgc2VlbXMgdG8gYmUgdGhlIGhhbmRsaW5nIG9mIGEgYGttZW1kdXBgIGZhaWx1cmUgcmVsYXRlZCB0byBgc2JhbmRgLiBQcmV2aW91c2x5LCBpZiBga21lbWR1cGAgZmFpbGVkLCB0aGUgY29kZSBqdW1wZWQgdG8gYGZhaWxfcmF0ZWAuIE5vdywgaXQmIzM5O3MgYmVpbmcgcmVkaXJlY3RlZCB0byBgZmFpbF9iYW5kYC4gVGhhdCYjMzk7cyB0aGUgZmlyc3Qgc2lnbmlmaWNhbnQgYWx0ZXJhdGlvbiwgYW5kIHRoZSByZWFzb24gZm9yIHRoYXQgbWF0dGVycy4KCkFuZCB0aGVuIHRoZXJlJiMzOTtzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGZhaWxfYmFuZDpgIGxhYmVsIGltbWVkaWF0ZWx5ICpiZWZvcmUqIGBydG5sX2xvY2soKWAgYW5kIHRoZSBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgIGNhbGxzLiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIGZhaWx1cmUgaGFuZGxpbmcgaXMgYmVpbmcgZXhwYW5kZWQ7IHRoZSBpbnRlbnQgbWF5IGJlIHRvIG1ha2UgdGhlIGhhbmRsaW5nIG1vcmUgc3BlY2lmaWMgdG8gYmFuZCBpbml0aWFsaXphdGlvbiBpc3N1ZXMuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBhZmZlY3RzIGxvY2tpbmcuIEl0IHdpbGwgYmUgdXNlZnVsIHRvIHVuZGVyc3RhbmQgaG93IHRvIGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGNoYW5nZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGV4aXN0aW5nIGxvY2tpbmcgYW5kIHJlc291cmNlIGRlYWxsb2NhdGlvbiBsb2dpYy4KCkVzc2VudGlhbGx5LCB0aGV5JiMzOTtyZSBjcmVhdGluZyBhIG1vcmUgcm9idXN0IGZhaWx1cmUgcGF0aCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSBgc2JhbmRgIGFsbG9jYXRpb24gZmFpbHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHdhbGtpbmcgdGhyb3VnaCB0aGUgcG90ZW50aWFsIGNvbnNlcXVlbmNlcyBvZiB0aGlzIOKAkyBtZW1vcnkgbGVha3MsIHJlc291cmNlIHN0YXJ2YXRpb24sIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGl0c2VsZiwgdG8gcHV0IHRoaXMgaW50byBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZhaWxfcmF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL21haW4uYz0xMTM0PWludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNTY0LVx0XHRcdCAgICBcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxuXCYjMzQ7KTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTU2NTpcdFx0Z290byBmYWlsX3JhdGU7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTE1NjYtXHR9XG4tLVxubmV0L21hYzgwMjExL21haW4uYy0xNjgyLVx0cnRubF91bmxvY2soKTtcbm5ldC9tYWM4MDIxMS9tYWluLmM6MTY4MzogZmFpbF9yYXRlOlxubmV0L21hYzgwMjExL21haW4uYy0xNjg0LVx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgZmFpbF9yYXRlYCBpc3N1ZS4gUmlnaHQsIGxpbmUgbnVtYmVycy4uLiBgZmFpbF9yYXRlYCBpcyBhdCAxNjgzLCBhbmQgYGZhaWxfYmFuZGAgaXMgYXQgMTY3NS4gVGhhdCBtYWtlcyBzZW5zZSwgdGhleSBhcmUgbGlrZWx5IHJlbGF0ZWQuIExldCYjMzk7cyBzZWUuLi4gdGhlIHJlbGV2YW50IGZ1bmN0aW9uIGlzIHByb2JhYmx5IG5lYXIgYG5ldC9tYWM4MDIxMS9tYWluLmNgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgYXJlYSBhcm91bmQgbGluZSAxNjc1LiBIb3BlZnVsbHksIHRoaXMgc2VjdGlvbiB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgZmFpbCByYXRlcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBtdXN0IGxpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XHRyZXN1bHQgPSByZWdpc3Rlcl9pbmV0NmFkZHJfbm90aWZpZXIoXHUwMDI2bG9jYWwtXHUwMDNlaWZhNl9ub3RpZmllcik7XG4xNjYxOlx0XHRpZiAocmVzdWx0KVxuMTY2MjpcdFx0XHRnb3RvIGZhaWxfaWZhNjtcbjE2NjM6XHQjZW5kaWZcbjE2NjQ6XHRcbjE2NjU6XHRcdHJldHVybiAwO1xuMTY2NjpcdFxuMTY2NzpcdCNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuMTY2ODpcdCBmYWlsX2lmYTY6XG4xNjY5Olx0I2lmZGVmIENPTkZJR19JTkVUXG4xNjcwOlx0XHR1bnJlZ2lzdGVyX2luZXRhZGRyX25vdGlmaWVyKFx1MDAyNmxvY2FsLVx1MDAzZWlmYV9ub3RpZmllcik7XG4xNjcxOlx0I2VuZGlmXG4xNjcyOlx0I2VuZGlmXG4xNjczOlx0I2lmIGRlZmluZWQoQ09ORklHX0lORVQpIHx8IGRlZmluZWQoQ09ORklHX0lQVjYpXG4xNjc0Olx0IGZhaWxfaWZhOlxuMTY3NTpcdCNlbmRpZlxuMTY3NjpcdFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4xNjc3Olx0IGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4xNjc4Olx0IGZhaWxfYmFuZDpcbjE2Nzk6XHRcdHJ0bmxfbG9jaygpO1xuMTY4MDpcdFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XG4xNjgxOlx0XHRpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpO1xuMTY4MjpcdFx0cnRubF91bmxvY2soKTtcbjE2ODM6XHQgZmFpbF9yYXRlOlxuMTY4NDpcdFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XG4xNjg1Olx0IGZhaWxfZmxvd3M6XG4xNjg2Olx0XHRpZWVlODAyMTFfbGVkX2V4aXQobG9jYWwpO1xuMTY4NzpcdFx0ZGVzdHJveV93b3JrcXVldWUobG9jYWwtXHUwMDNld29ya3F1ZXVlKTtcbjE2ODg6XHQgZmFpbF93b3JrcXVldWU6XG4xNjg5Olx0XHRrZnJlZShsb2NhbC1cdTAwM2VpbnRfc2Nhbl9yZXEpO1xuMTY5MDpcdFx0cmV0dXJuIHJlc3VsdDtcbjE2OTE6XHR9XG4xNjkyOlx0RVhQT1JUX1NZTUJPTChpZWVlODAyMTFfcmVnaXN0ZXJfaHcpO1xuMTY5MzpcdFxuMTY5NDpcdHZvaWQgaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4xNjk1Olx0e1xuMTY5NjpcdFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBod190b19sb2NhbChodyk7XG4xNjk3Olx0XG4xNjk4Olx0XHR0YXNrbGV0X2tpbGwoXHUwMDI2bG9jYWwtXHUwMDNldHhfcGVuZGluZ190YXNrbGV0KTtcbjE2OTk6XHRcdHRhc2tsZXRfa2lsbChcdTAwMjZsb2NhbC1cdTAwM2V0YXNrbGV0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTI4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRXJyb3IgSGFuZGxpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgcGF0aC4gSSBzZWUgYGZhaWxfYmFuZGAgaXMgdGhlIGxhYmVsIHJpZ2h0IGJlZm9yZSB0aGUgY3JpdGljYWwgc2VjdGlvbiwgYHJ0bmxfbG9jaygpOyByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsgaWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTsgcnRubF91bmxvY2soKTtgLiBUaGlzIHNlZW1zIGxpa2UgYSBjbGVhbnVwIGJsb2NrLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUmIzM5O3MgYW5vdGhlciBmYWlsdXJlIGxhYmVsLCBgZmFpbF9yYXRlYCwgd2hpY2ggKmRvZXNuJiMzOTt0KiBleGVjdXRlIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgb3IgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBUaGF0JiMzOTtzIGltcG9ydGFudDsgaXQgbWVhbnMgdGhlcmUmIzM5O3MgYSBkaXN0aW5jdGlvbiBpbiB3aGF0IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAgYmFzZWQgb24gd2hlcmUgdGhlIGVycm9yIG9jY3Vycy4KCk5vdywgSSYjMzk7dmUgZ290IGEgc3BlY2lmaWMgZmFpbHVyZSB0byB0cmFjayBkb3duOiB0aGUgYGttZW1kdXBgIGZhaWx1cmUuIFRoZSBjb2RlIHRlbGxzIG1lIHRoYXQgdGhpcyBmYWlsdXJlIGhhcHBlbnMgKmFmdGVyKiBgcmF0ZV9jb250cm9sX2luaXRpYWxpemUobG9jYWwpYCBpcyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCwgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBmYWlsdXJlLCBhbmQgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGNsZWFudXAgaGFwcGVucy4gTGV0IG1lIGdvIGJhY2sgYW5kIHNlZSB3aGVyZSB0aGF0IGBrbWVtZHVwYCBpcyBoYXBwZW5pbmcgZXhhY3RseSwgdGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIGF0IHRoaXMgcG9pbnQgdG8gZ2V0IHRoaXMgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU1MDpcdFx0bG9jYWwtXHUwMDNlaHcuY29uZi5mbGFncyA9IElFRUU4MDIxMV9DT05GX0lETEU7XG4xNTUxOlx0XG4xNTUyOlx0XHRpZWVlODAyMTFfbGVkX2luaXQobG9jYWwpO1xuMTU1MzpcdFxuMTU1NDpcdFx0cmVzdWx0ID0gaWVlZTgwMjExX3R4cV9zZXR1cF9mbG93cyhsb2NhbCk7XG4xNTU1Olx0XHRpZiAocmVzdWx0KVxuMTU1NjpcdFx0XHRnb3RvIGZhaWxfZmxvd3M7XG4xNTU3Olx0XG4xNTU4Olx0XHRydG5sX2xvY2soKTtcbjE1NTk6XHRcdHJlc3VsdCA9IGllZWU4MDIxMV9pbml0X3JhdGVfY3RybF9hbGcobG9jYWwsXG4xNTYwOlx0XHRcdFx0XHRcdCAgICAgIGh3LVx1MDAzZXJhdGVfY29udHJvbF9hbGdvcml0aG0pO1xuMTU2MTpcdFx0cnRubF91bmxvY2soKTtcbjE1NjI6XHRcdGlmIChyZXN1bHQgXHUwMDNjIDApIHtcbjE1NjM6XHRcdFx0d2lwaHlfZGVidWcobG9jYWwtXHUwMDNlaHcud2lwaHksXG4xNTY0Olx0XHRcdFx0ICAgIFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXG5cJiMzNDspO1xuMTU2NTpcdFx0XHRnb3RvIGZhaWxfcmF0ZTtcbjE1NjY6XHRcdH1cbjE1Njc6XHRcbjE1Njg6XHRcdGlmIChsb2NhbC1cdTAwM2VyYXRlX2N0cmwpIHtcbjE1Njk6XHRcdFx0Y2xlYXJfYml0KElFRUU4MDIxMV9IV19TVVBQT1JUU19WSFRfRVhUX05TU19CVywgaHctXHUwMDNlZmxhZ3MpO1xuMTU3MDpcdFx0XHRpZiAobG9jYWwtXHUwMDNlcmF0ZV9jdHJsLVx1MDAzZW9wcy1cdTAwM2VjYXBhIFx1MDAyNiBSQVRFX0NUUkxfQ0FQQV9WSFRfRVhUX05TU19CVylcbjE1NzE6XHRcdFx0XHRpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XG4xNTcyOlx0XHR9XG4xNTczOlx0XG4xNTc0Olx0XHQvKlxuMTU3NTpcdFx0ICogSWYgdGhlIFZIVCBjYXBhYmlsaXRpZXMgZG9uJiMzOTt0IGhhdmUgSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUsXG4xNTc2Olx0XHQgKiBvciBoYXZlIGl0IHdoZW4gd2UgZG9uJiMzOTt0LCBjb3B5IHRoZSBzYmFuZCBzdHJ1Y3R1cmUgYW5kIHNldC9jbGVhciBpdC5cbjE1Nzc6XHRcdCAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgcmF0ZSBzY2FsaW5nIGFsZ29yaXRobXMgY291bGQgYmUgc3dpdGNoZWRcbjE1Nzg6XHRcdCAqIGFuZCBoYXZlIGRpZmZlcmVudCBzdXBwb3J0IHZhbHVlcy5cbjE1Nzk6XHRcdCAqIFByaW50IGEgbWVzc2FnZSBzbyB0aGF0IGluIHRoZSBjb21tb24gY2FzZSB0aGUgcmVhbGxvY2F0aW9uIGNhbiBiZVxuMTU4MDpcdFx0ICogYXZvaWRlZC5cbjE1ODE6XHRcdCAqL1xuMTU4MjpcdFx0QlVJTERfQlVHX09OKE5VTV9OTDgwMjExX0JBTkRTIFx1MDAzZSA4ICogc2l6ZW9mKGxvY2FsLVx1MDAzZXNiYW5kX2FsbG9jYXRlZCkpO1xuMTU4MzpcdFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcdTAwM2MgTlVNX05MODAyMTFfQkFORFM7IGJhbmQmIzQzOyYjNDM7KSB7XG4xNTg0Olx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuMTU4NTpcdFx0XHRib29sIGxvY2FsX2NhcCwgaWVfY2FwO1xuMTU4NjpcdFxuMTU4NzpcdFx0XHRsb2NhbF9jYXAgPSBpZWVlODAyMTFfaHdfY2hlY2soaHcsIFNVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXKTtcbjE1ODg6XHRcbjE1ODk6XHRcdFx0c2JhbmQgPSBsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tiYW5kXTtcbjE1OTA6XHRcdFx0aWYgKCFzYmFuZCB8fCAhc2JhbmQtXHUwMDNldmh0X2NhcC52aHRfc3VwcG9ydGVkKVxuMTU5MTpcdFx0XHRcdGNvbnRpbnVlO1xuMTU5MjpcdFxuMTU5MzpcdFx0XHRpZV9jYXAgPSAhIShzYmFuZC1cdTAwM2V2aHRfY2FwLnZodF9tY3MudHhfaGlnaGVzdCBcdTAwMjZcbjE1OTQ6XHRcdFx0XHQgICAgY3B1X3RvX2xlMTYoSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUpKTtcbjE1OTU6XHRcbjE1OTY6XHRcdFx0aWYgKGxvY2FsX2NhcCA9PSBpZV9jYXApXG4xNTk3Olx0XHRcdFx0Y29udGludWU7XG4xNTk4Olx0XG4xNTk5Olx0XHRcdHNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpO1xuMTYwMDpcdFx0XHRpZiAoIXNiYW5kKSB7XG4xNjAxOlx0XHRcdFx0cmVzdWx0ID0gLUVOT01FTTtcbjE2MDI6XHRcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbjE2MDM6XHRcdFx0fVxuMTYwNDpcdFxuMTYwNTpcdFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwmIzM0O2NvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxuXCYjMzQ7LFxuMTYwNjpcdFx0XHRcdCAgYmFuZCk7XG4xNjA3Olx0XG4xNjA4Olx0XHRcdHNiYW5kLVx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IF49XG4xNjA5Olx0XHRcdFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX1ZIVF9FWFRfTlNTX0JXX0NBUEFCTEUpO1xuMTYxMDpcdFxuMTYxMTpcdFx0XHRsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tiYW5kXSA9IHNiYW5kO1xuMTYxMjpcdFx0XHRsb2NhbC1cdTAwM2VzYmFuZF9hbGxvY2F0ZWQgfD0gQklUKGJhbmQpO1xuMTYxMzpcdFx0fVxuMTYxNDpcdFxuMTYxNTpcdFx0LypcbjE2MTY6XHRcdCAqIG1hYzgwMjExIHN1cHBvcnRzIEVQUEtFLCBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIChSZSlBc3NvY2lhdGlvblxuMTYxNzpcdFx0ICogZnJhbWUgZW5jcnlwdGlvblxuMTYxODpcdFx0ICovXG4xNjE5Olx0XHRpZiAod2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQobG9jYWwtXHUwMDNlaHcud2lwaHksXG4xNjIwOlx0XHRcdFx0XHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BU1NPQ19GUkFNRV9FTkNSWVBUSU9OKSlcbjE2MjE6XHRcdFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGxvY2FsLVx1MDAzZWh3LndpcGh5LFxuMTYyMjpcdFx0XHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9FUFBLRSk7XG4xNjIzOlx0XG4xNjI0Olx0XHRyZXN1bHQgPSB3aXBoeV9yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4xNjI1Olx0XHRpZiAocmVzdWx0IFx1MDAzYyAwKVxuMTYyNjpcdFx0XHRnb3RvIGZhaWxfd2lwaHlfcmVnaXN0ZXI7XG4xNjI3Olx0XG4xNjI4Olx0XHRkZWJ1Z2ZzX2h3X2FkZChsb2NhbCk7XG4xNjI5Olx0XHRyYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMobG9jYWwpO1xuMTYzMDpcdFxuMTYzMTpcdFx0aWVlZTgwMjExX2NoZWNrX3dicmZfc3VwcG9ydChsb2NhbCk7XG4xNjMyOlx0XG4xNjMzOlx0XHRydG5sX2xvY2soKTtcbjE2MzQ6XHRcdHdpcGh5X2xvY2soaHctXHUwMDNld2lwaHkpO1xuMTYzNTpcdFxuMTYzNjpcdFx0LyogYWRkIG9uZSBkZWZhdWx0IFNUQSBpbnRlcmZhY2UgaWYgc3VwcG9ydGVkICovXG4xNjM3Olx0XHRpZiAobG9jYWwtXHUwMDNlaHcud2lwaHktXHUwMDNlaW50ZXJmYWNlX21vZGVzIFx1MDAyNiBCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTikgXHUwMDI2XHUwMDI2XG4xNjM4Olx0XHQgICAgIWllZWU4MDIxMV9od19jaGVjayhodywgTk9fQVVUT19WSUYpKSB7XG4xNjM5Olx0XHRcdHN0cnVjdCB2aWZfcGFyYW1zIHBhcmFtcyA9IHswfTtcbjE2NDA6XHRcbjE2NDE6XHRcdFx0cmVzdWx0ID0gaWVlZTgwMjExX2lmX2FkZChsb2NhbCwgXCYjMzQ7d2xhbiVkXCYjMzQ7LCBORVRfTkFNRV9FTlVNLCBOVUxMLFxuMTY0MjpcdFx0XHRcdFx0XHQgIE5MODAyMTFfSUZUWVBFX1NUQVRJT04sIFx1MDAyNnBhcmFtcyk7XG4xNjQzOlx0XHRcdGlmIChyZXN1bHQpXG4xNjQ0Olx0XHRcdFx0d2lwaHlfd2Fybihsb2NhbC1cdTAwM2Vody53aXBoeSxcbjE2NDU6XHRcdFx0XHRcdCAgIFwmIzM0O0ZhaWxlZCB0byBhZGQgZGVmYXVsdCB2aXJ0dWFsIGlmYWNlXFxuXCYjMzQ7KTtcbjE2NDY6XHRcdH1cbjE2NDc6XHRcbjE2NDg6XHRcdHdpcGh5X3VubG9jayhody1cdTAwM2V3aXBoeSk7XG4xNjQ5Olx0XHRydG5sX3VubG9jaygpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAzOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIEluaXRpYWxpemF0aW9uIEJ1ZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoZSBwcm9ibGVtLiBgaWVlZTgwMjExX2luaXRfcmF0ZV9jdHJsX2FsZ2AgZ2V0cyBjYWxsZWQgYmVmb3JlIGBrbWVtZHVwYC4gSWYgYGttZW1kdXBgIGZhaWxzLCB3ZSB1c2VkIHRvIGp1bXAgdG8gYGZhaWxfcmF0ZWAsIHNraXBwaW5nIHRoZSBjcnVjaWFsIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgY2FsbC4gQnV0IGBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnYCBoYXMgYWxyZWFkeSBzZXQgdXAgdGhlIHJhdGUgY29udHJvbCBhbGdvcml0aG0sIHJpZ2h0PyBTbywgdGhlIGZhaWx1cmUgbWVhbnMgd2UmIzM5O2QgaGF2ZSBhbiB1bmluaXRpYWxpemVkIGFsZ29yaXRobSBoYW5naW5nIGFyb3VuZCDigJMgYSBjbGFzc2ljIG1lbW9yeSBsZWFrIG9yIHJlc291cmNlIGxlYWsgc2NlbmFyaW8uIFRoZSBwYXRjaCBjb3JyZWN0bHkgZml4ZXMgdGhpcyBieSByZWRpcmVjdGluZyB0byBgZmFpbF9iYW5kYCwgd2hpY2ggbm93IGluY2x1ZGVzIHRoZSBuZWNlc3NhcnkgY2xlYW51cCB3aXRoIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAuCgpIb2xkIG9uLi4uIGBmYWlsX2JhbmRgIGFsc28gY2FsbHMgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBCdXQgd2UgKmhhdmVuJiMzOTt0KiBhZGRlZCBhbnkgaW50ZXJmYWNlcyB5ZXQ7IHRoYXQgaGFwcGVucyBsYXRlciBpbiB0aGUgcHJvY2VzcyB3aXRoIGBpZWVlODAyMTFfaWZfYWRkYC4gSXMgaXQgc2FmZSB0byBjYWxsIGBpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpYCBhdCB0aGlzIHBvaW50PyBQcm9iYWJseS4gSXQgbGlrZWx5IGp1c3QgaXRlcmF0ZXMgb3ZlciBhbiBlbXB0eSBsaXN0LCB3aGljaCBzaG91bGQgYmUgaGFybWxlc3MuCgpOb3csIGlzIHRoaXMgYnVnIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0JiMzOTtzIGEgc29saWQgYnVnIGZpeCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhlIGZpeCBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIGBrbWVtZHVwYCBmYWlscywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiBzaXR1YXRpb24gZnV6emluZyBleGNlbHMgYXQgdW5jb3ZlcmluZy4gVG8gdHJpZ2dlciBpdCwgd2UgbmVlZCB0byBmb3JjZSBhIGZhaWx1cmUgaW4gYGttZW1kdXBgIGR1cmluZyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gUmVtZW1iZXIgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBjYWxsZWQgd2hlbiBhIG1hYzgwMjExIGRyaXZlciByZWdpc3RlcnMgaXRzIGhhcmR3YXJlLiBGb3J0dW5hdGVseSwgd2UgY2FuIHJlYWNoIHRoaXMgdmlhIGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBpbmRlZWQgcmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9yZWdpc3Rlcl9odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTg2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyB0aGUgbWFjODAyMTFfaHdzaW0gSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiBgbWFjODAyMTFfaHdzaW1gLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdHJ5aW5nIHRvIHBpbiBkb3duIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHJlZ2lzdGVycyB0aGUgc2ltdWxhdGVkIGhhcmR3YXJlIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXMgaXQgYG1hYzgwMjExX2h3c2ltYCB0aGF0IGRvZXMgdGhpcywgb3IgZG9lcyBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCBtYWtlIHRoZSBjYWxsIHRvIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgPyBHb3R0YSBjbGFyaWZ5IHRoYXQuIFRoZSBvYnZpb3VzIG5leHQgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIGNvZGUg4oCTIGxldCYjMzk7cyBvcGVuIHVwIGBtYWM4MDIxMV9od3NpbS5jYCBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaW1lIHRvIGZpcmUgdXAgdGhlIGVkaXRvciBhbmQgc3RhcnQgc2xldXRoaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2h3JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4ODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgbGlrZWx5IGJ5IGRldmljZSBkcml2ZXJzIHdhbnRpbmcgdG8gcmVnaXN0ZXIgYSBuZXcgODAyLjExIChXaUZpKSBkZXZpY2UuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCAqd2hvKiBpcyB1c2luZyBpdC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGF0JiMzOTtzIGNhbGxpbmcgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxlcnMgd2lsbCBnaXZlIG1lIGEgaHVnZSBhbW91bnQgb2YgaW5zaWdodCBpbnRvIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBhIG5ldyBkZXZpY2Ugb3IgbW9kdWxlIGZpdHMgaW50byB0aGUgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBhbnkgb2YgdGhlIGRlcGVuZGVuY2llcyBjaGFuZ2UgaG93IHRoaXMgZnVuY3Rpb24gd2lsbCBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL2FkbTgyMTEuYz0xNzgwPXN0YXRpYyBpbnQgYWRtODIxMV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jLTE5MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jOjE5MTk6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmMtMTkyMC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jPTE1OTA9c3RhdGljIGludCBhcjU1MjNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYy0xNzI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYzoxNzI1Olx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYy0xNzI2LVx0aWYgKGVycm9yKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05OTcxPWludCBhdGgxMGtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjEwMzMzOlx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtMTAzMzQtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYz0xMDQ2MD1zdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNjU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDY1NzpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhhci1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTEwNjU4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NjMtXHRpZiAoIWFiLVx1MDAzZWh3X3BhcmFtcy5zdXBwb3J0c19tb25pdG9yKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzoxMDY2NDpcdFx0LyogVGhlcmUmIzM5O3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY2NS1cdFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9MTQ0NzE9c3RhdGljIGludCBhdGgxMmtfbWFjX2h3X3JlZ2lzdGVyKHN0cnVjdCBhdGgxMmtfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzE1Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MTYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNDcyMS1cdGlmIChpc19tb25pdG9yX2Rpc2FibGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzIyOlx0XHQvKiBUaGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjYWxsaW5nIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzIzLVx0XHQgKiBhbmQgaGVyZSB3aGVyZSB0aGUgbW9uaXRvciBtb2RlIGlzIGVuYWJsZWQgZm9yIGEgbGl0dGxlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI3PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTQ0Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMtMzE0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9ODI4PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzAtI2lmZGVmIENPTkZJR19NQUM4MDIxMV9MRURTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODcxOlx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODcyLVx0cHJpdi1cdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihwcml2LVx1MDAzZWh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzctXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODc4Olx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg3OS1cdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTEwMDY9aW50IGF0aDlrX2luaXRfZGV2aWNlKHUxNiBkZXZpZCwgc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDQ0LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDQ1Olx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNDYtXHRzYy1cdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihzYy1cdTAwM2Vodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTMtXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjEwNTQ6XHRlcnJvciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTUtXHRpZiAoZXJyb3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ3PWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jLTE5NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5ODA6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoYXItXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM9Mzk4PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0Ni1cdFx0XHQgKiBmaXJtd2FyZSBsb2FkaW5nIGF0dGVtcHRzIChzbyBpdCBkb2VzbiYjMzk7dCBwYXNzXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM6NDQ3Olx0XHRcdCAqIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpIGFuZCB0aGVyZSBpcyBubyBpbnRlcm5hbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0OC1cdFx0XHQgKiB3b3JrcXVldWUgYXQgYWxsKS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTU1OD1zdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzNy1cdHdjbjM2eHhfaW5pdF9pZWVlODAyMTEod2NuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjM4Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdjbi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MjI5OT1zdGF0aWMgaW50IGF0NzZfaW5pdF9uZXdfZGV2aWNlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmMtMjM2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjIzNjE6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaD04OTg9c3RydWN0IGI0M193bCB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL2I0My5oLTkwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaDo5MTA6XHQvKiBTZXQgdGhpcyBpZiB3ZSBjYWxsIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpIGFuZCBjaGVjayBpZiB3ZSBjYWxsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvYjQzLmgtOTExLVx0ICogaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoKS4gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jPTI1NDg9c3RhdGljIHZvaWQgYjQzX3JlcXVlc3RfZmlybXdhcmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMjU5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM6MjU5NDpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTI1OTUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmM9MTU2MT1zdGF0aWMgdm9pZCBiNDNsZWdhY3lfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYy0xNjI4LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxNjI5Olx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdsLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYzMC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9MTEyOT1zdGF0aWMgc3RydWN0IGJyY21zX2luZm8gKmJyY21zX2F0dGFjaChzdHJ1Y3QgYmNtYV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjExOTU6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmMtMTE5Ni1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYzoxMTk3Olx0XHR3aXBoeV9lcnIod2wtXHUwMDNld2lwaHksIFwmIzM0OyVzOiBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgZmFpbGVkLCBzdGF0dXNcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jLTExOTgtXHRcdFx0ICBcJiMzNDslZFxcblwmIzM0OywgX19mdW5jX18sIGVycik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYz0zNDg2PWlsMzk0NV9zZXR1cF9tYWMoc3RydWN0IGlsX3ByaXYgKmlsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMzUyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM6MzUyOTpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhpbC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jLTM1MzAtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYz01NzIwPWlsNDk2NV9tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGlsX3ByaXYgKmlsLCB1MzIgbWF4X3Byb2JlX2xlbmd0aClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTU3NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jOjU3NzU6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaWwtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYy01Nzc2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L2NvbW1vbi5oPTI4NzY9dm9pZCBpbDM5NDVfcnNfcmF0ZV9pbml0KHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg1LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaDoyODg2OiAqIGllZWU4MDIxMV9yZWdpc3Rlcl9od1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmgtMjg4Ny0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM9Nzg9aW50IGl3bGFnbl9tYWNfc2V0dXBfcmVnaXN0ZXIoc3RydWN0IGl3bF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYzoxOTg6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jLTE5OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oPTM3OT12b2lkIGl3bF9yc19yYXRlX2luaXQoc3RydWN0IGl3bF9wcml2ICpwcml2LCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzg4LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM4OTogKiBpZWVlODAyMTFfcmVnaXN0ZXJfaHdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzkwLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYz00ODg9aW50IGl3bF9tbGRfcmVnaXN0ZXJfaHcoc3RydWN0IGl3bF9tbGQgKm1sZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM6NTA4Olx0cmV0dXJuIGllZWU4MDIxMV9yZWdpc3Rlcl9odyhtbGQtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvbWFjODAyMTEuYy01MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxPWludCBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgaXdsX212bSAqbXZtKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo3OTQ6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcobXZtLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzk1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDAyPXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQxMS0gKiB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uICBUaGlzIHNob3VsZCBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gY2FsbGluZ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0MTI6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTQxMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODEwOlx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlcnNpbC9wNTQvbWFpbi5jLTgxMS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYz01NTU9c3RydWN0IGxidGZfcHJpdmF0ZSAqbGJ0Zl9hZGRfY2FyZCh2b2lkICpjYXJkLCBzdHJ1Y3QgZGV2aWNlICpkbWRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYy02MTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYzo2MjA6XHRpZiAoaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jLTYyMS1cdFx0Z290byBlcnJfaW5pdF9hZGFwdGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdsOGsuYz02MTU2PXN0YXRpYyBpbnQgbXdsOGtfZmlybXdhcmVfbG9hZF9zdWNjZXNzKHN0cnVjdCBtd2w4a19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdsOGsuYy02MjQ3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jOjYyNDg6XHRyYyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmMtNjI0OS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYz01NDg9aW50IG10NzZfcmVnaXN0ZXJfcGh5KHN0cnVjdCBtdDc2X3BoeSAqcGh5LCBib29sIHZodCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTg2LVx0aWYgKCh2b2lkICopcGh5ID09IHBoeS1cdTAwM2Vody1cdTAwM2Vwcml2KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6NTg3Olx0XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocGh5LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy01ODgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0ND1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg2Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYy03ODctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jPTU3ND1pbnQgbXQ3NjAxdV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzYwMXVfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmMtNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM6NjI0Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jLTYyNS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvcGxmeGxjL3VzYi5jPTU4MD1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYy02MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmM6NjE5Olx0ciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmMtNjIwLVx0aWYgKHIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jPTExMTc9c3RhdGljIGludCBydDJ4MDBsaWJfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jLTEyMDUtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmM6MTIwNjpcdHN0YXR1cyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhydDJ4MDBkZXYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9ydDJ4MDBkZXYuYy0xMjA3LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYz0xNzMwPXN0YXRpYyBpbnQgcnRsODE4MF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xOTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM6MTkzNDpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTkzNS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDQyPXN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjQwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY0MTpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmMtMTY0Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYz03Njc5PXN0YXRpYyBpbnQgcnRsOHh4eHVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYy03ODY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmM6Nzg3MDpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jLTc4NzEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jPTIwNzA9aW50IHJ0bF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jLTIyMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmM6MjIwOTpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmMtMjIxMC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvdXNiLmM9OTUxPWludCBydGxfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYy0xMDIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jOjEwMjI6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jLTEwMjMtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1NT1pbnQgcnR3X3JlZ2lzdGVyX2h3KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzI1Olx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvbWFpbi5jLTIzMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM9MzMzPXZvaWQgcnR3X3JlZ2Rfbm90aWZpZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHJlZ3VsYXRvcnlfcmVxdWVzdCAqcmVxdWVzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozMzU6LyogY2FsbCB0aGlzIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzM2LWludCBydHdfcmVnZF9pbml0KHN0cnVjdCBydHdfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzUwOlx0XHQvKiBTZXQgUkVHVUxBVE9SWV9TVFJJQ1RfUkVHIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM1MS1cdFx0ICogc3RhY2sgd2lsbCB3YWl0IGZvciByZWd1bGF0b3J5X2hpbnQoKSBhbmQgY29uc2lkZXIgaXRcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozNjg6LyogY2FsbCB0aGlzIGFmdGVyIGllZWU4MDIxMV9yZWdpc3Rlcl9odygpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjktaW50IHJ0d19yZWdkX2hpbnQoc3RydWN0IHJ0d19kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NzA4PXN0YXRpYyBpbnQgcnR3ODlfY29yZV9yZWdpc3Rlcl9odyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY4Mjg6XHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jPTIwMjI9aW50IHJzaV9tYWM4MDIxMV9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTIxMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjIxMjc6XHRzdGF0dXMgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYy0yMTI4LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYz0zNTQ9aW50IHdmeF9wcm9iZShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy00NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYzo0NjQ6XHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcod2Rldi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy00NjUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmM9NDE5PXN0YXRpYyBpbnQgY3cxMjAwX3JlZ2lzdGVyX2NvbW1vbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYy00MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zdC9jdzEyMDAvbWFpbi5jOjQzMzpcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYy00MzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL21haW4uYz0xNDkxPXN0YXRpYyBpbnQgd2wxMjUxX3JlZ2lzdGVyX2h3KHN0cnVjdCB3bDEyNTEgKndsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmMtMTQ5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmM6MTUwMDpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvbWFpbi5jLTE1MDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYz02MTE5PXN0YXRpYyBpbnQgd2wxMjcxX3JlZ2lzdGVyX2h3KHN0cnVjdCB3bDEyNzEgKndsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjE3MjpcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYxNzMtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jPTU1ODA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYzo2MDE5Olx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYy02MDIwLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jOjYwMjE6XHRcdHByX2RlYnVnKFwmIzM0O21hYzgwMjExX2h3c2ltOiBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgZmFpbGVkICglZClcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAyMi1cdFx0ICAgICAgIGVycik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTM0OT1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTU6XHRyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzOTYtXHRpZiAocikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI5NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSBjYW4gdmVyaWZ5IHRoZSBiZWhhdmlvciBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCB0aGFua3MgdG8gdGhlIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIGZ1bmN0aW9uLiBUaGF0IGNhbGwgZXhwbGljaXRseSBsZWFkcyB0byBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgd2hpY2ggZ2l2ZXMgdXMgYSBjbGVhciBlbnRyeSBwb2ludCB2aWEgbmV0bGluayBjb21tYW5kcyB0byBjcmVhdGUgYSB2aXJ0dWFsIHJhZGlvLiBUaGlzIG1lYW5zIHdlIGNhbiBkZWZpbml0ZWx5IHJlYWNoIGFuZCB0ZXN0IGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGluIGEgdmlydHVhbGl6ZWQsIGNvbnRyb2xsZWQgc2V0dXAg4oCTIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yay4KClRvIGZvY3VzIG9uIGVycm9yIHBhdGhzLCBhbmQgc3BlY2lmaWNhbGx5IHRhcmdldCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgSSBjYW4gc2VlIHdlIGNhbiBsZXZlcmFnZSBmYXVsdCBpbmplY3Rpb24sIHBhcnRpY3VsYXJseSBvbiBga21lbWR1cGAuCgpJIG5lZWQgdG8gY29uZmlybSBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBhcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB3ZSYjMzk7cmUgYWZ0ZXIsIGJ1dCBpdCBzZWVtcyB0byByZXF1aXJlIGBNQUM4MDIxMV9IV1NJTWAgdG8gYmUgZW5hYmxlZCB0byBnZW5lcmF0ZSByYWRpb3MuIE5vdyBJIHJlbWVtYmVyLi4ud2FpdCwgYE1BQzgwMjExYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIGBNQUM4MDIxMV9IV1NJTWAgaXMgbW9yZSBvZiBhIHN1Yi1mZWF0dXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWd1cmF0aW9uIHJpZ2h0IGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgZXhhY3QgZGVwZW5kZW5jaWVzIGFuZCBjb25maWcgb3B0aW9ucyBiZWZvcmUgcHJvY2VlZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjggMTA6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5ODMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgV2lyZWxlc3MgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBgTUFDODAyMTFgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBvbmUgaGVyZS4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uLCBgTUFDODAyMTFfSFdTSU1gLiBJIHNlZW0gdG8gcmVjYWxsIGl0IGJlaW5nIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayB0byBjb25maXJtLiBBbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHZpcnR1YWxpemVkIHdpcmVsZXNzIGVudmlyb25tZW50cy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgcHJvY2VzcyBpcyBhcyBlZmZpY2llbnQgYW5kIGNvcnJlY3QgYXMgaXQgY2FuIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI4IDEwOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjgzCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDY3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogbWFjODAyMTFfaHdzaW0gYW5kIGllZWU4MDIxMV9yZWdpc3Rlcl9odyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIGluIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgZnVuY3Rpb24uICBUaGUgY2x1ZSB0aGF0IG1hZGUgdGhpcyBhIGdvb2QgdGFyZ2V0IGlzIHRoZSByZWZlcmVuY2UgdG8gYGttZW1kdXBgIGZhaWxpbmcuCgpSaWdodCwgc28gZmlyc3QgdGhpbmdzIGZpcnN0LCB0byB0cmlnZ2VyIHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAgaW4gdGhlIGtlcm5lbCBjb25maWcuIGBNQUM4MDIxMV9IV1NJTWAgaXMgd2hhdCBhbGxvd3MgdXMgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIHJhZGlvcyB3ZSBuZWVkIHRvIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gTG9va2luZyBhdCB0aGUgY29kZSBkaWZmLCB0aGUgb3JpZ2luYWwgaGFkIGEgYGdvdG8gZmFpbF9yYXRlYCB3aGVuIGBrbWVtZHVwYCBmYWlscywgYnV0IHRoYXQmIzM5O3MgYmVlbiBjaGFuZ2VkIHRvIGEgYGdvdG8gZmFpbF9iYW5kYC4gVGhpcyBzdWdnZXN0cyBhIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGgsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gdGhlIHJhdGUgY29udHJvbCBub3QgYmVpbmcgZGVpbml0aWFsaXplZCB3aGVuIHRoZSBga21lbWR1cGAgYWxsb2NhdGlvbiBmYWlscy4KClNvLCB0aGUgZm9jdXMgaXMgZGVmaW5pdGl2ZWx5IG9uIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGl0JiMzOTtzIGNhbGxlZCB3aGVuIGEgbmV3IGhhcmR3YXJlIGludGVyZmFjZSBpcyByZWdpc3RlcmVkLiBJdCYjMzk7cyBub3QgYSAqaG90KiBwYXRoLCBzbyBpdCYjMzk7cyBvbmx5IGNhbGxlZCB3aGVuIGEgbmV3IHJhZGlvIGlzIGNyZWF0ZWQsIHdoaWNoIG1ha2VzIGl0IGFuIGlkZWFsIGZ1enppbmcgdGFyZ2V0LCBhcyBpdCYjMzk7cyBsZXNzIGxpa2VseSB0byBiZSBpbXBhY3RlZCBieSBvdGhlciB0aGluZ3MuIFdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2UgY2FuIHJlbGlhYmx5IHRyaWdnZXIgY2FsbHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyB0byByZWFjaCB0aGUgY29kZSB3aGVyZSB0aGUgcGF0Y2ggYXBwbGllcy4gVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOCAxMDoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcmVnaXN0ZXJfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjIyMDQwNTIxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNjEyMDE0NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjIyMDQxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODgwNDUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY3YjM3YWZjNjBkNDdkMzNkNGY0N2Y2YjY3OGVlMzNmMDBjYmExODJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21haW4uYyBiL25ldC9tYWM4MDIxMS9tYWluLmNcXG5pbmRleCBmNDdkZDU4NzcwYWRiOS4uZGJhNjZkZDk2NGFmMzMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21haW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tYWluLmNcXG5AQCAtMTU5OSw3ICsxNTk5LDcgQEAgaW50IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4gXFx0XFx0c2JhbmQgPSBrbWVtZHVwKHNiYW5kLCBzaXplb2YoKnNiYW5kKSwgR0ZQX0tFUk5FTCk7XFxuIFxcdFxcdGlmICghc2JhbmQpIHtcXG4gXFx0XFx0XFx0cmVzdWx0ID0gLUVOT01FTTtcXG4tXFx0XFx0XFx0Z290byBmYWlsX3JhdGU7XFxuK1xcdFxcdFxcdGdvdG8gZmFpbF9iYW5kO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHR3aXBoeV9kYmcoaHctXFx1MDAzZXdpcGh5LCBcXFwiY29weWluZyBzYmFuZCAoYmFuZCAlZCkgZHVlIHRvIFZIVCBFWFQgTlNTIEJXIGZsYWdcXFxcblxcXCIsXFxuQEAgLTE2NzUsNiArMTY3NSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuICNlbmRpZlxcbiBcXHR3aXBoeV91bnJlZ2lzdGVyKGxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuICBmYWlsX3dpcGh5X3JlZ2lzdGVyOlxcbisgZmFpbF9iYW5kOlxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XFxuIFxcdGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjA4LjczMDIyMjQ3MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAxMDIxNzY2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3JlZ2lzdGVyX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIHdoZW4gYGttZW1kdXBgIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIHZpcnR1YWwgcmFkaW9zIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmN2IzN2FmYzYwZDQ3ZDMzZDRmNDdmNmI2NzhlZTMzZjAwY2JhMTgyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjggMTA6MjU6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWFpbi5jIGIvbmV0L21hYzgwMjExL21haW4uY1xuaW5kZXggZjQ3ZGQ1ODc3MGFkYjkuLmRiYTY2ZGQ5NjRhZjMzIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21haW4uY1xuKysrIGIvbmV0L21hYzgwMjExL21haW4uY1xuQEAgLTE1OTksNyArMTU5OSw3IEBAIGludCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4gXHRcdHNiYW5kID0ga21lbWR1cChzYmFuZCwgc2l6ZW9mKCpzYmFuZCksIEdGUF9LRVJORUwpO1xuIFx0XHRpZiAoIXNiYW5kKSB7XG4gXHRcdFx0cmVzdWx0ID0gLUVOT01FTTtcbi1cdFx0XHRnb3RvIGZhaWxfcmF0ZTtcbitcdFx0XHRnb3RvIGZhaWxfYmFuZDtcbiBcdFx0fVxuIFxuIFx0XHR3aXBoeV9kYmcoaHctXHUwMDNld2lwaHksIFwiY29weWluZyBzYmFuZCAoYmFuZCAlZCkgZHVlIHRvIFZIVCBFWFQgTlNTIEJXIGZsYWdcXG5cIixcbkBAIC0xNjc1LDYgKzE2NzUsNyBAQCBpbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuICNlbmRpZlxuIFx0d2lwaHlfdW5yZWdpc3Rlcihsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gIGZhaWxfd2lwaHlfcmVnaXN0ZXI6XG4rIGZhaWxfYmFuZDpcbiBcdHJ0bmxfbG9jaygpO1xuIFx0cmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbCk7XG4gXHRpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MDguNzMwMjI2NzgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5NTA5NDEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBtYWM4MDIxMSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9tYWluLmNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24g4oCTIHRoYXQncyBhIGNvcmUgZmlsZS4gTGV0J3MgZGlnIGluLiBJdCdzIG1ha2luZyBhIHNwZWNpZmljIGNoYW5nZSB3aXRoaW4gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AuIFRoZSBrZXkgc2VlbXMgdG8gYmUgdGhlIGhhbmRsaW5nIG9mIGEgYGttZW1kdXBgIGZhaWx1cmUgcmVsYXRlZCB0byBgc2JhbmRgLiBQcmV2aW91c2x5LCBpZiBga21lbWR1cGAgZmFpbGVkLCB0aGUgY29kZSBqdW1wZWQgdG8gYGZhaWxfcmF0ZWAuIE5vdywgaXQncyBiZWluZyByZWRpcmVjdGVkIHRvIGBmYWlsX2JhbmRgLiBUaGF0J3MgdGhlIGZpcnN0IHNpZ25pZmljYW50IGFsdGVyYXRpb24sIGFuZCB0aGUgcmVhc29uIGZvciB0aGF0IG1hdHRlcnMuXG5cbkFuZCB0aGVuIHRoZXJlJ3MgdGhlIGFkZGl0aW9uIG9mIHRoZSBgZmFpbF9iYW5kOmAgbGFiZWwgaW1tZWRpYXRlbHkgKmJlZm9yZSogYHJ0bmxfbG9jaygpYCBhbmQgdGhlIGByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKWAgY2FsbHMuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGUgZmFpbHVyZSBoYW5kbGluZyBpcyBiZWluZyBleHBhbmRlZDsgdGhlIGludGVudCBtYXkgYmUgdG8gbWFrZSB0aGUgaGFuZGxpbmcgbW9yZSBzcGVjaWZpYyB0byBiYW5kIGluaXRpYWxpemF0aW9uIGlzc3Vlcy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGFmZmVjdHMgbG9ja2luZy4gSXQgd2lsbCBiZSB1c2VmdWwgdG8gdW5kZXJzdGFuZCBob3cgdG8gY29ycmVjdGx5IGludGVycHJldCB0aGUgY2hhbmdlIHdpdGggcmVzcGVjdCB0byB0aGUgZXhpc3RpbmcgbG9ja2luZyBhbmQgcmVzb3VyY2UgZGVhbGxvY2F0aW9uIGxvZ2ljLlxuXG5Fc3NlbnRpYWxseSwgdGhleSdyZSBjcmVhdGluZyBhIG1vcmUgcm9idXN0IGZhaWx1cmUgcGF0aCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZSBgc2JhbmRgIGFsbG9jYXRpb24gZmFpbHMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIGFscmVhZHkgbWVudGFsbHkgd2Fsa2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoaXMg4oCTIG1lbW9yeSBsZWFrcywgcmVzb3VyY2Ugc3RhcnZhdGlvbiwgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24uIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgaXRzZWxmLCB0byBwdXQgdGhpcyBpbnRvIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNToxMi45MjUzMjQ1NDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MzE5NDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZhaWxfcmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tYWluLmM9MTEzND1pbnQgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0xNTY0LVxcdFxcdFxcdCAgICBcXFwiRmFpbGVkIHRvIGluaXRpYWxpemUgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXFxuXFxcIik7XFxubmV0L21hYzgwMjExL21haW4uYzoxNTY1OlxcdFxcdGdvdG8gZmFpbF9yYXRlO1xcbm5ldC9tYWM4MDIxMS9tYWluLmMtMTU2Ni1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE2ODItXFx0cnRubF91bmxvY2soKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jOjE2ODM6IGZhaWxfcmF0ZTpcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTE2ODQtXFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjEzLjAzMDY1MzU1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTE2MzkzOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBgZmFpbF9yYXRlYCBpc3N1ZS4gUmlnaHQsIGxpbmUgbnVtYmVycy4uLiBgZmFpbF9yYXRlYCBpcyBhdCAxNjgzLCBhbmQgYGZhaWxfYmFuZGAgaXMgYXQgMTY3NS4gVGhhdCBtYWtlcyBzZW5zZSwgdGhleSBhcmUgbGlrZWx5IHJlbGF0ZWQuIExldCdzIHNlZS4uLiB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gaXMgcHJvYmFibHkgbmVhciBgbmV0L21hYzgwMjExL21haW4uY2AuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE2NzUuIEhvcGVmdWxseSwgdGhpcyBzZWN0aW9uIHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoZSBmYWlsIHJhdGVzLiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyBpbiB0aGVyZS4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBtdXN0IGxpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2ODIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNToyMC4xNDIyOTg0MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDk1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcdHJlc3VsdCA9IHJlZ2lzdGVyX2luZXQ2YWRkcl9ub3RpZmllcihcXHUwMDI2bG9jYWwtXFx1MDAzZWlmYTZfbm90aWZpZXIpO1xcbjE2NjE6XFx0XFx0aWYgKHJlc3VsdClcXG4xNjYyOlxcdFxcdFxcdGdvdG8gZmFpbF9pZmE2O1xcbjE2NjM6XFx0I2VuZGlmXFxuMTY2NDpcXHRcXG4xNjY1OlxcdFxcdHJldHVybiAwO1xcbjE2NjY6XFx0XFxuMTY2NzpcXHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcXG4xNjY4OlxcdCBmYWlsX2lmYTY6XFxuMTY2OTpcXHQjaWZkZWYgQ09ORklHX0lORVRcXG4xNjcwOlxcdFxcdHVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoXFx1MDAyNmxvY2FsLVxcdTAwM2VpZmFfbm90aWZpZXIpO1xcbjE2NzE6XFx0I2VuZGlmXFxuMTY3MjpcXHQjZW5kaWZcXG4xNjczOlxcdCNpZiBkZWZpbmVkKENPTkZJR19JTkVUKSB8fCBkZWZpbmVkKENPTkZJR19JUFY2KVxcbjE2NzQ6XFx0IGZhaWxfaWZhOlxcbjE2NzU6XFx0I2VuZGlmXFxuMTY3NjpcXHRcXHR3aXBoeV91bnJlZ2lzdGVyKGxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuMTY3NzpcXHQgZmFpbF93aXBoeV9yZWdpc3RlcjpcXG4xNjc4OlxcdCBmYWlsX2JhbmQ6XFxuMTY3OTpcXHRcXHRydG5sX2xvY2soKTtcXG4xNjgwOlxcdFxcdHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpO1xcbjE2ODE6XFx0XFx0aWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTtcXG4xNjgyOlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuMTY4MzpcXHQgZmFpbF9yYXRlOlxcbjE2ODQ6XFx0XFx0aWVlZTgwMjExX3R4cV90ZWFyZG93bl9mbG93cyhsb2NhbCk7XFxuMTY4NTpcXHQgZmFpbF9mbG93czpcXG4xNjg2OlxcdFxcdGllZWU4MDIxMV9sZWRfZXhpdChsb2NhbCk7XFxuMTY4NzpcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShsb2NhbC1cXHUwMDNld29ya3F1ZXVlKTtcXG4xNjg4OlxcdCBmYWlsX3dvcmtxdWV1ZTpcXG4xNjg5OlxcdFxcdGtmcmVlKGxvY2FsLVxcdTAwM2VpbnRfc2Nhbl9yZXEpO1xcbjE2OTA6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4xNjkxOlxcdH1cXG4xNjkyOlxcdEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3JlZ2lzdGVyX2h3KTtcXG4xNjkzOlxcdFxcbjE2OTQ6XFx0dm9pZCBpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4xNjk1OlxcdHtcXG4xNjk2OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9jYWwoaHcpO1xcbjE2OTc6XFx0XFxuMTY5ODpcXHRcXHR0YXNrbGV0X2tpbGwoXFx1MDAyNmxvY2FsLVxcdTAwM2V0eF9wZW5kaW5nX3Rhc2tsZXQpO1xcbjE2OTk6XFx0XFx0dGFza2xldF9raWxsKFxcdTAwMjZsb2NhbC1cXHUwMDNldGFza2xldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjIwLjE0MjU1MTY4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3NDQyMDc4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBFcnJvciBIYW5kbGluZyBGbG93KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXJyb3IgcGF0aC4gSSBzZWUgYGZhaWxfYmFuZGAgaXMgdGhlIGxhYmVsIHJpZ2h0IGJlZm9yZSB0aGUgY3JpdGljYWwgc2VjdGlvbiwgYHJ0bmxfbG9jaygpOyByYXRlX2NvbnRyb2xfZGVpbml0aWFsaXplKGxvY2FsKTsgaWVlZTgwMjExX3JlbW92ZV9pbnRlcmZhY2VzKGxvY2FsKTsgcnRubF91bmxvY2soKTtgLiBUaGlzIHNlZW1zIGxpa2UgYSBjbGVhbnVwIGJsb2NrLiBUaGVuIEkgcmVtZW1iZXIgdGhlcmUncyBhbm90aGVyIGZhaWx1cmUgbGFiZWwsIGBmYWlsX3JhdGVgLCB3aGljaCAqZG9lc24ndCogZXhlY3V0ZSBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgIG9yIGBpZWVlODAyMTFfcmVtb3ZlX2ludGVyZmFjZXMobG9jYWwpYC4gVGhhdCdzIGltcG9ydGFudDsgaXQgbWVhbnMgdGhlcmUncyBhIGRpc3RpbmN0aW9uIGluIHdoYXQgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cCBiYXNlZCBvbiB3aGVyZSB0aGUgZXJyb3Igb2NjdXJzLlxuXG5Ob3csIEkndmUgZ290IGEgc3BlY2lmaWMgZmFpbHVyZSB0byB0cmFjayBkb3duOiB0aGUgYGttZW1kdXBgIGZhaWx1cmUuIFRoZSBjb2RlIHRlbGxzIG1lIHRoYXQgdGhpcyBmYWlsdXJlIGhhcHBlbnMgKmFmdGVyKiBgcmF0ZV9jb250cm9sX2luaXRpYWxpemUobG9jYWwpYCBpcyBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBwb2ludCwgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBmYWlsdXJlLCBhbmQgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGNsZWFudXAgaGFwcGVucy4gTGV0IG1lIGdvIGJhY2sgYW5kIHNlZSB3aGVyZSB0aGF0IGBrbWVtZHVwYCBpcyBoYXBwZW5pbmcgZXhhY3RseSwgdGhhdCdzIHRoZSBuZXh0IHN0ZXAuIEknbSBnb2luZyB0byBoYXZlIHRvIGNhcmVmdWxseSBjb25zaWRlciB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhdCB0aGlzIHBvaW50IHRvIGdldCB0aGlzIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MjguODg2NzYzMzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTUwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU1MDpcXHRcXHRsb2NhbC1cXHUwMDNlaHcuY29uZi5mbGFncyA9IElFRUU4MDIxMV9DT05GX0lETEU7XFxuMTU1MTpcXHRcXG4xNTUyOlxcdFxcdGllZWU4MDIxMV9sZWRfaW5pdChsb2NhbCk7XFxuMTU1MzpcXHRcXG4xNTU0OlxcdFxcdHJlc3VsdCA9IGllZWU4MDIxMV90eHFfc2V0dXBfZmxvd3MobG9jYWwpO1xcbjE1NTU6XFx0XFx0aWYgKHJlc3VsdClcXG4xNTU2OlxcdFxcdFxcdGdvdG8gZmFpbF9mbG93cztcXG4xNTU3OlxcdFxcbjE1NTg6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTU1OTpcXHRcXHRyZXN1bHQgPSBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnKGxvY2FsLFxcbjE1NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgaHctXFx1MDAzZXJhdGVfY29udHJvbF9hbGdvcml0aG0pO1xcbjE1NjE6XFx0XFx0cnRubF91bmxvY2soKTtcXG4xNTYyOlxcdFxcdGlmIChyZXN1bHQgXFx1MDAzYyAwKSB7XFxuMTU2MzpcXHRcXHRcXHR3aXBoeV9kZWJ1Zyhsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTU2NDpcXHRcXHRcXHRcXHQgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFxcblxcXCIpO1xcbjE1NjU6XFx0XFx0XFx0Z290byBmYWlsX3JhdGU7XFxuMTU2NjpcXHRcXHR9XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdGlmIChsb2NhbC1cXHUwMDNlcmF0ZV9jdHJsKSB7XFxuMTU2OTpcXHRcXHRcXHRjbGVhcl9iaXQoSUVFRTgwMjExX0hXX1NVUFBPUlRTX1ZIVF9FWFRfTlNTX0JXLCBody1cXHUwMDNlZmxhZ3MpO1xcbjE1NzA6XFx0XFx0XFx0aWYgKGxvY2FsLVxcdTAwM2VyYXRlX2N0cmwtXFx1MDAzZW9wcy1cXHUwMDNlY2FwYSBcXHUwMDI2IFJBVEVfQ1RSTF9DQVBBX1ZIVF9FWFRfTlNTX0JXKVxcbjE1NzE6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2h3X3NldChodywgU1VQUE9SVFNfVkhUX0VYVF9OU1NfQlcpO1xcbjE1NzI6XFx0XFx0fVxcbjE1NzM6XFx0XFxuMTU3NDpcXHRcXHQvKlxcbjE1NzU6XFx0XFx0ICogSWYgdGhlIFZIVCBjYXBhYmlsaXRpZXMgZG9uJ3QgaGF2ZSBJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSxcXG4xNTc2OlxcdFxcdCAqIG9yIGhhdmUgaXQgd2hlbiB3ZSBkb24ndCwgY29weSB0aGUgc2JhbmQgc3RydWN0dXJlIGFuZCBzZXQvY2xlYXIgaXQuXFxuMTU3NzpcXHRcXHQgKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHJhdGUgc2NhbGluZyBhbGdvcml0aG1zIGNvdWxkIGJlIHN3aXRjaGVkXFxuMTU3ODpcXHRcXHQgKiBhbmQgaGF2ZSBkaWZmZXJlbnQgc3VwcG9ydCB2YWx1ZXMuXFxuMTU3OTpcXHRcXHQgKiBQcmludCBhIG1lc3NhZ2Ugc28gdGhhdCBpbiB0aGUgY29tbW9uIGNhc2UgdGhlIHJlYWxsb2NhdGlvbiBjYW4gYmVcXG4xNTgwOlxcdFxcdCAqIGF2b2lkZWQuXFxuMTU4MTpcXHRcXHQgKi9cXG4xNTgyOlxcdFxcdEJVSUxEX0JVR19PTihOVU1fTkw4MDIxMV9CQU5EUyBcXHUwMDNlIDggKiBzaXplb2YobG9jYWwtXFx1MDAzZXNiYW5kX2FsbG9jYXRlZCkpO1xcbjE1ODM6XFx0XFx0Zm9yIChiYW5kID0gMDsgYmFuZCBcXHUwMDNjIE5VTV9OTDgwMjExX0JBTkRTOyBiYW5kKyspIHtcXG4xNTg0OlxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbjE1ODU6XFx0XFx0XFx0Ym9vbCBsb2NhbF9jYXAsIGllX2NhcDtcXG4xNTg2OlxcdFxcbjE1ODc6XFx0XFx0XFx0bG9jYWxfY2FwID0gaWVlZTgwMjExX2h3X2NoZWNrKGh3LCBTVVBQT1JUU19WSFRfRVhUX05TU19CVyk7XFxuMTU4ODpcXHRcXG4xNTg5OlxcdFxcdFxcdHNiYW5kID0gbG9jYWwtXFx1MDAzZWh3LndpcGh5LVxcdTAwM2ViYW5kc1tiYW5kXTtcXG4xNTkwOlxcdFxcdFxcdGlmICghc2JhbmQgfHwgIXNiYW5kLVxcdTAwM2V2aHRfY2FwLnZodF9zdXBwb3J0ZWQpXFxuMTU5MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4xNTkyOlxcdFxcbjE1OTM6XFx0XFx0XFx0aWVfY2FwID0gISEoc2JhbmQtXFx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IFxcdTAwMjZcXG4xNTk0OlxcdFxcdFxcdFxcdCAgICBjcHVfdG9fbGUxNihJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSkpO1xcbjE1OTU6XFx0XFxuMTU5NjpcXHRcXHRcXHRpZiAobG9jYWxfY2FwID09IGllX2NhcClcXG4xNTk3OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjE1OTg6XFx0XFxuMTU5OTpcXHRcXHRcXHRzYmFuZCA9IGttZW1kdXAoc2JhbmQsIHNpemVvZigqc2JhbmQpLCBHRlBfS0VSTkVMKTtcXG4xNjAwOlxcdFxcdFxcdGlmICghc2JhbmQpIHtcXG4xNjAxOlxcdFxcdFxcdFxcdHJlc3VsdCA9IC1FTk9NRU07XFxuMTYwMjpcXHRcXHRcXHRcXHRnb3RvIGZhaWxfYmFuZDtcXG4xNjAzOlxcdFxcdFxcdH1cXG4xNjA0OlxcdFxcbjE2MDU6XFx0XFx0XFx0d2lwaHlfZGJnKGh3LVxcdTAwM2V3aXBoeSwgXFxcImNvcHlpbmcgc2JhbmQgKGJhbmQgJWQpIGR1ZSB0byBWSFQgRVhUIE5TUyBCVyBmbGFnXFxcXG5cXFwiLFxcbjE2MDY6XFx0XFx0XFx0XFx0ICBiYW5kKTtcXG4xNjA3OlxcdFxcbjE2MDg6XFx0XFx0XFx0c2JhbmQtXFx1MDAzZXZodF9jYXAudmh0X21jcy50eF9oaWdoZXN0IF49XFxuMTYwOTpcXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihJRUVFODAyMTFfVkhUX0VYVF9OU1NfQldfQ0FQQUJMRSk7XFxuMTYxMDpcXHRcXG4xNjExOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2Vody53aXBoeS1cXHUwMDNlYmFuZHNbYmFuZF0gPSBzYmFuZDtcXG4xNjEyOlxcdFxcdFxcdGxvY2FsLVxcdTAwM2VzYmFuZF9hbGxvY2F0ZWQgfD0gQklUKGJhbmQpO1xcbjE2MTM6XFx0XFx0fVxcbjE2MTQ6XFx0XFxuMTYxNTpcXHRcXHQvKlxcbjE2MTY6XFx0XFx0ICogbWFjODAyMTEgc3VwcG9ydHMgRVBQS0UsIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgKFJlKUFzc29jaWF0aW9uXFxuMTYxNzpcXHRcXHQgKiBmcmFtZSBlbmNyeXB0aW9uXFxuMTYxODpcXHRcXHQgKi9cXG4xNjE5OlxcdFxcdGlmICh3aXBoeV9leHRfZmVhdHVyZV9pc3NldChsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTYyMDpcXHRcXHRcXHRcXHRcXHQgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BU1NPQ19GUkFNRV9FTkNSWVBUSU9OKSlcXG4xNjIxOlxcdFxcdFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuMTYyMjpcXHRcXHRcXHRcXHRcXHQgICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0VQUEtFKTtcXG4xNjIzOlxcdFxcbjE2MjQ6XFx0XFx0cmVzdWx0ID0gd2lwaHlfcmVnaXN0ZXIobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4xNjI1OlxcdFxcdGlmIChyZXN1bHQgXFx1MDAzYyAwKVxcbjE2MjY6XFx0XFx0XFx0Z290byBmYWlsX3dpcGh5X3JlZ2lzdGVyO1xcbjE2Mjc6XFx0XFxuMTYyODpcXHRcXHRkZWJ1Z2ZzX2h3X2FkZChsb2NhbCk7XFxuMTYyOTpcXHRcXHRyYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMobG9jYWwpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRpZWVlODAyMTFfY2hlY2tfd2JyZl9zdXBwb3J0KGxvY2FsKTtcXG4xNjMyOlxcdFxcbjE2MzM6XFx0XFx0cnRubF9sb2NrKCk7XFxuMTYzNDpcXHRcXHR3aXBoeV9sb2NrKGh3LVxcdTAwM2V3aXBoeSk7XFxuMTYzNTpcXHRcXG4xNjM2OlxcdFxcdC8qIGFkZCBvbmUgZGVmYXVsdCBTVEEgaW50ZXJmYWNlIGlmIHN1cHBvcnRlZCAqL1xcbjE2Mzc6XFx0XFx0aWYgKGxvY2FsLVxcdTAwM2Vody53aXBoeS1cXHUwMDNlaW50ZXJmYWNlX21vZGVzIFxcdTAwMjYgQklUKE5MODAyMTFfSUZUWVBFX1NUQVRJT04pIFxcdTAwMjZcXHUwMDI2XFxuMTYzODpcXHRcXHQgICAgIWllZWU4MDIxMV9od19jaGVjayhodywgTk9fQVVUT19WSUYpKSB7XFxuMTYzOTpcXHRcXHRcXHRzdHJ1Y3QgdmlmX3BhcmFtcyBwYXJhbXMgPSB7MH07XFxuMTY0MDpcXHRcXG4xNjQxOlxcdFxcdFxcdHJlc3VsdCA9IGllZWU4MDIxMV9pZl9hZGQobG9jYWwsIFxcXCJ3bGFuJWRcXFwiLCBORVRfTkFNRV9FTlVNLCBOVUxMLFxcbjE2NDI6XFx0XFx0XFx0XFx0XFx0XFx0ICBOTDgwMjExX0lGVFlQRV9TVEFUSU9OLCBcXHUwMDI2cGFyYW1zKTtcXG4xNjQzOlxcdFxcdFxcdGlmIChyZXN1bHQpXFxuMTY0NDpcXHRcXHRcXHRcXHR3aXBoeV93YXJuKGxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4xNjQ1OlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJGYWlsZWQgdG8gYWRkIGRlZmF1bHQgdmlydHVhbCBpZmFjZVxcXFxuXFxcIik7XFxuMTY0NjpcXHRcXHR9XFxuMTY0NzpcXHRcXG4xNjQ4OlxcdFxcdHdpcGh5X3VubG9jayhody1cXHUwMDNld2lwaHkpO1xcbjE2NDk6XFx0XFx0cnRubF91bmxvY2soKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MjguODg3MDIzNjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mzc1OTg2NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBJbml0aWFsaXphdGlvbiBCdWcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhlIHByb2JsZW0uIGBpZWVlODAyMTFfaW5pdF9yYXRlX2N0cmxfYWxnYCBnZXRzIGNhbGxlZCBiZWZvcmUgYGttZW1kdXBgLiBJZiBga21lbWR1cGAgZmFpbHMsIHdlIHVzZWQgdG8ganVtcCB0byBgZmFpbF9yYXRlYCwgc2tpcHBpbmcgdGhlIGNydWNpYWwgYHJhdGVfY29udHJvbF9kZWluaXRpYWxpemUobG9jYWwpYCBjYWxsLiBCdXQgYGllZWU4MDIxMV9pbml0X3JhdGVfY3RybF9hbGdgIGhhcyBhbHJlYWR5IHNldCB1cCB0aGUgcmF0ZSBjb250cm9sIGFsZ29yaXRobSwgcmlnaHQ/IFNvLCB0aGUgZmFpbHVyZSBtZWFucyB3ZSdkIGhhdmUgYW4gdW5pbml0aWFsaXplZCBhbGdvcml0aG0gaGFuZ2luZyBhcm91bmQg4oCTIGEgY2xhc3NpYyBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIHNjZW5hcmlvLiBUaGUgcGF0Y2ggY29ycmVjdGx5IGZpeGVzIHRoaXMgYnkgcmVkaXJlY3RpbmcgdG8gYGZhaWxfYmFuZGAsIHdoaWNoIG5vdyBpbmNsdWRlcyB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgd2l0aCBgcmF0ZV9jb250cm9sX2RlaW5pdGlhbGl6ZShsb2NhbClgLlxuXG5Ib2xkIG9uLi4uIGBmYWlsX2JhbmRgIGFsc28gY2FsbHMgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgLiBCdXQgd2UgKmhhdmVuJ3QqIGFkZGVkIGFueSBpbnRlcmZhY2VzIHlldDsgdGhhdCBoYXBwZW5zIGxhdGVyIGluIHRoZSBwcm9jZXNzIHdpdGggYGllZWU4MDIxMV9pZl9hZGRgLiBJcyBpdCBzYWZlIHRvIGNhbGwgYGllZWU4MDIxMV9yZW1vdmVfaW50ZXJmYWNlcyhsb2NhbClgIGF0IHRoaXMgcG9pbnQ/IFByb2JhYmx5LiBJdCBsaWtlbHkganVzdCBpdGVyYXRlcyBvdmVyIGFuIGVtcHR5IGxpc3QsIHdoaWNoIHNob3VsZCBiZSBoYXJtbGVzcy5cblxuTm93LCBpcyB0aGlzIGJ1ZyB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCdzIGEgc29saWQgYnVnIGZpeCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhlIGZpeCBhZGRyZXNzZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIGBrbWVtZHVwYCBmYWlscywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiBzaXR1YXRpb24gZnV6emluZyBleGNlbHMgYXQgdW5jb3ZlcmluZy4gVG8gdHJpZ2dlciBpdCwgd2UgbmVlZCB0byBmb3JjZSBhIGZhaWx1cmUgaW4gYGttZW1kdXBgIGR1cmluZyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gUmVtZW1iZXIgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBjYWxsZWQgd2hlbiBhIG1hYzgwMjExIGRyaXZlciByZWdpc3RlcnMgaXRzIGhhcmR3YXJlLiBGb3J0dW5hdGVseSwgd2UgY2FuIHJlYWNoIHRoaXMgdmlhIGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgdmlydHVhbCBkcml2ZXJzLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBpbmRlZWQgcmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjkxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzkwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6MzUuMjYzMDE3NDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzkwNzU4MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTozNS43MDIxMDc5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjgxNzMyNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiBgbWFjODAyMTFfaHdzaW1gLiBTcGVjaWZpY2FsbHksIEknbSB0cnlpbmcgdG8gcGluIGRvd24gdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgcmVnaXN0ZXJzIHRoZSBzaW11bGF0ZWQgaGFyZHdhcmUgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJcyBpdCBgbWFjODAyMTFfaHdzaW1gIHRoYXQgZG9lcyB0aGlzLCBvciBkb2VzIGBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW9gIG1ha2UgdGhlIGNhbGwgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2A/IEdvdHRhIGNsYXJpZnkgdGhhdC4gVGhlIG9idmlvdXMgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgY29kZSDigJMgbGV0J3Mgb3BlbiB1cCBgbWFjODAyMTFfaHdzaW0uY2AgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gVGltZSB0byBmaXJlIHVwIHRoZSBlZGl0b3IgYW5kIHN0YXJ0IHNsZXV0aGluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjU4NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjM4Ljk4Mzg0NTk1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MDA4Njc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWdpc3Rlcl9od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTozOS4xMDE4Njk2NDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NjE2NDc3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IGNvZGU6XG5cbioqRGl2aW5nIGludG8gdGhlIDgwMi4xMSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEl0IG1lYW5zIGl0J3MgZGVzaWduZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBsaWtlbHkgYnkgZGV2aWNlIGRyaXZlcnMgd2FudGluZyB0byByZWdpc3RlciBhIG5ldyA4MDIuMTEgKFdpRmkpIGRldmljZS4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0ICp3aG8qIGlzIHVzaW5nIGl0LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQncyBjYWxsaW5nIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSBhIGh1Z2UgYW1vdW50IG9mIGluc2lnaHQgaW50byBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciA4MDIuMTEgbmV0d29ya2luZyBzdGFjay4gSSdsbCBuZWVkIHRvIGtub3cgdGhpcyB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBhIG5ldyBkZXZpY2Ugb3IgbW9kdWxlIGZpdHMgaW50byB0aGUgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGV0aGVyIGFueSBvZiB0aGUgZGVwZW5kZW5jaWVzIGNoYW5nZSBob3cgdGhpcyBmdW5jdGlvbiB3aWxsIG9wZXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo0Mi4yODgwMzkyMzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDE5MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcmVnaXN0ZXJfaHdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmM9MTc4MD1zdGF0aWMgaW50IGFkbTgyMTFfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hZG10ZWsvYWRtODIxMS5jLTE5MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYWRtdGVrL2FkbTgyMTEuYzoxOTE5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2FkbXRlay9hZG04MjExLmMtMTkyMC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jPTE1OTA9c3RhdGljIGludCBhcjU1MjNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jLTE3MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyNTUyMy9hcjU1MjMuYzoxNzI1OlxcdGVycm9yID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI1NTIzL2FyNTUyMy5jLTE3MjYtXFx0aWYgKGVycm9yKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk5NzE9aW50IGF0aDEwa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTEwMzMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MTAzMzM6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0xMDMzNC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTEwNDYwPXN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY1Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNjU3OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhhci1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0xMDY2My1cXHRpZiAoIWFiLVxcdTAwM2Vod19wYXJhbXMuc3VwcG9ydHNfbW9uaXRvcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jOjEwNjY0OlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMTA2NjUtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz0xNDQ3MT1zdGF0aWMgaW50IGF0aDEya19tYWNfaHdfcmVnaXN0ZXIoc3RydWN0IGF0aDEya19odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM6MTQ3MTU6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE0NzE2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MjEtXFx0aWYgKGlzX21vbml0b3JfZGlzYWJsZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE0NzIyOlxcdFxcdC8qIFRoZXJlJ3MgYSByYWNlIGJldHdlZW4gY2FsbGluZyBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTQ3MjMtXFx0XFx0ICogYW5kIGhlcmUgd2hlcmUgdGhlIG1vbml0b3IgbW9kZSBpcyBlbmFibGVkIGZvciBhIGxpdHRsZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYz0zMDI3PWF0aDVrX2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jLTMxNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYzozMTQ0OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYy0zMTQ1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODcwLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4NzE6XFx0LyogbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg3Mi1cXHRwcml2LVxcdTAwM2VsZWRfY2Rldi5kZWZhdWx0X3RyaWdnZXIgPSBpZWVlODAyMTFfY3JlYXRlX3RwdF9sZWRfdHJpZ2dlcihwcml2LVxcdTAwM2VodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzctXFx0LyogUmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4Nzg6XFx0ZXJyb3IgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04NzktXFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMDA2PWludCBhdGg5a19pbml0X2RldmljZSh1MTYgZGV2aWQsIHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMDQ0LSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6MTA0NTpcXHQvKiBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNDYtXFx0c2MtXFx1MDAzZWxlZF9jZGV2LmRlZmF1bHRfdHJpZ2dlciA9IGllZWU4MDIxMV9jcmVhdGVfdHB0X2xlZF90cmlnZ2VyKHNjLVxcdTAwM2VodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTA1My1cXHQvKiBSZWdpc3RlciB3aXRoIG1hYzgwMjExICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMDU0OlxcdGVycm9yID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTEwNTUtXFx0aWYgKGVycm9yKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYz0xOTQ3PWludCBjYXJsOTE3MF9yZWdpc3RlcihzdHJ1Y3QgYXI5MTcwICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9tYWluLmMtMTk3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvbWFpbi5jOjE5ODA6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL21haW4uYy0xOTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmM9Mzk4PXN0YXRpYyB2b2lkIGNhcmw5MTcwX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMtNDQ2LVxcdFxcdFxcdCAqIGZpcm13YXJlIGxvYWRpbmcgYXR0ZW1wdHMgKHNvIGl0IGRvZXNuJ3QgcGFzc1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC91c2IuYzo0NDc6XFx0XFx0XFx0ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCkgYW5kIHRoZXJlIGlzIG5vIGludGVybmFsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jLTQ0OC1cXHRcXHRcXHQgKiB3b3JrcXVldWUgYXQgYWxsKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MzctXFx0d2NuMzZ4eF9pbml0X2llZWU4MDIxMSh3Y24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjM4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3Y24tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYzOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwvYXQ3NmM1MHgtdXNiLmM9MjI5OT1zdGF0aWMgaW50IGF0NzZfaW5pdF9uZXdfZGV2aWNlKHN0cnVjdCBhdDc2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsL2F0NzZjNTB4LXVzYi5jOjIzNjE6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC9hdDc2YzUweC11c2IuYy0yMzYyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaD04OTg9c3RydWN0IGI0M193bCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvYjQzLmgtOTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaDo5MTA6XFx0LyogU2V0IHRoaXMgaWYgd2UgY2FsbCBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSBhbmQgY2hlY2sgaWYgd2UgY2FsbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9iNDMuaC05MTEtXFx0ICogaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoKS4gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmM9MjU0OD1zdGF0aWMgdm9pZCBiNDNfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9iNDMvbWFpbi5jLTI1OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzL21haW4uYzoyNTk0OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My9tYWluLmMtMjU5NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYz0xNTYxPXN0YXRpYyB2b2lkIGI0M2xlZ2FjeV9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYyOC1cXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYjQzbGVnYWN5L21haW4uYzoxNjI5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS9tYWluLmMtMTYzMC1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM9MTEyOT1zdGF0aWMgc3RydWN0IGJyY21zX2luZm8gKmJyY21zX2F0dGFjaChzdHJ1Y3QgYmNtYV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtc21hYy9tYWM4MDIxMV9pZi5jOjExOTU6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk2LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21zbWFjL21hYzgwMjExX2lmLmM6MTE5NzpcXHRcXHR3aXBoeV9lcnIod2wtXFx1MDAzZXdpcGh5LCBcXFwiJXM6IGllZWU4MDIxMV9yZWdpc3Rlcl9odyBmYWlsZWQsIHN0YXR1c1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbXNtYWMvbWFjODAyMTFfaWYuYy0xMTk4LVxcdFxcdFxcdCAgXFxcIiVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmM9MzQ4Nj1pbDM5NDVfc2V0dXBfbWFjKHN0cnVjdCBpbF9wcml2ICppbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtbWFjLmMtMzUyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LW1hYy5jOjM1Mjk6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGlsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1tYWMuYy0zNTMwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmM9NTcyMD1pbDQ5NjVfbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpbF9wcml2ICppbCwgdTMyIG1heF9wcm9iZV9sZW5ndGgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LW1hYy5jLTU3NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1tYWMuYzo1Nzc1OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhpbC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtbWFjLmMtNTc3Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaD0yODc2PXZvaWQgaWwzOTQ1X3JzX3JhdGVfaW5pdChzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg1LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvY29tbW9uLmg6Mjg4NjogKiBpZWVlODAyMTFfcmVnaXN0ZXJfaHdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9jb21tb24uaC0yODg3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9tYWM4MDIxMS5jPTc4PWludCBpd2xhZ25fbWFjX3NldHVwX3JlZ2lzdGVyKHN0cnVjdCBpd2xfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmMtMTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL21hYzgwMjExLmM6MTk4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vbWFjODAyMTEuYy0xOTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaD0zNzk9dm9pZCBpd2xfcnNfcmF0ZV9pbml0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzg4LSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaDozODk6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaC0zOTAtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmM9NDg4PWludCBpd2xfbWxkX3JlZ2lzdGVyX2h3KHN0cnVjdCBpd2xfbWxkICptbGQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jLTUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9tYWM4MDIxMS5jOjUwODpcXHRyZXR1cm4gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KG1sZC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL21hYzgwMjExLmMtNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxPWludCBpd2xfbXZtX21hY19zZXR1cF9yZWdpc3RlcihzdHJ1Y3QgaXdsX212bSAqbXZtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy03OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzo3OTQ6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNzk1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9NDAyPXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtNDExLSAqIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gIFRoaXMgc2hvdWxkIGJlIHBlcmZvcm1lZCBwcmlvciB0byBjYWxsaW5nXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDo0MTI6ICogaWVlZTgwMjExX3JlZ2lzdGVyX2h3XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC00MTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM9ODA1PWludCBwNTRfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGRldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmM6ODEwOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVyc2lsL3A1NC9tYWluLmMtODExLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jPTU1NT1zdHJ1Y3QgbGJ0Zl9wcml2YXRlICpsYnRmX2FkZF9jYXJkKHZvaWQgKmNhcmQsIHN0cnVjdCBkZXZpY2UgKmRtZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi9tYWluLmMtNjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbGliZXJ0YXNfdGYvbWFpbi5jOjYyMDpcXHRpZiAoaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzX3RmL21haW4uYy02MjEtXFx0XFx0Z290byBlcnJfaW5pdF9hZGFwdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jPTYxNTY9c3RhdGljIGludCBtd2w4a19maXJtd2FyZV9sb2FkX3N1Y2Nlc3Moc3RydWN0IG13bDhrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmMtNjI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213bDhrLmM6NjI0ODpcXHRyYyA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2w4ay5jLTYyNDktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9NTQ4PWludCBtdDc2X3JlZ2lzdGVyX3BoeShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSwgYm9vbCB2aHQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtNTg2LVxcdGlmICgodm9pZCAqKXBoeSA9PSBwaHktXFx1MDAzZWh3LVxcdTAwM2Vwcml2KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jOjU4NzpcXHRcXHRyZXQgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcocGh5LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTU4OC1cXHRcXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTc0ND1pbnQgbXQ3Nl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzZfZGV2ICpkZXYsIGJvb2wgdmh0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6Nzg2OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTc4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9pbml0LmM9NTc0PWludCBtdDc2MDF1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3NjAxdV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvaW5pdC5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYzo2MjQ6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2luaXQuYy02MjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYz01ODA9c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3B1cmVsaWZpL3BsZnhsYy91c2IuYy02MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcHVyZWxpZmkvcGxmeGxjL3VzYi5jOjYxOTpcXHRyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS9wbGZ4bGMvdXNiLmMtNjIwLVxcdGlmIChyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jPTExMTc9c3RhdGljIGludCBydDJ4MDBsaWJfcHJvYmVfaHcoc3RydWN0IHJ0MngwMF9kZXYgKnJ0MngwMGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmMtMTIwNS1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL3J0MngwMGRldi5jOjEyMDY6XFx0c3RhdHVzID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHJ0MngwMGRldi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvcnQyeDAwZGV2LmMtMTIwNy1cXHRpZiAoc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmM9MTczMD1zdGF0aWMgaW50IHJ0bDgxODBfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC9kZXYuYy0xOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTgwL2Rldi5jOjE5MzQ6XFx0ZXJyID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODAvZGV2LmMtMTkzNS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYz0xNDQyPXN0YXRpYyBpbnQgcnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3L2Rldi5jLTE2NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4MTh4L3J0bDgxODcvZGV2LmM6MTY0MTpcXHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4Ny9kZXYuYy0xNjQyLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsOHh4eHUvY29yZS5jPTc2Nzk9c3RhdGljIGludCBydGw4eHh4dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmMtNzg2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYzo3ODcwOlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhwcml2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmMtNzg3MS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bHdpZmkvcGNpLmM9MjA3MD1pbnQgcnRsX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9wY2kuYy0yMjA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9wY2kuYzoyMjA5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3BjaS5jLTIyMTAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jPTk1MT1pbnQgcnRsX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYy0xMDIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS91c2IuYzoxMDIyOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGx3aWZpL3VzYi5jLTEwMjMtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmM9MjI1NT1pbnQgcnR3X3JlZ2lzdGVyX2h3KHN0cnVjdCBydHdfZGV2ICpydHdkZXYsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L21haW4uYzoyMzI1OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9tYWluLmMtMjMyNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYz0zMzM9dm9pZCBydHdfcmVnZF9ub3RpZmllcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgcmVndWxhdG9yeV9yZXF1ZXN0ICpyZXF1ZXN0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzM1Oi8qIGNhbGwgdGhpcyBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zMzYtaW50IHJ0d19yZWdkX2luaXQoc3RydWN0IHJ0d19kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYzozNTA6XFx0XFx0LyogU2V0IFJFR1VMQVRPUllfU1RSSUNUX1JFRyBiZWZvcmUgaWVlZTgwMjExX3JlZ2lzdGVyX2h3KCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmMtMzUxLVxcdFxcdCAqIHN0YWNrIHdpbGwgd2FpdCBmb3IgcmVndWxhdG9yeV9oaW50KCkgYW5kIGNvbnNpZGVyIGl0XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg4L3JlZ2QuYy0zNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OC9yZWdkLmM6MzY4Oi8qIGNhbGwgdGhpcyBhZnRlciBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoKSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODgvcmVnZC5jLTM2OS1pbnQgcnR3X3JlZ2RfaGludChzdHJ1Y3QgcnR3X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjcwOD1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2ODI4OlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjgyOS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jPTIwMjI9aW50IHJzaV9tYWM4MDIxMV9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmMtMjEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjIxMjc6XFx0c3RhdHVzID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTIxMjgtXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTM1ND1pbnQgd2Z4X3Byb2JlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMtNDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjQ2NDpcXHRlcnIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcod2Rldi1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTQ2NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc3QvY3cxMjAwL21haW4uYz00MTk9c3RhdGljIGludCBjdzEyMDBfcmVnaXN0ZXJfY29tbW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmMtNDMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmM6NDMzOlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0L2N3MTIwMC9tYWluLmMtNDM0LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmM9MTQ5MT1zdGF0aWMgaW50IHdsMTI1MV9yZWdpc3Rlcl9odyhzdHJ1Y3Qgd2wxMjUxICp3bClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9tYWluLmMtMTQ5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvbWFpbi5jOjE1MDA6XFx0cmV0ID0gaWVlZTgwMjExX3JlZ2lzdGVyX2h3KHdsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL21haW4uYy0xNTAxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTYxMTk9c3RhdGljIGludCB3bDEyNzFfcmVnaXN0ZXJfaHcoc3RydWN0IHdsMTI3MSAqd2wpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYxNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYzo2MTcyOlxcdHJldCA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3bC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjE3My1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jPTU1ODA9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYy02MDE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uYzo2MDE5OlxcdGVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5jLTYwMjAtXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmM6NjAyMTpcXHRcXHRwcl9kZWJ1ZyhcXFwibWFjODAyMTFfaHdzaW06IGllZWU4MDIxMV9yZWdpc3Rlcl9odyBmYWlsZWQgKCVkKVxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmMtNjAyMi1cXHRcXHQgICAgICAgZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEzNDk9c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzk1OlxcdHIgPSBpZWVlODAyMTFfcmVnaXN0ZXJfaHcoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzOTYtXFx0aWYgKHIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NDIuNTA4MjM5NDgxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NjAzNDQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHdlIGNhbiB2ZXJpZnkgdGhlIGJlaGF2aW9yIG9mIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgLCBhbmQgaXQncyBsb29raW5nIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdGhhbmtzIHRvIHRoZSBgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvYCBmdW5jdGlvbi4gVGhhdCBjYWxsIGV4cGxpY2l0bHkgbGVhZHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AsIHdoaWNoIGdpdmVzIHVzIGEgY2xlYXIgZW50cnkgcG9pbnQgdmlhIG5ldGxpbmsgY29tbWFuZHMgdG8gY3JlYXRlIGEgdmlydHVhbCByYWRpby4gVGhpcyBtZWFucyB3ZSBjYW4gZGVmaW5pdGVseSByZWFjaCBhbmQgdGVzdCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCBpbiBhIHZpcnR1YWxpemVkLCBjb250cm9sbGVkIHNldHVwIOKAkyB3aGljaCBpcyBpZGVhbCBmb3IgdGhpcyBraW5kIG9mIHdvcmsuXG5cblRvIGZvY3VzIG9uIGVycm9yIHBhdGhzLCBhbmQgc3BlY2lmaWNhbGx5IHRhcmdldCBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCwgSSBjYW4gc2VlIHdlIGNhbiBsZXZlcmFnZSBmYXVsdCBpbmplY3Rpb24sIHBhcnRpY3VsYXJseSBvbiBga21lbWR1cGAuXG5cbkkgbmVlZCB0byBjb25maXJtIGBpZWVlODAyMTFfcmVnaXN0ZXJfaHdgIGFzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIHdlJ3JlIGFmdGVyLCBidXQgaXQgc2VlbXMgdG8gcmVxdWlyZSBgTUFDODAyMTFfSFdTSU1gIHRvIGJlIGVuYWJsZWQgdG8gZ2VuZXJhdGUgcmFkaW9zLiBOb3cgSSByZW1lbWJlci4uLndhaXQsIGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBgTUFDODAyMTFfSFdTSU1gIGlzIG1vcmUgb2YgYSBzdWItZmVhdHVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgY29uZmlndXJhdGlvbiByaWdodCBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBhbmQgY29uZmlnIG9wdGlvbnMgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mjk2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI4VDEwOjI1OjQ2Ljk2ODU4ODU0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MDA5MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NDcuMDY1NTAyNjVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MzYxMDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBgTUFDODAyMTFgIGNvbmZpZyBpcyB0aGUgcHJpbWFyeSBvbmUgaGVyZS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGhhcmR3YXJlIHNpbXVsYXRpb24sIGBNQUM4MDIxMV9IV1NJTWAuIEkgc2VlbSB0byByZWNhbGwgaXQgYmVpbmcgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGZpbGUuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gY29uZmlybS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB2aXJ0dWFsaXplZCB3aXJlbGVzcyBlbnZpcm9ubWVudHMuIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIHByb2Nlc3MgaXMgYXMgZWZmaWNpZW50IGFuZCBjb3JyZWN0IGFzIGl0IGNhbiBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5ODMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo0OS45MjkxMTc0NzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzYxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOFQxMDoyNTo1MC4wMjE4ODkxMzNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY1NTM0OTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogbWFjODAyMTFfaHdzaW0gYW5kIGllZWU4MDIxMV9yZWdpc3Rlcl9odyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZS4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvciByZXNvdXJjZSBsZWFrIGluIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgZnVuY3Rpb24uICBUaGUgY2x1ZSB0aGF0IG1hZGUgdGhpcyBhIGdvb2QgdGFyZ2V0IGlzIHRoZSByZWZlcmVuY2UgdG8gYGttZW1kdXBgIGZhaWxpbmcuXG5cblJpZ2h0LCBzbyBmaXJzdCB0aGluZ3MgZmlyc3QsIHRvIHRyaWdnZXIgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSBgTUFDODAyMTFgIGFuZCBgTUFDODAyMTFfSFdTSU1gIGluIHRoZSBrZXJuZWwgY29uZmlnLiBgTUFDODAyMTFfSFdTSU1gIGlzIHdoYXQgYWxsb3dzIHVzIHRvIGNyZWF0ZSB0aGUgdmlydHVhbCByYWRpb3Mgd2UgbmVlZCB0byBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gTG9va2luZyBhdCB0aGUgY29kZSBkaWZmLCB0aGUgb3JpZ2luYWwgaGFkIGEgYGdvdG8gZmFpbF9yYXRlYCB3aGVuIGBrbWVtZHVwYCBmYWlscywgYnV0IHRoYXQncyBiZWVuIGNoYW5nZWQgdG8gYSBgZ290byBmYWlsX2JhbmRgLiBUaGlzIHN1Z2dlc3RzIGEgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgcmF0ZSBjb250cm9sIG5vdCBiZWluZyBkZWluaXRpYWxpemVkIHdoZW4gdGhlIGBrbWVtZHVwYCBhbGxvY2F0aW9uIGZhaWxzLlxuXG5TbywgdGhlIGZvY3VzIGlzIGRlZmluaXRpdmVseSBvbiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YC4gVGhpcyBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQsIGFuZCBpdCdzIGNhbGxlZCB3aGVuIGEgbmV3IGhhcmR3YXJlIGludGVyZmFjZSBpcyByZWdpc3RlcmVkLiBJdCdzIG5vdCBhICpob3QqIHBhdGgsIHNvIGl0J3Mgb25seSBjYWxsZWQgd2hlbiBhIG5ldyByYWRpbyBpcyBjcmVhdGVkLCB3aGljaCBtYWtlcyBpdCBhbiBpZGVhbCBmdXp6aW5nIHRhcmdldCwgYXMgaXQncyBsZXNzIGxpa2VseSB0byBiZSBpbXBhY3RlZCBieSBvdGhlciB0aGluZ3MuIFdpdGggYG1hYzgwMjExX2h3c2ltYCwgd2UgY2FuIHJlbGlhYmx5IHRyaWdnZXIgY2FsbHMgdG8gYGllZWU4MDIxMV9yZWdpc3Rlcl9od2AgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgYW5kIGluamVjdGluZyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyB0byByZWFjaCB0aGUgY29kZSB3aGVyZSB0aGUgcGF0Y2ggYXBwbGllcy4gVGhpcyBzaG91bGQgYWxsb3cgdXMgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI4MywiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjhUMTA6MjU6NTguNjc3MjQzMjY2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTQ1NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfcmVnaXN0ZXJfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGllZWU4MDIxMV9yZWdpc3Rlcl9od2Agd2hlbiBga21lbWR1cGAgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBzdWJzeXN0ZW0gYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcgdmlydHVhbCByYWRpb3MgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBhbmQgaW5qZWN0aW5nIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9yZWdpc3Rlcl9od1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgaWVlZTgwMjExX3JlZ2lzdGVyX2h3YCB3aGVuIGBrbWVtZHVwYCBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIHN1YnN5c3RlbSBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyB2aXJ0dWFsIHJhZGlvcyB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGFuZCBpbmplY3RpbmcgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[1] Phase: Succeeded StartedAt: 2026-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 10:26:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2] Phase: Succeeded StartedAt: 2026-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 10:26:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:09 +0000 UTC FinishedAt: 2026-06-28 10:26:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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-workflowh6m67/series-workflowh6m67-convert-artifact-1262102125/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:29 +0000 UTC FinishedAt: 2026-06-28 10:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:29 +0000 UTC FinishedAt: 2026-06-28 10:56: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:*76ab0ebb-b7c5-437c-8f7c-e3386e467f26,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-workflowh6m67/series-workflowh6m67-convert-artifact-1262102125/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": "4ae182ba-bf3c-4caa-9322-1357e57f0637", "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-workflowh6m67/series-workflowh6m67-build-action-3250491491/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:26:29 +0000 UTC FinishedAt: 2026-06-28 10:55: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:*76ab0ebb-b7c5-437c-8f7c-e3386e467f26,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-workflowh6m67/series-workflowh6m67-convert-artifact-1262102125/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": "4ae182ba-bf3c-4caa-9322-1357e57f0637", "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-workflowh6m67/series-workflowh6m67-build-action-3250491491/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:04 +0000 UTC FinishedAt: 2026-06-28 10:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:04 +0000 UTC FinishedAt: 2026-06-28 10:56:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:04 +0000 UTC FinishedAt: 2026-06-28 10:56:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:04 +0000 UTC FinishedAt: 2026-06-28 10:56:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-workflowh6m67/series-workflowh6m67-convert-artifact-2084396232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:14 +0000 UTC FinishedAt: 2026-06-28 10:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:56:14 +0000 UTC FinishedAt: 2026-06-28 10:58:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4ae182ba-bf3c-4caa-9322-1357e57f0637,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-workflowh6m67/series-workflowh6m67-build-action-3250491491/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-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:58:28 +0000 UTC FinishedAt: 2026-06-28 10:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:58:28 +0000 UTC FinishedAt: 2026-06-28 10:58:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:58:28 +0000 UTC FinishedAt: 2026-06-28 11:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:58:28 +0000 UTC FinishedAt: 2026-06-28 11:18:47 +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:*76ab0ebb-b7c5-437c-8f7c-e3386e467f26,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-workflowh6m67/series-workflowh6m67-convert-artifact-2084396232/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": "706107e3-9ea6-4bf4-b6e8-ac0da6a24186", "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-workflowh6m67/series-workflowh6m67-build-action-2527604/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 10:58:28 +0000 UTC FinishedAt: 2026-06-28 11:18:37 +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:*76ab0ebb-b7c5-437c-8f7c-e3386e467f26,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-workflowh6m67/series-workflowh6m67-convert-artifact-2084396232/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": "706107e3-9ea6-4bf4-b6e8-ac0da6a24186", "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-workflowh6m67/series-workflowh6m67-build-action-2527604/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:18:47 +0000 UTC FinishedAt: 2026-06-28 11:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:18:47 +0000 UTC FinishedAt: 2026-06-28 11:18:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:18:47 +0000 UTC FinishedAt: 2026-06-28 11:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:18:47 +0000 UTC FinishedAt: 2026-06-28 11:20:54 +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:*706107e3-9ea6-4bf4-b6e8-ac0da6a24186,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-workflowh6m67/series-workflowh6m67-build-action-2527604/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-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +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":["ieee80211_register_hw"],"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:*4ae182ba-bf3c-4caa-9322-1357e57f0637,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*706107e3-9ea6-4bf4-b6e8-ac0da6a24186,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-workflowh6m67/series-workflowh6m67-build-action-3250491491/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-workflowh6m67/series-workflowh6m67-build-action-2527604/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 11:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 11:21:11 +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":["ieee80211_register_hw"],"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-workflowh6m67/series-workflowh6m67-convert-artifact-148571777/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 11:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 11:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:03 +0000 UTC FinishedAt: 2026-06-28 11:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:13 +0000 UTC FinishedAt: 2026-06-28 14:23:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh6m67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"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":["ieee80211_register_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"098e32cba334da0f3fa8cfd4e022ae7c72341400","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"9c16abd4-cdca-4c63-93a3-d1dbd6875ac4","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-06-28 11:21:13 +0000 UTC FinishedAt: 2026-06-28 14:23:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4ae182ba-bf3c-4caa-9322-1357e57f0637,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*706107e3-9ea6-4bf4-b6e8-ac0da6a24186,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-workflowh6m67/series-workflowh6m67-build-action-3250491491/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-workflowh6m67/series-workflowh6m67-build-action-2527604/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-workflowh6m67/series-workflowh6m67-convert-artifact-148571777/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,}