Name: series-workflow4pgnv Phase: Succeeded StartedAt: 2026-09-07 16:04:41 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[0] Phase: Succeeded StartedAt: 2026-09-07 16:04:41 +0000 UTC FinishedAt: 2026-09-07 17:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 16:04:41 +0000 UTC FinishedAt: 2026-09-07 17:16:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "9d1365e96a920bf79974161e370b5640a0054461", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_DEBUGFS", "CFG80211_DEBUGFS", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "9d1365e96a920bf79974161e370b5640a0054461", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_DEBUGFS", "CFG80211_DEBUGFS", "DEBUG_FS" ], "series_id": "0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_debugfs_remove_netdev", "ieee80211_debugfs_recreate_netdev", "ieee80211_debugfs_key_update_default" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hYzgwMjExJiMzOTtzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG5pbmRleCBmM2M2YTQxZTQ5MTE5Li5hMDBiMDc3NmZkYjFkIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtpZWVlODAyMTFfaS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmF0ZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZGVidWdmcy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RlYnVnZnNfa2V5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZWJ1Z2ZzX25ldGRldi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHJpdmVyLW9wcy5oXCYjMzQ7XG4gXG5AQCAtMTAyMCw2ICYjNDM7MTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpO1xuIFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcbiBcdHNkYXRhLVx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcbiYjNDM7XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuJiM0MztcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbiB9XG4gXG4gdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuQEAgLTEwMzIsNiAmIzQzOzEwMzUsNyBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiB7XG4gXHRpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTtcbiBcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xuJiM0MztcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4gXG4gXHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbiBcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSYjMzk7cyBkZWJ1Z2ZzIG5ldGRldiBoYW5kbGluZyBieSBwcm9wZXJseSBjbGVhcmluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIHBvaW50ZXJzIHVwb24gcmVtb3ZhbCAoaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldikgYW5kIHJlYnVpbGRpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBsaW5rcyB1cG9uIGludGVyZmFjZSByZWNyZWF0aW9uIChpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzLiBGdXp6aW5nIGhlbHBzIGVuc3VyZSB0aGF0IGludGVyZmFjZSBzZXR1cCwgbGluayB1cGRhdGVzLCBhbmQga2V5IHVwZGF0ZXMgZG8gbm90IHByb2R1Y2Ugc3RhbGUgb3IgZGFuZ2xpbmcgZGVudHJ5IHJlZmVyZW5jZXMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWU0OGFjODkwZGIwNTU4YzExNGE1ZDZlMmU0OGUzZDVlM2NkZGU2NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMTc6MTU6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCmluZGV4IGYzYzZhNDFlNDkxMTkuLmEwMGIwNzc2ZmRiMWQgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCkBAIC0yMCw2ICYjNDM7MjAsNyBAQAogI2luY2x1ZGUgJiMzNDtpZWVlODAyMTFfaS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmF0ZS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGVidWdmcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2RlYnVnZnNfa2V5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Z2ZzX25ldGRldi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZHJpdmVyLW9wcy5oJiMzNDsKIApAQCAtMTAyMCw2ICYjNDM7MTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtJmd0O3ZpZi5kZWJ1Z2ZzX2Rpcik7CiAJc2RhdGEtJmd0O3ZpZi5kZWJ1Z2ZzX2RpciA9IE5VTEw7CiAJc2RhdGEtJmd0O2RlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDsKJiM0MzsJc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7CiYjNDM7CXNkYXRhLSZndDtkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7CiB9CiAKIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKQEAgLTEwMzIsNiAmIzQzOzEwMzUsNyBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIHsKIAlpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTsKIAlpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTsKJiM0MzsJaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTsKIAogCWlmIChzZGF0YS0mZ3Q7ZmxhZ3MgJmFtcDsgSUVFRTgwMjExX1NEQVRBX0lOX0RSSVZFUikgewogCQlkcnZfdmlmX2FkZF9kZWJ1Z2ZzKHNkYXRhLSZndDtsb2NhbCwgc2RhdGEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjEzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3VpdGFiaWxpdHkgRXZhbHVhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGRlY2lkZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGRvIGEgcXVpY2sgcmlzayBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgUUEvdHJpYWdlIHRhc2ssIGV2YWx1YXRpbmcgYSBMaW51eCBrZXJuZWwgcGF0Y2guIFNlZW1zIGxpa2UgYSBiZW5pZ24sIGRlZmVuc2l2ZSBlZmZvcnQuIEdvb2QuCgpOb3csIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7dmUgZ290IHRoZSBkaWZmIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGluY2x1ZGUsIGAmIzM0O2RlYnVnZnNfa2V5LmgmIzM0O2AsIGFuZCBtb2RpZnlpbmcgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBJIHNlZSBpdCYjMzk7cyByZW1vdmluZyBhbmQgc2V0dGluZyBhIGNvdXBsZSBvZiBkZWJ1Z2ZzIHBvaW50ZXJzIChgZGVmYXVsdF91bmljYXN0X2tleWAsIGBkZWZhdWx0X211bHRpY2FzdF9rZXlgKSwgYW5kIHRoZXJlJiMzOTtzIGEgbmV3IGNhbGwgdG8gYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAuIFNvLCBjbGVhcmx5LCB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBkZWZhdWx0IGtleXMgd2l0aGluIHRoZSBtYWM4MDIxMSBkZWJ1Z2ZzIGludGVyZmFjZS4KCkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZGVidWdmc19rZXkuaGAgaXMgYWxsIGFib3V0LiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29kZWJhc2Ugd2l0aCBncmVwIChvciBtYXliZSBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkhKSB0byBzZWUgaG93IHRoZXNlIGtleXMgYXJlIHVzZWQsIHdoYXQgdGhlIHVwZGF0ZSBmdW5jdGlvbiBkb2VzLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBuZXcgY29kZSBwYXRocyBhcmUgaW50cm9kdWNlZC4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSB0aGUga2V5IHVwZGF0ZSwgd2lsbCBiZSBrZXkgdG8gZGVjaWRpbmcgaWYgdGhpcyBvcGVucyB1cCBuZXcgYXJlYXMgZm9yIGZ1enppbmcuIEFyZSB3ZSBzZXR0aW5nIHVwIG5ldyBlbnRyeSBwb2ludHMsIG5ldyBkYXRhIHN0cnVjdHVyZXMsIG5ldyB3YXlzIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbD8gT3IgaXMgdGhpcyBqdXN0IGEgY2xlYW4gdXAgb2YgYSBtZW1vcnkgbGVhaz8gT25seSB0aW1lIHdpbGwgdGVsbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAyOD12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzMi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzM6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM0LVx0XHRcdFx0ICAgICAgIGJvb2wgbWxkX3ZpZilcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaD0xNT12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTY6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNy1cdFx0XHRcdCAgICAgICBib29sIG1sZF92aWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTI4PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTMwLXt9XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDozMTpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMzItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBtbGRfdmlmKVxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM9MTA4PXZvaWQgZHJ2X3JlbW92ZV9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy0xMjQtXHRpZiAoc2RhdGEgIT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVx1MDAzZW1vbml0b3Jfc2RhdGEpKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYzoxMjU6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmMtMTI2LVx0XHRcdFx0XHRcdCAgc2RhdGEtXHUwMDNldmlmLnZhbGlkX2xpbmtzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTc2LVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk3NzpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSwgZmFsc2UpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTk3OC19XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz0yODc9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbGluay5jLTM1Mi1cdGlmICghb2xkX2xpbmtzKVxubmV0L21hYzgwMjExL2xpbmsuYzozNTM6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvbGluay5jLTM1NC1cbi0tXG5uZXQvbWFjODAyMTEvbGluay5jLTM4NC1cdFx0aWYgKCFuZXdfbGlua3MpXG5uZXQvbWFjODAyMTEvbGluay5jOjM4NTpcdFx0XHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZpbGVzLi4uCgoqKkRpdmluZyBpbnRvIG1hYzgwMjExIERlYnVnRlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtYWM4MDIxMWAmIzM5O3MgZGVidWcgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMg4oCTIHNwZWNpZmljYWxseSwgYGRlYnVnZnNfa2V5LmNgIGFuZCBgZGVidWdmc19uZXRkZXYuY2AuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGhvb2sgaW50byB0aGUgZXhpc3RpbmcgZGVidWdmcyBmcmFtZXdvcmsuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBtZWNoYW5pc21zIGFyZSBkZXNpZ25lZCBmb3IgaW5zcGVjdGlvbiBhbmQgcG90ZW50aWFsIG1hbmlwdWxhdGlvbiBvZiB3aXJlbGVzcyBrZXlzIGFuZCBuZXR3b3JrIGRldmljZSBzdGF0ZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGUgZmlsZSBoaWVyYXJjaHksIHRoZSBwZXJtaXNzaW9ucywgYW5kIHRoZSBhY3R1YWwgcmVhZC93cml0ZSBoYW5kbGVycyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZC4gTXkgZXhwZWN0YXRpb24gaXMgdGhlIGZyYW1ld29yayB3aWxsIGFsbG93IGZvciBleGFtaW5hdGlvbiBvZiBrZXkgZGF0YSwgYXNzb2NpYXRpb24gcGFyYW1ldGVycywgYW5kIGRyaXZlci1zcGVjaWZpYyBzdGF0aXN0aWNzLCBhbmQgcHJvYmFibHkgdGhlIGFiaWxpdHkgdG8gZW5hYmxlL2Rpc2FibGUgY2VydGFpbiBkZWJ1Z2dpbmcgZmxhZ3MuIEkmIzM5O2xsIGFsc28gY2hlY2sgaG93IHRoZXNlIGRlYnVnZnMgZW50cmllcyBpbnRlcmFjdCB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlIGFuZCBpdHMgYXNzb2NpYXRlZCBuZXR3b3JrIGRldmljZXMsIGxvb2tpbmcgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5IHVzZSB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVpciBkZWJ1Z2ZzIGVudHJpZXMgaW4gdGhlIGRldmljZSBsaWZlY3ljbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAxMDpcdFx0XHRcdFx0XHRcdFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcbjEwMTE6XHRcdGFkZF9maWxlcyhzZGF0YSk7XG4xMDEyOlx0XHRpZiAoIW1sZF92aWYpXG4xMDEzOlx0XHRcdGFkZF9saW5rX2ZpbGVzKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmssIHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4xMDE0Olx0fVxuMTAxNTpcdFxuMTAxNjpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbjEwMTc6XHR7XG4xMDE4Olx0XHRpZiAoIXNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpcilcbjEwMTk6XHRcdFx0cmV0dXJuO1xuMTAyMDpcdFxuMTAyMTpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4xMDIyOlx0XHRzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xuMTAyMzpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xuMTAyNDpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbjEwMjU6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbjEwMjY6XHR9XG4xMDI3Olx0XG4xMDI4Olx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuMTAyOTpcdHtcbjEwMzA6XHRcdGRlYnVnZnNfY2hhbmdlX25hbWUoc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBcJiMzNDtuZXRkZXY6JXNcJiMzNDssIHNkYXRhLVx1MDAzZW5hbWUpO1xuMTAzMTpcdH1cbjEwMzI6XHRcbjEwMzM6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbjEwMzQ6XHRcdFx0XHRcdCAgICAgICBib29sIG1sZF92aWYpXG4xMDM1Olx0e1xuMTAzNjpcdFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XG4xMDM3Olx0XHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcbjEwMzg6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4xMDM5Olx0XG4xMDQwOlx0XHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbjEwNDE6XHRcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuMTA0MjpcdFx0XHRpZiAoIW1sZF92aWYpXG4xMDQzOlx0XHRcdFx0aWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfYWRkKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmspO1xuMTA0NDpcdFx0fVxuMTA0NTpcdH1cbjEwNDY6XHRcbjEwNDc6XHR2b2lkIGllZWU4MDIxMV9saW5rX2RlYnVnZnNfYWRkKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuMTA0ODpcdHtcbjEwNDk6XHRcdGNoYXIgbGlua19kaXJfbmFtZVsxMF07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIERlYnVnZnMgS2V5IFVwZGF0ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgZnVuY3Rpb24gb3BlcmF0ZXMgYW5kLCBjcnVjaWFsbHksIGhvdyBkZWJ1Z2ZzIGtleSBmaWxlcyBhcmUgYWN0dWFsbHkgZ2VuZXJhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IHdoYXQgaXQmIzM5O3MgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgZGVmYXVsdCB1bmljYXN0IGtleSBpcyBkZWZpbmVkIGFuZCBob3cgdGhpcyB1cGRhdGUgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggaXQuIFRvIGRvIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHRhcmdldGVkIGdyZXAuIEkmIzM5O2xsIGxvb2sgZm9yIGJvdGggYGRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCwgb2YgY291cnNlLCB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgZnVuY3Rpb24gaXRzZWxmLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byB0cmFjZSB0aGUgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJIGV4cGVjdCBJJiMzOTtsbCBiZSBhYmxlIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGZpbGUgcGF0aHMgYW5kIHZhcmlhYmxlcywgdGhlbiBkaXZlIGRlZXBlciBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIHdhcnJhbnQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0fGRlZmF1bHRfdW5pY2FzdF9rZXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz02NTYwPXN0YXRpYyBpbnQgYXRoMTBrX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNjY1MC1cdFx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NjY1MTpcdFx0ICogU3RhdGljIFdFUCBzZXRzIGRlZl93ZXBfa2V5X2lkeCB2aWEgLnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY2NTItXHRcdCAqIGFmdGVyIGZpcnN0IHNldF9rZXkoKS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjY3MTU6c3RhdGljIHZvaWQgYXRoMTBrX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy02NzE2LVx0XHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk0ODYtXHQuc2V0X2tleVx0XHRcdD0gYXRoMTBrX3NldF9rZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk0ODc6XHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgICAgICAgID0gYXRoMTBrX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NDg4LVx0LnN0YV9zdGF0ZVx0XHRcdD0gYXRoMTBrX3N0YV9zdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jPTQxPXZvaWQgaXdsX212bV9pcHY2X2FkZHJfY2hhbmdlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jOjY2OnZvaWQgaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMtNjctXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz02MzUxPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tdm1faHdfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNjQyNi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM6NjQyNzpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IGl3bF9tdm1fc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTY0MjgtI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmM9ODg5PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tdm1fbWxkX2h3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYy05NjMtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYzo5NjQ6XHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmMtOTY1LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oPTIxNDc9dm9pZCBpd2xfbXZtX2lwdjZfYWRkcl9jaGFuZ2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjE0OS1cdFx0XHQgICAgICBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjIxNTA6dm9pZCBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjE1MS1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9MTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyB3Znhfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE0OS1cdC5zZXRfcnRzX3RocmVzaG9sZCAgICAgICA9IHdmeF9zZXRfcnRzX3RocmVzaG9sZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjE1MDpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE1MS1cdC5ic3NfaW5mb19jaGFuZ2VkICAgICAgICA9IHdmeF9ic3NfaW5mb19jaGFuZ2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmM9MjUwPXN0YXRpYyB2b2lkIHdmeF9iZWFjb25fbG9zc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmM6MjYxOnZvaWQgd2Z4X3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuYy0yNjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmg9MjU9aW50IHdmeF9zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmg6MjY6dm9pZCB3Znhfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIGludCBpZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaC0yNy12b2lkIHdmeF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTYwMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHdsMTI3MV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy02MDI5LVx0LnNldF9iaXRyYXRlX21hc2sgPSB3bDEyeHhfc2V0X2JpdHJhdGVfbWFzayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjAzMDpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdsMTI3MV9vcF9zZXRfZGVmYXVsdF9rZXlfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy02MDMxLVx0LmNoYW5uZWxfc3dpdGNoID0gd2wxMnh4X29wX2NoYW5uZWxfc3dpdGNoLFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MzQ2MD12b2lkIGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTM1MTItICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzUxMzogKiBUaGUgc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoKSBjYWxsIHVwZGF0ZXMgdGhlIGRlZmF1bHQgV0VQIGtleSBpbmRleFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTE0LSAqIGNvbmZpZ3VyZWQgdG8gdGhlIGhhcmR3YXJlIGZvciBXRVAgZW5jcnlwdGlvbiB0eXBlLiBUaGlzIGlzIHJlcXVpcmVkXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDY4PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTctICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDIxODogKiBAc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXk6IFNldCB0aGUgZGVmYXVsdCAodW5pY2FzdCkga2V5IGluZGV4LCB1c2VmdWwgZm9yXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTktICpcdFdFUCB3aGVuIHRoZSBkZXZpY2Ugc2VuZHMgZGF0YSBwYWNrZXRzIGF1dG9ub21vdXNseSwgZS5nLiBmb3IgQVJQXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzQyPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MDAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9ndGtfcmVrZXlfZGF0YSAqZGF0YSk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MDE6XHR2b2lkICgqc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODAyLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYz0zNjE9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzY5LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzcwOnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzcxLXtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzktXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODA6XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgxOlx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4Mi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4MzpcdGlmIChzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zODQtXHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6Mzg1Olx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4Ni1cdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODc6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODg6XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X3VuaWNhc3Rfa2V5XCYjMzQ7LFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg5LVx0XHRcdFx0XHQgICAgICAgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oPTc9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC05LXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTE3LXt9XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoxODpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDE2PXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDIzLVx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAyNDpcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDI1LVx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MTEyMz1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEyNDpkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTExMjUtXHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTEzNS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEzNjpcdHRyYWNlX2Rydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShsb2NhbCwgc2RhdGEsIGtleV9pZHgpO1xubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMTM3Olx0aWYgKGxvY2FsLVx1MDAzZW9wcy1cdTAwM2VzZXRfZGVmYXVsdF91bmljYXN0X2tleSlcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEzODpcdFx0bG9jYWwtXHUwMDNlb3BzLVx1MDAzZXNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTExMzktXHRcdFx0XHRcdFx0ICAgIGtleV9pZHgpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNjY9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5Ni1cdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICprZXlzW05VTV9ERUZBVUxUX0tFWVNdO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTE5NzpcdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICpkZWZhdWx0X3VuaWNhc3Rfa2V5O1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5OC1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjU2LVx0XHRzdHJ1Y3QgZGVudHJ5ICpzdWJkaXJfc3RhdGlvbnM7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMjU3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWZhdWx0X3VuaWNhc3Rfa2V5O1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTI1OC1cdFx0c3RydWN0IGRlbnRyeSAqZGVmYXVsdF9tdWx0aWNhc3Rfa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjYtXHRpZiAodW5pKSB7XG5uZXQvbWFjODAyMTEva2V5LmM6MzY3Olx0XHRyY3VfYXNzaWduX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSwga2V5KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjgtXHRcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTM2OS1cdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEva2V5LmM6MzcwOlx0XHRcdGRydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEsIGlkeCk7XG5uZXQvbWFjODAyMTEva2V5LmMtMzcxLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzUtXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzctfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zODg9X19pZWVlODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cbm5ldC9tYWM4MDIxMS9rZXkuYzo0MDI6XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTQwMy19XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTQxND1fX2llZWU4MDIxMV9zZXRfZGVmYXVsdF9iZWFjb25fa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy00MjgtXG5uZXQvbWFjODAyMTEva2V5LmM6NDI5Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy00MzAtfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz00NDA9c3RhdGljIGludCBpZWVlODAyMTFfa2V5X3JlcGxhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTU0OS1cdFx0XHRvbGQgPT0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG5uZXQvbWFjODAyMTEva2V5LmM6NTUwOlx0XHRcdFx0XHRcdCBzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy01NTEtXHRcdGRlZm11bHRpa2V5ID0gb2xkIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQ2Mz12b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNTIzLVx0aWYgKCFrZXkpXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NTI0Olx0XHRrZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNTI1LVx0YnVpbGQuZmFzdF90eC5rZXkgPSBrZXk7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcyMD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjAtXHRpZiAoIWtleSlcbm5ldC9tYWM4MDIxMS9yeC5jOjQ4MjE6XHRcdGtleSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjItXHRpZiAoa2V5KSB7XG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmg9MjE1MT1ERUZJTkVfRVZFTlQobG9jYWxfc2RhdGFfZXZ0LCBkcnZfYWJvcnRfcG1zcixcbi0tXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMTU2LVxubmV0L21hYzgwMjExL3RyYWNlLmg6MjE1NzpUUkFDRV9FVkVOVChkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMTU4LVx0VFBfUFJPVE8oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NTk5PWllZWU4MDIxMV9zZWxlY3Rfa2V5XzgwMjMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02MDgtXHRcdGlmICghdHgtXHUwMDNla2V5KVxubmV0L21hYzgwMjExL3R4LmM6NjA5Olx0XHRcdHR4LVx1MDAzZWtleSA9IHJjdV9kZXJlZmVyZW5jZSh0eC1cdTAwM2VzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS90eC5jLTYxMC1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02MzA9aWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0OS1cdGVsc2UgaWYgKCFpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6NjUwOlx0XHQgKGtleSA9IHJjdV9kZXJlZmVyZW5jZSh0eC1cdTAwM2VzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSkpXG5uZXQvbWFjODAyMTEvdHguYy02NTEtXHRcdHR4LVx1MDAzZWtleSA9IGtleTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDcyPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMjM1LVx0aWYgKCFidWlsZC5rZXkpXG5uZXQvbWFjODAyMTEvdHguYzozMjM2Olx0XHRidWlsZC5rZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XG5uZXQvbWFjODAyMTEvdHguYy0zMjM3LVx0aWYgKGJ1aWxkLmtleSkge1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ4MTU9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdF84MDIzKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDg1Mi1cdFx0aWYgKCFrZXkpXG5uZXQvbWFjODAyMTEvdHguYzo0ODUzOlx0XHRcdGtleSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgIGZvciBEZWZhdWx0IEtleSBVcGRhdGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGZ1bmN0aW9uIG9wZXJhdGVzIHdpdGhpbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggbWFjODAyMTEmIzM5O3Mgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIHNvIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gbWFuYWdpbmcgZGVmYXVsdCBlbmNyeXB0aW9uIGtleXMsIGxpa2VseSB0aHJvdWdoIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZS4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBhY3R1YWwgbWVjaGFuaXNtIG9mIHNldHRpbmcsIHVwZGF0aW5nLCBhbmQgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGRlZmF1bHQga2V5IGNvbmZpZ3VyYXRpb24gdGhhdCB0aGUgd2lyZWxlc3Mgc3RhY2sgdXNlcy4gR2l2ZW4gdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgYGRlYnVnZnNfa2V5LmNgIGZpbGUsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIGRlYnVnZnMgZW50cmllcyAtIGxpa2VseSB0byBleHBvc2Uga2V5IG1hbmlwdWxhdGlvbiB0byBkZXZlbG9wZXJzIGFuZCBkZWJ1Z2dpbmcuCkkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW55IGVycm9yIGhhbmRsaW5nIGl0IGltcGxlbWVudHMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2V5IG1hbmFnZW1lbnQgc3lzdGVtIG9mIG1hYzgwMjExLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGNvbnNpZGVyaW5nIHRoZSBpbnRlcmZhY2UsIGlucHV0IGFuZCBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbi4gR2l2ZW4gbXkgY3VycmVudCBwcm9qZWN0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVkZ2UgY2FzZXMsIHNlY3VyaXR5LCBhbmQgcG9zc2libGUgcmFjZSBjb25kaXRpb25zIHRoYXQgbWF5IGNvbWUgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2NTpcdFxuIDM2NjpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGtleS1cdTAwM2VkZWJ1Z2ZzLmRpcik7XG4gMzY3Olx0XHRrZXktXHUwMDNlZGVidWdmcy5kaXIgPSBOVUxMO1xuIDM2ODpcdH1cbiAzNjk6XHRcbiAzNzA6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiAzNzE6XHR7XG4gMzcyOlx0XHRjaGFyIGJ1Zls1MF07XG4gMzczOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuIDM3NDpcdFxuIDM3NTpcdFx0aWYgKCFzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpXG4gMzc2Olx0XHRcdHJldHVybjtcbiAzNzc6XHRcbiAzNzg6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiAzNzk6XHRcbiAzODA6XHRcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSk7XG4gMzgxOlx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuIDM4MjpcdFxuIDM4MzpcdFx0aWYgKHNkYXRhLVx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpIHtcbiAzODQ6XHRcdFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG4gMzg1Olx0XHRcdFx0XHRcdHNkYXRhLVx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xuIDM4NjpcdFx0XHRzcHJpbnRmKGJ1ZiwgXCYjMzQ7Li4va2V5cy8lZFwmIzM0Oywga2V5LVx1MDAzZWRlYnVnZnMuY250KTtcbiAzODc6XHRcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cbiAzODg6XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFwmIzM0O2RlZmF1bHRfdW5pY2FzdF9rZXlcJiMzNDssXG4gMzg5Olx0XHRcdFx0XHRcdCAgICAgICBzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XG4gMzkwOlx0XHR9XG4gMzkxOlx0XG4gMzkyOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XG4gMzkzOlx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XG4gMzk0Olx0XG4gMzk1Olx0XHRpZiAoc2RhdGEtXHUwMDNlZGVmbGluay5kZWZhdWx0X211bHRpY2FzdF9rZXkpIHtcbiAzOTY6XHRcdFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG4gMzk3Olx0XHRcdFx0XHRcdHNkYXRhLVx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KTtcbiAzOTg6XHRcdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG4gMzk5Olx0XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID1cbiA0MDA6XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFwmIzM0O2RlZmF1bHRfbXVsdGljYXN0X2tleVwmIzM0OyxcbiA0MDE6XHRcdFx0XHRcdFx0ICAgICAgIHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgYnVmKTtcbiA0MDI6XHRcdH1cbiA0MDM6XHR9XG4gNDA0Olx0XG4gNDA1Olx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiA0MDY6XHR7XG4gNDA3Olx0XHRpZiAoIXNkYXRhKVxuIDQwODpcdFx0XHRyZXR1cm47XG4gNDA5Olx0XG4gNDEwOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbWdtdF9rZXkpO1xuIDQxMTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X21nbXRfa2V5ID0gTlVMTDtcbiA0MTI6XHR9XG4gNDEzOlx0XG4gNDE0Olx0dm9pZFxuIDQxNTpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gNDE2Olx0e1xuIDQxNzpcdFx0aWYgKCFzZGF0YSlcbiA0MTg6XHRcdFx0cmV0dXJuO1xuIDQxOTpcdFxuIDQyMDpcdFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkpO1xuIDQyMTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkgPSBOVUxMO1xuIDQyMjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIG1hYzgwMjExIERlYnVnZnMgSXNzdWUqKgoKT2theSwgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIHJlbW92ZXMgdGhlIGVudGlyZSBkZWJ1Z2ZzIGRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBzdGF0aW9uIGRhdGEgKGBzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyYCkgcmVjdXJzaXZlbHkuIFRoZSBjb3JlIHByb2JsZW0gd2FzIHRoYXQsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVycyBpbiBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGlmIHdlIHJlbW92ZWQgdGhlIGRlYnVnZnMgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5LgoKVGhlIHByb2JsZW1hdGljIHNjZW5hcmlvIGFyb3NlIHdoZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgd2FzIGNhbGxlZC4gSXQgd291bGQgY29ycmVjdGx5IHJlbW92ZSB0aGUgb2xkIG5ldGRldiBhbmQgdGhlbiBhZGQgYSBuZXcgb25lLCBidXQgY3J1Y2lhbGx5LCBpdCAqd2FzbiYjMzk7dCogdXBkYXRpbmcgdGhlIGRlZmF1bHQga2V5cy4gVGhpcyBtZWFudCBgZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBkZWZhdWx0X211bHRpY2FzdF9rZXlgIGNvdWxkIGJlY29tZSBzdGFsZSwgcG9pbnRpbmcgdG8gbWVtb3J5IHRoYXQgaGFkIGJlZW4gZnJlZWQsIG9yIGJlIGVudGlyZWx5IGxvc3QgYXMgdGhlIG5ldyBuZXRkZXYgY2FtZSBpbnRvIGV4aXN0ZW5jZS4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAsIHdlIG5vdyBleHBsaWNpdGx5IHNldCBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIHRvIGBOVUxMYC4gVGhpcyBjbGVhbnMgdXAgdGhlIG9sZCBrZXkgcG9pbnRlcnMgb24gcmVtb3ZhbC4gQW5kIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLCB3ZSYjMzk7dmUgYWRkZWQgYSBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpYCBhZnRlciB0aGUgcmVjcmVhdGUgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBrZXlzIGZvciB0aGUgbmV3IG5ldGRldi4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGRlZmF1bHQga2V5cyBhcmUgYWx3YXlzIGtlcHQgY29uc2lzdGVudC4KCk5vdywgYXMgYW4gYXNpZGUsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlYWwtd29ybGQgaW1wbGljYXRpb25zLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGZ1enppbmcuIExldCYjMzk7cyBjb25zaWRlciByZWFjaGFiaWxpdHkuIEdpdmVuIHRoYXQgc3l6a2FsbGVyIGlzIGhlYXZpbHkgZnV6emVkIGJ5IHRoZSBgbWFjODAyMTFfaHdzaW1gIHdoaWNoIGNyZWF0ZXMgdmlydHVhbCBtYWM4MDIxMSBkZXZpY2VzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSBrZXJuZWxzLCB0aGVuIHllcywgbWFjODAyMTEgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIuIFRoYXQmIzM5O3MgZXhjZWxsZW50IG5ld3MuIEdpdmVuIHRoZSBwb3B1bGFyaXR5IG9mIG5sODAyMTEsIG1hYzgwMjExIGlzIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGZ1enplZCBhcmVhcyBpbiBzeXprYWxsZXIuIFRoaXMgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgd2lsbCBiZSBnZXR0aW5nIHRlc3RlZCBhIGxvdC4gQW5kLCBhcyBhIGRvdWJsZS1jaGVjaywgaXQmIzM5O3Mgd29ydGggcmV2aWV3aW5nIHRoZSBLY29uZmlnIHNldHRpbmdzIHRvIGNvbmZpcm0gdGhhdCBkZWJ1Z2ZzIHN1cHBvcnQgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc9MzQ9Q09ORklHX01BQzgwMjExPW1cbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZzozNTpDT05GSUdfTUFDODAyMTFfREVCVUdGUz15XG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWctMzYtQ09ORklHX01URD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoNzlfZGVmY29uZmlnPTI4PUNPTkZJR19NQUM4MDIxMT1tXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc6Mjk6Q09ORklHX01BQzgwMjExX0RFQlVHRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoNzlfZGVmY29uZmlnLTMwLUNPTkZJR19NVEQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Mjg4PUNPTkZJR19NQUM4MDIxMV9MRURTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6Mjg5OkNPTkZJR19NQUM4MDIxMV9ERUJVR0ZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjkwLUNPTkZJR19ORVRfOVA9bVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MjI9YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MjM6YXRoMTBrX2NvcmUtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMjQtYXRoMTBrX2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTUyMz1zdHJ1Y3QgYXRoMTBrX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6NTQ3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ4LVx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2MjQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjYyNS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzdGFfdGlkX3N0YXRzX21hc2tcJiMzNDssIDA2MDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEwLSNlbmRpZiAvKiBDT05GSUdfQVRIMTBLX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDoyMTE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEyLXZvaWQgYXRoMTBrX3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg9MjQ2PXZvaWQgYXRoMTBrX3N0YV91cGRhdGVfcnhfdGlkX3N0YXRzX2FtcGR1KHN0cnVjdCBhdGgxMGsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjI1MjojZW5kaWYgLyogQ09ORklHX01BQzgwMjExX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMGtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNS0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6OTUyNjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNy1cdC5zdGFfYWRkX2RlYnVnZnNcdFx0PSBhdGgxMGtfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0zOD1jb25maWcgQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTU0Mj1zdHJ1Y3QgYXRoMTFrX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmg6NTY2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY3LVx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MzU9Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NTg9Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjEtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYz0yNzkwPXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jOjI4MzU6I2lmIGRlZmluZWQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzYtXHQuc3RhX2FkZF9kZWJ1Z2ZzICAgID0gYXRoOWtfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnPTI3PWNvbmZpZyBDQVJMOTE3MF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RGVidWdGUyBTdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gQ0FSTDkxNzAgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0zMC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYz02MDA9aWwzOTQ1X3JzX2dldF9yYXRlKHZvaWQgKmlsX3IsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHZvaWQgKmlsX3N0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtNzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjc5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy03OTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jPTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy04NjctXHQuZnJlZV9zdGEgPSBpbDM5NDVfcnNfZnJlZV9zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmM6ODY4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jLTg2OS1cdC5hZGRfc3RhX2RlYnVnZnMgPSBpbDM5NDVfYWRkX2RlYnVnZnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jPTIyNjM9aWw0OTY1X3JzX3JhdGVfaW5pdChzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHN0YV9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmMtMjM0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyMzQyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDMtXHRscV9zdGEtXHUwMDNlZGJnX2ZpeGVkX3JhdGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYz0yNDkzPWlsNDk2NV9yc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpbF9scV9zdGEgKmxxX3N0YSwgdTMyICogcmF0ZV9uX2ZsYWdzLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYy0yNDk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jOjI0OTk6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI1MDAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9Mjc2OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfNDk2NV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzctXHQuZnJlZV9zdGEgPSBpbDQ5NjVfcnNfZnJlZV9zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM6Mjc3ODpcdC5hZGRfc3RhX2RlYnVnZnMgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmMtMjc3OS1cdFx0XHRcdCAgaWw0OTY1X3JzX2FkZF9kZWJ1Z2ZzKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnPTkzPWNvbmZpZyBJV0xFR0FDWV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtpd2xlZ2FjeSAoaXdsIDM5NDUvNDk2NSkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBJV0xFR0FDWSBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MTM3PXN0YXRpYyB2b2lkIHJzX3N0YXlfaW5fdGFibGUoc3RydWN0IGl3bF9scV9zdGEgKmxxX3N0YSwgYm9vbCBmb3JjZV9zZWFyY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYzoxNDA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTE0MS1zdGF0aWMgdm9pZCByc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpd2xfbHFfc3RhICpscV9zdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yNDg9c3RhdGljIHU4IHJzX3RsX2FkZF9wYWNrZXQoc3RydWN0IGl3bF9scV9zdGEgKmxxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjI5ODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk5LS8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yNzQwPXZvaWQgaXdsX3JzX3JhdGVfaW5pdChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHN0YV9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTI4MzAtXHRscV9zdGEtXHUwMDNlaXNfYWdnID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6MjgzMTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjgzMi1cdGxxX3N0YS1cdTAwM2VkYmdfZml4ZWRfcmF0ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yOTk2PXN0YXRpYyB2b2lkIHJzX2ZyZWVfc3RhKHZvaWQgKnByaXZfciwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMwMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjMwMDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMwMDctc3RhdGljIHZvaWQgcnNfZGJnZnNfc2V0X21jcyhzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MzI2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMzI3NS1cdC5mcmVlX3N0YSA9IHJzX2ZyZWVfc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYzozMjc2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMjc3LVx0LmFkZF9zdGFfZGVidWdmcyA9IHJzX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmg9MzE5PXN0cnVjdCBpd2xfbHFfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oLTM1Mi1cdHU4IHR4X2FnZ190aWRfZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM1MzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzU0LVx0dTMyIGRiZ19maXhlZF9yYXRlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9NzA1PXZvaWQgaXdsX212bV9yc19hZGRfc3RhX2xpbmsoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM6NzIwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy03MjEtXHRscV9zdGEtXHUwMDNlcGVycy5kYmdfZml4ZWRfcmF0ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0xOTYwPXN0YXRpYyBib29sIHJzX3RwY19wZXJmb3JtKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0xOTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoxOTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0xOTc5LVx0aWYgKGxxX3N0YS1cdTAwM2VwZXJzLmRiZ19maXhlZF90eHBfcmVkdWN0aW9uIFx1MDAzYz0gVFBDX01BWF9SRURVQ1RJT04pIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTI3MjM9c3RhdGljIHZvaWQgKnJzX2Rydl9hbGxvY19zdGEodm9pZCAqbXZtX3JhdGUsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzMzLVx0bHFfc3RhLVx1MDAzZXBlcnMuZHJ2ID0gbXZtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoyNzM0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzM1LVx0bHFfc3RhLVx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzAzNj1zdGF0aWMgdm9pZCBfX2l3bF9tdm1fcnNfdHhfc3RhdHVzKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMDcxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcyLVx0LyogRGlzYWJsZSBsYXN0IHR4IGNoZWNrIGlmIHdlIGFyZSBkZWJ1Z2dpbmcgd2l0aCBmaXhlZCByYXRlIGJ1dFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzI2OT12b2lkIGl3bF9tdm1fcnNfdHhfc3RhdHVzKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMjg0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjg1LXN0YXRpYyB2b2lkIHJzX2J1aWxkX3JhdGVzX3RhYmxlX2Zyb21fZml4ZWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTMzMTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMzIwOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMzIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzUxMD1zdGF0aWMgdm9pZCByc19zZXRfbHFfc3NfcGFyYW1zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNTI3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNTI4LVx0LyogQ2hlY2sgaWYgZm9yY2luZyB0aGUgZGVjaXNpb24gaXMgY29uZmlndXJlZC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM1ODc9c3RhdGljIHZvaWQgcnNfZmlsbF9scV9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM2MDA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM2MDEtXHRpZiAobHFfc3RhLVx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM2NjA9aW50IHJzX3ByZXR0eV9wcmludF9yYXRlX3YxKGNoYXIgKmJ1ZiwgaW50IGJ1ZnN6LCBjb25zdCB1MzIgcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM3MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM3MDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM3MDctLypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTQxMDA9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzX212bV9vcHNfZHJ2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtNDEwOS1cdC5yYXRlX3VwZGF0ZSA9IHJzX2Rydl9yYXRlX3VwZGF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM6NDExMDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtNDExMS1cdC5hZGRfc3RhX2RlYnVnZnMgPSByc19kcnZfYWRkX3N0YV9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MjA4PXN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTIxNC1cdFx0dTMyIHN0YV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg6MjE1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0yMTYtXHRcdC8qKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MzAxPXN0cnVjdCBpd2xfbHFfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTM2MS1cdHN0cnVjdCBscV9zdGFfcGVycyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjM2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtMzYzLVx0XHR1MzIgZGJnX2ZpeGVkX3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEzNzY9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMzg3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzODgtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNS1cdENGRzgwMjExX1RFU1RNT0RFX0RVTVAobXQ3Nl90ZXN0bW9kZV9kdW1wKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MjY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNy1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTYzNz1ib29sIG10NzkxNV9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjYzODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTYzOS12b2lkIG10NzkxNV9zdGFfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk3MS0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTkzLVx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI1OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU5NS1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTkzND1pbnQgbXQ3OTk2X21jdV9zZXRfZW1sc3JfbW9kZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTkzNy1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2VtbF9wYXJhbXMgKmVtbF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6OTM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjUxPWNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTM6XHRkZXBlbmRzIG9uIFJUMlgwMF9MSUIgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjM0Mj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIzNjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzYzLXN0YXRpYyB2b2lkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDI3ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQyOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MjkyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDI5My0jZGVmaW5lIEhXU0lNX0RFQlVHRlNfT1BTXHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yMjMzPXN0cnVjdCBpZWVlODAyMTFfdmlmIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTIyNTMtXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjIyNTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTIyNTUtXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2Rpcjtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDI5Ny0gKlx0ZGlyZWN0b3J5IHdpdGggaXRzIGZpbGVzLiBUaGlzIGNhbGxiYWNrIHNob3VsZCBiZSB3aXRoaW4gYVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0Mjk4OiAqXHRDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyOTktICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDEtICpcdHdoZW4gYSBsaW5rIGlzIGFkZGVkIHRvIGEgbWFjODAyMTEgdmlmLiBUaGlzIGNhbGxiYWNrIHNob3VsZCBiZSB3aXRoaW5cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMwMjogKlx0YSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDMtICpcdEZvciBub24tTUxPIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciB0aGUgZGVmYXVsdCBic3NfY29uZlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMwNy0gKlx0d2hlbiBhIHN0YXRpb24gaXMgYWRkZWQgdG8gbWFjODAyMTEmIzM5O3Mgc3RhdGlvbiBsaXN0LiBUaGlzIGNhbGxiYWNrXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQzMDg6ICpcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzA5LSAqXHRjYWxsYmFjayBjYW4gc2xlZXAuXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzEyLSAqXHR3aGVuIGEgbGluayBpcyBhZGRlZCB0byBhIG1hYzgwMjExIHN0YXRpb24uIFRoaXMgY2FsbGJhY2tcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMxMzogKlx0c2hvdWxkIGJlIHdpdGhpbiBhIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTIGNvbmRpdGlvbmFsLiBUaGlzXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMTQtICpcdGNhbGxiYWNrIGNhbiBzbGVlcC5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQ3NDI9c3RydWN0IGllZWU4MDIxMV9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDgzMC1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0ODMxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODMyLVx0dm9pZCAoKnZpZl9hZGRfZGVidWdmcykoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9Nzk9Y29uZmlnIE1BQzgwMjExX0xFRFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NS1cdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlPTQwPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0xFRFMpICYjNDM7PSBsZWQub1xubmV0L21hYzgwMjExL01ha2VmaWxlOjQxOm1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICYjNDM7PSBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTQyLVx0ZGVidWdmcy5vIFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlPTU5PXJjODAyMTFfbWluc3RyZWwteSA6PSBcXFxuLS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS02MS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo2MjpyYzgwMjExX21pbnN0cmVsLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICYjNDM7PSBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTYzLVx0cmM4MDIxMV9taW5zdHJlbF9odF9kZWJ1Z2ZzLm9cbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6MjojaWZuZGVmIF9fTUFDODAyMTFfREVCVUdGU19IXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oOjM6I2RlZmluZSBfX01BQzgwMjExX0RFQlVHRlNfSFxubmV0L21hYzgwMjExL2RlYnVnZnMuaC00LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtNi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtOC12b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oPTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBkZWJ1Z2ZzX2h3X2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTE2LVxubmV0L21hYzgwMjExL2RlYnVnZnMuaDoxNzojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX0ggKi9cbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoyOiNpZm5kZWYgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC00LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTYtdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfYWRkKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oPTI0PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX2JlYWNvbl9kZWZhdWx0KFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTI4LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6Mjk6I2VuZGlmIC8qIF9fTUFDODAyMTFfREVCVUdGU19LRVlfSCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEyLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNC12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjM6I2RlZmluZSBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTQtXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtNi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC04LXZvaWQgaWVlZTgwMjExX3N0YV9kZWJ1Z2ZzX2FkZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg9MjQ9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9saW5rX3N0YV9kZWJ1Z2ZzX2Rydl9yZW1vdmUoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKSB7fVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTI2LVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg6Mjc6I2VuZGlmIC8qIF9fTUFDODAyMTFfREVCVUdGU19TVEFfSCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9NDc3PXN0YXRpYyBpbmxpbmUgdm9pZCBkcnZfc3RhX3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5NC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6NDk1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC00OTYtc3RhdGljIGlubGluZSB2b2lkIGRydl92aWZfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTEwOD1zdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE2MC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExNjE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMTYyLVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTE2Nj1zdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjUzLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTI1NDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTUtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTcwNi1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzA4LVx0c3RydWN0IGxvY2FsX2RlYnVnZnNkZW50cmllcyB7XG4tLVxubmV0L21hYzgwMjExL2tleS5oPTU5PXN0cnVjdCBpZWVlODAyMTFfa2V5IHtcbi0tXG5uZXQvbWFjODAyMTEva2V5LmgtMTIyLVxubmV0L21hYzgwMjExL2tleS5oOjEyMzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9rZXkuaC0xMjQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmM9MjE1PWllZWU4MDIxMV9yYXRlX2NvbnRyb2xfb3BzX2dldChjb25zdCBjaGFyICpuYW1lKVxuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjQwLVxubmV0L21hYzgwMjExL3JhdGUuYzoyNDE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0Mi1zdGF0aWMgc3NpemVfdCByY25hbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYz0yODA9c3RhdGljIHZvaWQgcmF0ZV9jb250cm9sX2ZyZWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy0yODQtXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjI4NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg2LVx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGxvY2FsLVx1MDAzZWRlYnVnZnMucmNkaXIpO1xuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmg9NTU9c3RhdGljIGlubGluZSB2b2lkIHJhdGVfY29udHJvbF9hZGRfc3RhX2RlYnVnZnMoc3RydWN0IHN0YV9pbmZvICpzdGEpXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTU2LXtcbm5ldC9tYWM4MDIxMS9yYXRlLmg6NTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTU4LVx0c3RydWN0IHJhdGVfY29udHJvbF9yZWYgKnJlZiA9IHN0YS1cdTAwM2VyYXRlX2N0cmw7XG4tLVxubmV0L21hYzgwMjExL3JhdGUuaD02Nz1zdGF0aWMgaW5saW5lIHZvaWQgcmF0ZV9jb250cm9sX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxubmV0L21hYzgwMjExL3JhdGUuaC02OC17XG5uZXQvbWFjODAyMTEvcmF0ZS5oOjY5OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3JhdGUuaC03MC1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNkaXI7XG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xMDU5PW1pbnN0cmVsX2h0X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWluc3RyZWxfcHJpdiAqbXAsIHN0cnVjdCBtaW5zdHJlbF9odF9zdGEgKm1pKVxuLS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4MS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM6MTE4MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4My1cdC8qIHVzZSBmaXhlZCBpbmRleCBpZiBzZXQgKi9cbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE1OTU9bWluc3RyZWxfaHRfZ2V0X3JhdGUodm9pZCAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdm9pZCAqcHJpdl9zdGEsXG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xNjA2LVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxNjA3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xNjA4LVx0aWYgKG1wLVx1MDAzZWZpeGVkX3JhdGVfaWR4ICE9IC0xKVxuLS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM9MTkxNT1taW5zdHJlbF9odF9hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NDgtXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5NDk6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NTAtc3RhdGljIHZvaWQgbWluc3RyZWxfaHRfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHZvaWQgKnByaXYsXG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xOTgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmF0ZV9jb250cm9sX29wcyBtYWM4MDIxMV9taW5zdHJlbF9odCA9IHtcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5OTMtXHQuZnJlZSA9IG1pbnN0cmVsX2h0X2ZyZWUsXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5OTUtXHQuYWRkX2RlYnVnZnMgPSBtaW5zdHJlbF9odF9hZGRfZGVidWdmcyxcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oPTc1PXN0cnVjdCBtaW5zdHJlbF9wcml2IHtcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oLTg1LVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaDo4NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmgtODctXHQvKlxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTUyNj1zdHJ1Y3QgbGlua19zdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc5LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzczLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Nzc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzc1LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjcwMS1cbm5ldC9tYWM4MDIxMS90eC5jOjI3MDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvdHguYy0yNzAzLVx0aWYgKGxvY2FsLVx1MDAzZWZvcmNlX3R4X3N0YXR1cylcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzEzPXZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM3NTktXG5uZXQvbWFjODAyMTEvdHguYzozNzYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3R4LmMtMzc2MS1cdGlmIChsb2NhbC1cdTAwM2Vmb3JjZV90eF9zdGF0dXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBEZWJ1ZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgcmlnaHQgbm93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGVuIHRoaXMgZmlsZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBoYXMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byBoYXBwZW4uIE9mIGNvdXJzZSwgdGhhdCBzZXR0aW5nIGlzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsLCB0b28uIEkmIzM5O20gcHJldHR5IHN1cmUgYE1BQzgwMjExYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUsIGFuZCBJJiMzOTtkIGJldCBgREVCVUdfRlNgIGlzIGludm9sdmVkIGFzIHdlbGwuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgODggYW5kIHNlZSB3aGF0IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYXJlIHRvIGJlIHN1cmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRlYnVnIGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBpbnRlZ3JhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4gIDgxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDgyOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDgzOlx0XHRzZWxlY3QgTEVEU19UUklHR0VSU1xuICA4NDpcdFx0aGVscFxuICA4NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGEgZmV3IExFRCB0cmlnZ2VycyBmb3IgZGlmZmVyZW50XG4gIDg2Olx0XHQgIHBhY2tldCByZWNlaXZlL3RyYW5zbWl0IGV2ZW50cy5cbiAgODc6XHRcbiAgODg6XHRjb25maWcgTUFDODAyMTFfREVCVUdGU1xuICA4OTpcdFx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IENGRzgwMjExX0RFQlVHRlNcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2VsZWN0IHRoaXMgdG8gc2VlIGV4dGVuc2l2ZSBpbmZvcm1hdGlvbiBhYm91dFxuICA5MzpcdFx0ICB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgbWFjODAyMTEgaW4gZGVidWdmcy5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgU2F5IE4gdW5sZXNzIHlvdSBrbm93IHlvdSBuZWVkIHRoaXMuXG4gIDk2Olx0XG4gIDk3Olx0Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xuICA5ODpcdFx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbiAgOTk6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFRSQUNJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NjEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQ0ZHODAyMTFfREVCVUdGUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBzZWUgaWYgYENGRzgwMjExX0RFQlVHRlNgIGlzIGVuYWJsZWQsIG9yIGF0IGxlYXN0IGF2YWlsYWJsZSwgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGlzLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZGVidWcgZmVhdHVyZSBpcyBhIGNyaXRpY2FsIHRvb2wsIHNvIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBjdXJyZW50IHN0YXR1cy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgc3BlY2lmaWMgaXNzdWUgb3IgYSBuZXcgZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiwgYW5kIGtub3dpbmcgaWYgdGhpcyBkZWJ1Z2dpbmcgb3B0aW9uIGlzIGVuYWJsZWQgd2lsbCBhZmZlY3QgbXkgbmV4dCBzdGVwcy4gTmVlZCB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTFfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNTk9Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFyb3VuZCBsaW5lIDE2OS4gVGhhdCBhcmVhIGlzIHVzdWFsbHkgd2hlcmUgdGhleSBkZWZpbmUgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0uIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgYmFzaWMga25vYnMgYW5kIGxldmVycyBpbiB0aGVyZS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGZvdW5kYXRpb25hbCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIEkgY2FuIHN0YXJ0IHRyYWNpbmcgZGVwZW5kZW5jaWVzIGlmIHNvbWV0aGluZyBpc24mIzM5O3Qgd29ya2luZyBhcyBJIGV4cGVjdC4gR3JhYmJpbmcgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gZ28gb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBJZiB0aGlzIGNhdXNlcyB5b3VyIGFwcGxpY2F0aW9ucyB0byBtaXNiZWhhdmUgeW91IHNob3VsZCBmaXggeW91clxuIDE2NjpcdFx0ICBhcHBsaWNhdGlvbnMgaW5zdGVhZCAtLSB0aGV5IG5lZWQgdG8gcmVnaXN0ZXIgdGhlaXIgbmV0d29ya1xuIDE2NzpcdFx0ICBsYXRlbmN5IHJlcXVpcmVtZW50LCBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnJzdC5cbiAxNjg6XHRcbiAxNjk6XHRjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xuIDE3MDpcdFx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbiAxNzE6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAxNzI6XHRcdGhlbHBcbiAxNzM6XHRcdCAgWW91IGNhbiBlbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBkZWJ1Z2ZzIGVudHJpZXMgZm9yIGNmZzgwMjExLlxuIDE3NDpcdFxuIDE3NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NjpcdFxuIDE3NzpcdGNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbiAxNzg6XHRcdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuIDE3OTpcdFx0ZGVmYXVsdCB5XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFlvdSBzaG91bGQgZW5hYmxlIHRoaXMgb3B0aW9uIHVubGVzcyB5b3Uga25vdyBmb3Igc3VyZSB5b3UgaGF2ZSBub1xuIDE4MjpcdFx0ICBuZWVkIGZvciBpdCwgZm9yIGV4YW1wbGUgd2hlbiB1c2luZyB0aGUgcmVndWxhdG9yeSBkYXRhYmFzZSBsb2FkZWQgYXNcbiAxODM6XHRcdCAgYSBmaXJtd2FyZSBmaWxlLlxuIDE4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM2NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzIGZvciBtYWM4MDIxMSBEZWJ1Z2dpbmcgYW5kIEZ1enppbmcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBhbmQgZnV6emluZyB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLiBPYnZpb3VzbHksIHRoYXQmIzM5O3MgcmVsaWFudCBvbiBgTUFDODAyMTFgIOKAkyBtYWtlcyBzZW5zZS4gQW5kIHRoZW4sIGBDRkc4MDIxMV9ERUJVR0ZTYCwgd2hpY2ggdGhhdCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGRlcGVuZHMgb24sIGl0c2VsZiBkZXBlbmRzIG9uIGBERUJVR19GU2AuIEdvdCBpdC4gVGhhdCBlc3RhYmxpc2hlcyB0aGUgZGVidWdnaW5nIHNpZGUuCgpOb3csIGZvciBmdXp6aW5nLCBJJiMzOTt2ZSBnb3QgYSBjb3VwbGUgb2Ygb3B0aW9uczogYE1BQzgwMjExX0hXU0lNYCBvciBgTkw4MDIxMWAuIEkmIzM5O2xsIHByb2JhYmx5IHdhbnQgdG8gaW52ZXN0aWdhdGUgdGhvc2UgZnVydGhlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExX0hXU0lNYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWaXJ0dWFsIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB2aXJ0dWFsIHdpcmVsZXNzIHNldHVwIGluIHRoaXMga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSB0ZXh0IG1lbnRpb25zIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBSaWdodCwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHN1YnN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgS2NvbmZpZ2Agbm93IHRvIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoaXMgYWxsIHBpZWNlcyB0b2dldGhlci4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzE1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEZWJ1Z2ZzIGFuZCBtYWM4MDIxMSBJbnRlcmFjdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBJJiMzOTttIHN0YXJ0aW5nIHdpdGggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0NGRzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0RFQlVHX0ZTYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gLiBUaGVzZSBwb2ludCBkaXJlY3RseSB0byB0aGUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBpdHMgZGVidWcgaW50ZXJmYWNlLCB3aGljaCBtZWFucyBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgYXQgY2hhbmdlcyByZWxhdGVkIHRvIGRlYnVnZ2luZyBhbmQgbW9uaXRvcmluZyB0aGUgd2lyZWxlc3MgbmV0d29yayBpbnRlcmZhY2UuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgaGFzIGJlZW4gdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb25zIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4KCkxvb2tpbmcgYXQgdGhlIGNhbGwgZ3JhcGgsIEkgc2VlIHRoYXQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIGlzIGNhbGxlZCBpbiBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX2RlbF92aXJ0dWFsX21vbml0b3JgLCBgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhYCwgYW5kIGV2ZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaXRzZWxmLCBzdWdnZXN0aW5nIGEgY2xlYW51cCBvciByZW1vdmFsIHByb2Nlc3MuIE1lYW53aGlsZSwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZ2V0cyBjYWxsZWQgYnkgYGRydl9yZW1vdmVfaW50ZXJmYWNlYCwgYGllZWU4MDIxMV9zZXR1cF9zZGF0YWAsIGFuZCBgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3NgLiBTbywgdGhlc2UgZnVuY3Rpb25zIGxpa2VseSBkZWFsIHdpdGggcmVtb3ZpbmcgYW5kIHJlY3JlYXRpbmcgdGhlIGRlYnVnZnMgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggYSBuZXR3b3JrIGRldmljZS4gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX2RlbF92aXJ0dWFsX21vbml0b3JgLCBgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhYCwgYGllZWU4MDIxMV9zZXR1cF9zZGF0YWAsIGFuZCBgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3NgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZGVidWdmcyBpbnRlcmFjdGlvbnMgYXJlIHRyaWdnZXJlZC4gSSBhbSBhbHNvIGF3YXJlIHRoYXQgdGhlIGBkZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGUgYGRlYnVnZnNfcmVtb3ZlX25ldGRldmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjYWxscyBhbmQgdGhlIHByZXNlbmNlIG9mIGByZW1vdmVgIGFuZCBgcmVjcmVhdGVgIGluIHRoZSBmdW5jdGlvbiBuYW1lcywgSSB0aGluayB0aGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG86CiogICBJbnRlcmZhY2UgcmVtb3ZhbCBhbmQgY3JlYXRpb24KKiAgIFZpcnR1YWwgaW50ZXJmYWNlIG1hbmFnZW1lbnQKKiAgIFN0YXRpb24gZGF0YSB0ZWFyZG93biBhbmQgc2V0dXAKClNpbmNlIEkgbmVlZCBhIGJyb2FkZXIgdmlldywgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlYmFzZSBmb3IgYWxsIGNhbGxzIHRvIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YC4gSSB3YW50IHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGNyaXRpY2FsIGxvY2F0aW9uLiBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz05OTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE1LVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAxNjp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE3LXtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDMzPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMzUte1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEzLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTQ6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTE1LXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg9MjM9dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2Rydl9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMjQtI2Vsc2Vcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05MDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTkwNy1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjkwODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtOTA5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTE0MwoJCQkJCQkJb3V0cHV0OiAyNTMKCQkJCQkJCXRob3VnaHRzOiA5MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IG1hYzgwMjExIERlYnVnZnMgRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCwgYW5kIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLCBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nLiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaGFuZGxlcyByZW1vdmFsIG9mIGRlYnVnZnMgZW50cmllcyB3aGVuIHRoZSBzZGF0YSBpcyBkZXN0cm95ZWQgb3IgdXBkYXRlZCwgb3IgdGhlIGRlYnVnZnMgaXMgcmVjcmVhdGVkLiBDb252ZXJzZWx5LCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgb24gc2RhdGEgc2V0dXAsIGludGVyZmFjZSByZW1vdmFsLCBvciBsaW5rIHVwZGF0ZXMuIEkmIzM5O20gbm90aW5nIHRoYXQgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgZGlyZWN0bHkgY2FsbGVkIHdpdGhpbiB0aGUgcmVjcmVhdGUgZnVuY3Rpb24uCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSwgYW5kIGhlcmUsIHRoaW5ncyBsb29rIHByb21pc2luZy4gVGhpcyBpcyB3aXRoaW4gYG1hYzgwMjExYCwgd2hpY2ggaXMgY29yZSwgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCBzdGFuZGFyZCBgbmw4MDIxMWAgbmV0bGluayBjb21tYW5kcy4gVGhpcyBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldCBmb3IgU3l6a2FsbGVyIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBvZmZlcnMgYSB2aXJ0dWFsIGRldmljZSB0byBtaW1pYyByZWFsIGhhcmR3YXJlIGZ1cnRoZXIgc3RyZW5ndGhlbnMgdGhpcyBhcmd1bWVudC4gVGhpcyBpc24mIzM5O3QgdGllZCB0byBhbnkgc3BlY2lmaWMgdmVuZG9yJiMzOTtzIGhhcmR3YXJlIGFuZCBpc24mIzM5O3QganVzdCBhYm91dCB1bnBsdWdnYWJsZSBoYXJkd2FyZSB0ZWFyZG93biwgYnV0IHN0YW5kYXJkIHJ1bnRpbWUgb3BlcmF0aW9ucyBvbiB0aGUgaW50ZXJmYWNlIGxldmVsLiBXb3J0aEZ1enppbmcgaXMgYSBkZWZpbml0ZSB5ZXMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOgoqICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgCiogICBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YAoqICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAKCkFuZCBpdCYjMzk7cyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgIGFuZCBJIGtub3cgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgY2FsbGVkIGluc2lkZSBpdC4KCkZvciBjb25maWd1cmF0aW9ucywgdGhpcyBuZWVkcyBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuIExldCBtZSB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llczogYE1BQzgwMjExX0RFQlVHRlNgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExX0RFQlVHRlNgIGFuZCBgQ0ZHODAyMTFfREVCVUdGU2AgZGVwZW5kcyBvbiBgREVCVUdfRlNgLgoKU28sIHRvIHN1bW1hcml6ZSBzdWNjaW5jdGx5OgoKMS4gIFRoaXMgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBlbnRyeSBoYW5kbGluZywgcmVzZXR0aW5nIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gTlVMTCBkdXJpbmcgbmV0ZGV2IGRlYnVnZnMgcmVtb3ZhbCBhbmQgdXBkYXRpbmcga2V5IHN5bWxpbmtzIGR1cmluZyBuZXRkZXYgZGVidWdmcyByZWNyZWF0aW9uLgoyLiAgSXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMgKGludGVyZmFjZSBjcmVhdGlvbiwgbW9kaWZpY2F0aW9uLCBkZWxldGlvbikgYW5kIHNpbXVsYXRhYmxlIHZpYSBgbWFjODAyMTFfaHdzaW1gLgozLiAgRnV6emluZyBwcmV2ZW50cyBhbmQgdGVzdHMgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcmVmZXJlbmNlcyBhbmQgc3RhdGUgaXNzdWVzIHdpdGggaW50ZXJmYWNlL2xpbmsgcmVjcmVhdGlvbiBhbmQga2V5IGNvbmZpZ3VyYXRpb24uCjQuICBGb2N1cyBzeW1ib2xzIGFyZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAsIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAuCjUuICBSZXF1aXJlZCBjb25maWdzIGFyZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSYjMzk7cyBkZWJ1Z2ZzIG5ldGRldiBoYW5kbGluZyBieSBwcm9wZXJseSBjbGVhcmluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIHBvaW50ZXJzIHVwb24gcmVtb3ZhbCAoaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldikgYW5kIHJlYnVpbGRpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBsaW5rcyB1cG9uIGludGVyZmFjZSByZWNyZWF0aW9uIChpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzLiBGdXp6aW5nIGhlbHBzIGVuc3VyZSB0aGF0IGludGVyZmFjZSBzZXR1cCwgbGluayB1cGRhdGVzLCBhbmQga2V5IHVwZGF0ZXMgZG8gbm90IHByb2R1Y2Ugc3RhbGUgb3IgZGFuZ2xpbmcgZGVudHJ5IHJlZmVyZW5jZXMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjODAyMTEmIzM5O3MgZGVidWdmcyBuZXRkZXYgaGFuZGxpbmcgYnkgcHJvcGVybHkgY2xlYXJpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBwb2ludGVycyB1cG9uIHJlbW92YWwgKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYpIGFuZCByZWJ1aWxkaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgbGlua3MgdXBvbiBpbnRlcmZhY2UgcmVjcmVhdGlvbiAoaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbmV0bGluayBjb21tYW5kcy4gRnV6emluZyBoZWxwcyBlbnN1cmUgdGhhdCBpbnRlcmZhY2Ugc2V0dXAsIGxpbmsgdXBkYXRlcywgYW5kIGtleSB1cGRhdGVzIGRvIG5vdCBwcm9kdWNlIHN0YWxlIG9yIGRhbmdsaW5nIGRlbnRyeSByZWZlcmVuY2VzIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBACiAjaW5jbHVkZSAmIzM0O2llZWU4MDIxMV9pLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyYXRlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Z2ZzLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7ZGVidWdmc19rZXkuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RlYnVnZnNfbmV0ZGV2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcml2ZXItb3BzLmgmIzM0OwogCkBAIC0xMDIwLDYgJiM0MzsxMDIxLDggQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKQogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyKTsKIAlzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyID0gTlVMTDsKIAlzZGF0YS0mZ3Q7ZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMOwomIzQzOwlzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDsKJiM0MzsJc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDsKIH0KIAogdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKQpAQCAtMTAzMiw2ICYjNDM7MTAzNSw3IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogewogCWllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpOwogCWllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpOwomIzQzOwlpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpOwogCiAJaWYgKHNkYXRhLSZndDtmbGFncyAmYW1wOyBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7CiAJCWRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtJmd0O2xvY2FsLCBzZGF0YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoIGZvciBNZW1vcnkgU2FmZXR5IENvbmNlcm5zKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZsYWcgaXQgZm9yIEtNU0FOIG9yIEtBU0FOIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXRpZXMuCgpTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW4gYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jYC4gVGhlIGRpZmYgaW50cm9kdWNlcyBhbiBpbmNsdWRlIGZvciBgZGVidWdmc19rZXkuaGAgYW5kIHVwZGF0ZXMgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBUaGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIGZ1bmN0aW9uIG5vdyBjbGVhcnMgdGhlIHBvaW50ZXJzIHRvIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAsIGFuZCB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb24gaGFzIGEgY2FsbCB0byBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YC4KCk15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IG1hbmFnaW5nIHRoZXNlIGtleSBwb2ludGVycyBhbmQgYW55IGFzc29jaWF0ZWQga2V5IGRhdGEgbWF5IGJlIHRoZSBhcmVhIG9mIGZvY3VzLCBhbmQgaXMgd29ydGggYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uLiBUaW1lIHRvIGVtcGxveSBzb21lIGdyZXBwaW5nIGFuZCBmaWxlIHJlYWRpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBhZGRlZCBmZWF0dXJlcy4gRnJvbSBoZXJlLCBJIHdpbGwgYXNzZXNzIHdoZXRoZXIgdGhlIG5ldyBvciBtb2RpZmllZCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM9MzYxPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM2OS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM3MDp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM3MS17XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDo4OnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTktdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTcte31cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xOS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzUtXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzctfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zODg9X19pZWVlODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cbm5ldC9tYWM4MDIxMS9rZXkuYzo0MDI6XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTQwMy19XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTQxND1fX2llZWU4MDIxMV9zZXRfZGVmYXVsdF9iZWFjb25fa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy00MjgtXG5uZXQvbWFjODAyMTEva2V5LmM6NDI5Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy00MzAtfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBkZWJ1Z2ZzX2tleS5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMzcwLCBnaXZlIG9yIHRha2UgYSBmZXcgYXJvdW5kIGl0LiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoYXQgc2VjdGlvbiBvZiB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0aGF0IGFyZWEgdG8gYmUgcmVsYXRlZCB0by4uLiB3ZWxsLCBnaXZlbiB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgY29udGV4dCBvZiBtYWM4MDIxMSwgcHJvYmFibHkgc29tZXRoaW5nIHRvIGRvIHdpdGgga2V5IGhhbmRsaW5nIG9yIGRlYnVnIG91dHB1dCByZWxhdGluZyB0byBrZXlzLCBwb3RlbnRpYWxseSBrZXkgbWFuYWdlbWVudCBvciBpbmplY3Rpb24gb2Yga2V5IG1hdGVyaWFsIHRocm91Z2ggZGVidWdmcy4gSSBiZXQgSSYjMzk7bGwgZmluZCBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB3b3JrIGZyb20uIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzYwOlx0XG4gMzYxOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4gMzYyOlx0e1xuIDM2MzpcdFx0aWYgKCFrZXkpXG4gMzY0Olx0XHRcdHJldHVybjtcbiAzNjU6XHRcbiAzNjY6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShrZXktXHUwMDNlZGVidWdmcy5kaXIpO1xuIDM2NzpcdFx0a2V5LVx1MDAzZWRlYnVnZnMuZGlyID0gTlVMTDtcbiAzNjg6XHR9XG4gMzY5Olx0XG4gMzcwOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gMzcxOlx0e1xuIDM3MjpcdFx0Y2hhciBidWZbNTBdO1xuIDM3MzpcdFx0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcbiAzNzQ6XHRcbiAzNzU6XHRcdGlmICghc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxuIDM3NjpcdFx0XHRyZXR1cm47XG4gMzc3Olx0XG4gMzc4Olx0XHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gMzc5Olx0XG4gMzgwOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xuIDM4MTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbiAzODI6XHRcbiAzODM6XHRcdGlmIChzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XG4gMzg0Olx0XHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxuIDM4NTpcdFx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbiAzODY6XHRcdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG4gMzg3Olx0XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XG4gMzg4Olx0XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X3VuaWNhc3Rfa2V5XCYjMzQ7LFxuIDM4OTpcdFx0XHRcdFx0XHQgICAgICAgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xuIDM5MDpcdFx0fVxuIDM5MTpcdFxuIDM5MjpcdFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkpO1xuIDM5MzpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuIDM5NDpcdFxuIDM5NTpcdFx0aWYgKHNkYXRhLVx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB7XG4gMzk2Olx0XHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxuIDM5NzpcdFx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XG4gMzk4Olx0XHRcdHNwcmludGYoYnVmLCBcJiMzNDsuLi9rZXlzLyVkXCYjMzQ7LCBrZXktXHUwMDNlZGVidWdmcy5jbnQpO1xuIDM5OTpcdFx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9XG4gNDAwOlx0XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X211bHRpY2FzdF9rZXlcJiMzNDssXG4gNDAxOlx0XHRcdFx0XHRcdCAgICAgICBzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XG4gNDAyOlx0XHR9XG4gNDAzOlx0fVxuIDQwNDpcdFxuIDQwNTpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gNDA2Olx0e1xuIDQwNzpcdFx0aWYgKCFzZGF0YSlcbiA0MDg6XHRcdFx0cmV0dXJuO1xuIDQwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgdGhlIG1hYzgwMjExIE5ldHdvcmsgRGV2aWNlIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIGFuZCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBzcGVjaWZpYyBoYXBwZW5pbmcgcmVsYXRlZCB0byBob3cgdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGhhbmRsZWQgYXQgYSBsb3dlciBsZXZlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIGxpbmVzIDEwMTAgdG8gMTA1MCwgYXMgdGhhdCBhcmVhIG9mdGVuIGhhbmRsZXMgaW1wb3J0YW50IG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQsIG1heWJlIHRoZXJlIGlzIHNvbWV0aGluZyBvZmYgYWJvdXQgdGhlIGRlYnVnZ2luZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIHRoZSBuZXR3b3JrIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoYXQgc2VjdGlvbiBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gSG9wZWZ1bGx5LCB0aGlzIGRldGFpbGVkIGxvb2sgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMTU6XHRcbjEwMTY6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4xMDE3Olx0e1xuMTAxODpcdFx0aWYgKCFzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpXG4xMDE5Olx0XHRcdHJldHVybjtcbjEwMjA6XHRcbjEwMjE6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpO1xuMTAyMjpcdFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcbjEwMjM6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcbjEwMjQ6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XG4xMDI1Olx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XG4xMDI2Olx0fVxuMTAyNzpcdFxuMTAyODpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbjEwMjk6XHR7XG4xMDMwOlx0XHRkZWJ1Z2ZzX2NoYW5nZV9uYW1lKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgXCYjMzQ7bmV0ZGV2OiVzXCYjMzQ7LCBzZGF0YS1cdTAwM2VuYW1lKTtcbjEwMzE6XHR9XG4xMDMyOlx0XG4xMDMzOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4xMDM0Olx0XHRcdFx0XHQgICAgICAgYm9vbCBtbGRfdmlmKVxuMTAzNTpcdHtcbjEwMzY6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xuMTAzNzpcdFx0aWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzZGF0YSwgbWxkX3ZpZik7XG4xMDM4Olx0XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xuMTAzOTpcdFxuMTA0MDpcdFx0aWYgKHNkYXRhLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XG4xMDQxOlx0XHRcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhKTtcbjEwNDI6XHRcdFx0aWYgKCFtbGRfdmlmKVxuMTA0MzpcdFx0XHRcdGllZWU4MDIxMV9saW5rX2RlYnVnZnNfZHJ2X2FkZChcdTAwMjZzZGF0YS1cdTAwM2VkZWZsaW5rKTtcbjEwNDQ6XHRcdH1cbjEwNDU6XHR9XG4xMDQ2Olx0XG4xMDQ3Olx0dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbjEwNDg6XHR7XG4xMDQ5Olx0XHRjaGFyIGxpbmtfZGlyX25hbWVbMTBdO1xuMTA1MDpcdFxuMTA1MTpcdFx0aWYgKFdBUk5fT04oIWxpbmstXHUwMDNlc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyIHx8IGxpbmstXHUwMDNlZGVidWdmc19kaXIpKVxuMTA1MjpcdFx0XHRyZXR1cm47XG4xMDUzOlx0XG4xMDU0Olx0XHQvKiBGb3Igbm93LCB0aGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBub24tTUxPIGNhcGFibGUgZHJpdmVycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTExCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDYwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRGVidWdmcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCBmaXhpbmcgYSBwcmV0dHkgbmFzdHkgYnVnIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBkZWJ1Z2ZzIGVudHJpZXMsIHNwZWNpZmljYWxseSB3aGVuIGEgbmV0d29yayBkZXZpY2UgaXMgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3aGljaCBjYWxscyBgZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlYCBvbiB0aGUgbmV0ZGV2JiMzOTtzIGRlYnVnZnMgZGlyZWN0b3J5LiAgVGhpcyByZWN1cnNpdmUgcmVtb3ZhbCBsZWFkcyB0byBzdGFsZSBwb2ludGVycy4gU3BlY2lmaWNhbGx5LCB0aGUgZGVudHJpZXMgcG9pbnRlZCB0byBieSBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGFyZSBnZXR0aW5nIGZyZWVkLiAgTGF0ZXIsIGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGNvdWxkIHRyeSB0byBvcGVyYXRlIG9uIHRoZXNlIG5vdy1pbnZhbGlkIHBvaW50ZXJzLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIGEgZG91YmxlLWZyZWUgaWYgd2UmIzM5O3JlIG5vdCBjYXJlZnVsLiAgQWx0ZXJuYXRpdmVseSwgd2hlbiB3ZSByZWNyZWF0ZSB0aGUgbmV0ZGV2JiMzOTtzIGRlYnVnZnMsIHRoZSBkZWZhdWx0IGtleSBzeW1saW5rcyBhcmVuJiMzOTt0IHJlLWVzdGFibGlzaGVkIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogd2Ugc2V0IGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLSZndDtkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gYE5VTExgIGR1cmluZyBuZXRkZXYgcmVtb3ZhbC4gVGhlbiwgZHVyaW5nIHRoZSByZWNyZWF0aW9uIG9mIHRoZSBuZXRkZXYmIzM5O3MgZGVidWdmcywgd2UgY2FsbCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKWAgdG8gZW5zdXJlIHRoZSBzeW1saW5rcyBhcmUgY29ycmVjdGx5IHJlY3JlYXRlZC4gVGhpcyBmaXhlcyB0aGUgc3RhbGUgcG9pbnRlciBpc3N1ZSBhbmQgcmVzdG9yZXMgdGhlIGRlZmF1bHQga2V5IHN5bWxpbmtzIGNvcnJlY3RseS4KCk5vdywgYWJvdXQgbWVtb3J5IHNhZmV0eS4gIEkmIzM5O3ZlIGNoZWNrZWQgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgVGhlcmUmIzM5O3Mgbm8gc3RydWN0dXJlIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQmIzM5O3MgZ29vZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFsbG9jYXRpb25zIGhhcHBlbmluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBzZXRzIHRob3NlIGtleSBwb2ludGVycyB0byBgTlVMTGAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCB1c2VzIGBzcHJpbnRmYCB3aXRoIGFuIGluaXRpYWxpemVkIHN0cmluZyBidWZmZXIgZm9yIHRoZSBzeW1saW5rIGNyZWF0aW9uLiAgVGhlIGNvcmUgbWVtb3J5IGJ1Z3MgKFVBRiwgZG91YmxlLWZyZWUpIGFyZSB0aGluZ3MgdGhhdCBLQVNBTiB3aWxsIGNhdGNoLgoKU28sIGdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyAqbm90KiBhIEtNU0FOIGlzc3VlLiBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCBteSB3b3JrLiBMZXQgbWUgcnVuIHRocm91Z2ggdGhlIHVzdWFsIEtNU0FOIGNyaXRlcmlhOgoKMS4gIEtlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlciBzcGFjZT8gTm8uCjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCjMuICBBbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLgo0LiAgQm91bmRzIGNoZWNrcy9sZW5ndGhzIGdpdmluZyBhY2Nlc3MgdG8gdW5pbml0IG1lbW9yeT8gTm8uCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBidWcgZml4IHRoYXQgYWRkcmVzc2VzIGRhbmdsaW5nIGRlYnVnZnMgcG9pbnRlcnMgYW5kIG1pc3Npbmcgc3ltbGlua3MuICBLQVNBTiBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSByZW1haW5pbmcgbWVtb3J5IGVycm9ycy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZGVidWdmcyBsaWZldGltZSBtYW5hZ2VtZW50IGluIG1hYzgwMjExIGJ5IHplcm9pbmcgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcG9pbnRlcnMgKGRlZmF1bHRfdW5pY2FzdF9rZXkgYW5kIGRlZmF1bHRfbXVsdGljYXN0X2tleSkgdXBvbiBpbnRlcmZhY2UgZGVidWdmcyByZW1vdmFsIGFuZCByZS1jcmVhdGluZyBkZWZhdWx0IGtleSBzeW1saW5rcyBkdXJpbmcgaW50ZXJmYWNlIGRlYnVnZnMgcmVjcmVhdGlvbi4gXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcyAoZS5nLiwgdmlhIGNvcHlfdG9fdXNlciBvciBuZXRsaW5rKS4gQW55IHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgcmVsYXRlZCB0byBzdGFsZSBkZWJ1Z2ZzIGRlbnRyaWVzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBhbmQgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MDkuMzg2NTgxMjA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwOTU4NDA0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcyAoZS5nLiwgdmlhIGNvcHlfdG9fdXNlciBvciBuZXRsaW5rKS4gQW55IHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgcmVsYXRlZCB0byBzdGFsZSBkZWJ1Z2ZzIGRlbnRyaWVzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBhbmQgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjA5LjM4NjU4NjE0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MzY5ODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFlNDhhYzg5MGRiMDU1OGMxMTRhNWQ2ZTJlNDhlM2Q1ZTNjZGRlNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXFxuaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXFxuQEAgLTIwLDYgKzIwLDcgQEBcXG4gI2luY2x1ZGUgXFxcImllZWU4MDIxMV9pLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJyYXRlLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkZWJ1Z2ZzLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJkZWJ1Z2ZzX2tleS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZGVidWdmc19uZXRkZXYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRyaXZlci1vcHMuaFxcXCJcXG4gXFxuQEAgLTEwMjAsNiArMTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpO1xcbiBcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcXG4gXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG4rXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XFxuK1xcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XFxuIH1cXG4gXFxuIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5AQCAtMTAzMiw2ICsxMDM1LDcgQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIHtcXG4gXFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxuIFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbitcXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xcbiBcXG4gXFx0aWYgKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcXG4gXFx0XFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cXHUwMDNlbG9jYWwsIHNkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MTAuODcwOTk0NDk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2MzMyMTI4NzkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiLFxuICAgIFwiQ0ZHODAyMTFfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZcIixcbiAgICBcImllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hYzgwMjExJ3MgZGVidWdmcyBuZXRkZXYgaGFuZGxpbmcgYnkgcHJvcGVybHkgY2xlYXJpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBwb2ludGVycyB1cG9uIHJlbW92YWwgKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYpIGFuZCByZWJ1aWxkaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgbGlua3MgdXBvbiBpbnRlcmZhY2UgcmVjcmVhdGlvbiAoaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbmV0bGluayBjb21tYW5kcy4gRnV6emluZyBoZWxwcyBlbnN1cmUgdGhhdCBpbnRlcmZhY2Ugc2V0dXAsIGxpbmsgdXBkYXRlcywgYW5kIGtleSB1cGRhdGVzIGRvIG5vdCBwcm9kdWNlIHN0YWxlIG9yIGRhbmdsaW5nIGRlbnRyeSByZWZlcmVuY2VzIG9yIHJhY2UgY29uZGl0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbmluZGV4IGYzYzZhNDFlNDkxMTkuLmEwMGIwNzc2ZmRiMWQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbkBAIC0yMCw2ICsyMCw3IEBAXG4gI2luY2x1ZGUgXCJpZWVlODAyMTFfaS5oXCJcbiAjaW5jbHVkZSBcInJhdGUuaFwiXG4gI2luY2x1ZGUgXCJkZWJ1Z2ZzLmhcIlxuKyNpbmNsdWRlIFwiZGVidWdmc19rZXkuaFwiXG4gI2luY2x1ZGUgXCJkZWJ1Z2ZzX25ldGRldi5oXCJcbiAjaW5jbHVkZSBcImRyaXZlci1vcHMuaFwiXG4gXG5AQCAtMTAyMCw2ICsxMDIxLDggQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4gXHRzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xuIFx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xuK1x0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbitcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbiB9XG4gXG4gdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuQEAgLTEwMzIsNiArMTAzNSw3IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIHtcbiBcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xuIFx0aWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzZGF0YSwgbWxkX3ZpZik7XG4rXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xuIFxuIFx0aWYgKHNkYXRhLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XG4gXHRcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjEwLjg3MTAwMDczOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MTA3NTA5MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3VpdGFiaWxpdHkgRXZhbHVhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZWNpZGUgaWYgaXQncyB3b3J0aCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZG8gYSBxdWljayByaXNrIGFzc2Vzc21lbnQuIFRoaXMgaXMgYSBRQS90cmlhZ2UgdGFzaywgZXZhbHVhdGluZyBhIExpbnV4IGtlcm5lbCBwYXRjaC4gU2VlbXMgbGlrZSBhIGJlbmlnbiwgZGVmZW5zaXZlIGVmZm9ydC4gR29vZC5cblxuTm93LCBJJ2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSd2ZSBnb3QgdGhlIGRpZmYgaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgbmV3IGluY2x1ZGUsIGBcImRlYnVnZnNfa2V5LmhcImAsIGFuZCBtb2RpZnlpbmcgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBJIHNlZSBpdCdzIHJlbW92aW5nIGFuZCBzZXR0aW5nIGEgY291cGxlIG9mIGRlYnVnZnMgcG9pbnRlcnMgKGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCwgYGRlZmF1bHRfbXVsdGljYXN0X2tleWApLCBhbmQgdGhlcmUncyBhIG5ldyBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLiBTbywgY2xlYXJseSwgdGhpcyBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggZGVmYXVsdCBrZXlzIHdpdGhpbiB0aGUgbWFjODAyMTEgZGVidWdmcyBpbnRlcmZhY2UuXG5cbkknbGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBkZWJ1Z2ZzX2tleS5oYCBpcyBhbGwgYWJvdXQuIEknbGwgbmVlZCB0byBzZWFyY2ggdGhlIGNvZGViYXNlIHdpdGggZ3JlcCAob3IgbWF5YmUganVzdCByZWFkIHRoZSBmaWxlIGRpcmVjdGx5ISkgdG8gc2VlIGhvdyB0aGVzZSBrZXlzIGFyZSB1c2VkLCB3aGF0IHRoZSB1cGRhdGUgZnVuY3Rpb24gZG9lcywgYW5kIHdoZXJlIHRoZSBwb3RlbnRpYWwgbmV3IGNvZGUgcGF0aHMgYXJlIGludHJvZHVjZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgdGhlIGtleSB1cGRhdGUsIHdpbGwgYmUga2V5IHRvIGRlY2lkaW5nIGlmIHRoaXMgb3BlbnMgdXAgbmV3IGFyZWFzIGZvciBmdXp6aW5nLiBBcmUgd2Ugc2V0dGluZyB1cCBuZXcgZW50cnkgcG9pbnRzLCBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBuZXcgd2F5cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWw/IE9yIGlzIHRoaXMganVzdCBhIGNsZWFuIHVwIG9mIGEgbWVtb3J5IGxlYWs/IE9ubHkgdGltZSB3aWxsIHRlbGwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNToyNC45Nzg1MTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3NDIzOTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAyOD12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDMyLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzM6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNC1cXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg9MTU9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDoxNjp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNy1cXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTI4PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMzAte31cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDozMTpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTMyLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIG1sZF92aWYpXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jPTEwOD12b2lkIGRydl9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy0xMjQtXFx0aWYgKHNkYXRhICE9IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cXHUwMDNlbW9uaXRvcl9zZGF0YSkpXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYzoxMjU6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHNkYXRhLFxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgc2RhdGEtXFx1MDAzZXZpZi52YWxpZF9saW5rcyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NzYtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk3NzpcXHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTc4LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM9Mjg3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jLTM1Mi1cXHRpZiAoIW9sZF9saW5rcylcXG5uZXQvbWFjODAyMTEvbGluay5jOjM1MzpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzU0LVxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0zODQtXFx0XFx0aWYgKCFuZXdfbGlua3MpXFxubmV0L21hYzgwMjExL2xpbmsuYzozODU6XFx0XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHNkYXRhLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2xpbmsuYy0zODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjI2Ljk1Mjc1NzAwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MjY0MjE1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZpbGVzLi4uXG5cbioqRGl2aW5nIGludG8gbWFjODAyMTEgRGVidWdGUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtYWM4MDIxMWAncyBkZWJ1ZyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucyDigJMgc3BlY2lmaWNhbGx5LCBgZGVidWdmc19rZXkuY2AgYW5kIGBkZWJ1Z2ZzX25ldGRldi5jYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBob29rIGludG8gdGhlIGV4aXN0aW5nIGRlYnVnZnMgZnJhbWV3b3JrLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgbWVjaGFuaXNtcyBhcmUgZGVzaWduZWQgZm9yIGluc3BlY3Rpb24gYW5kIHBvdGVudGlhbCBtYW5pcHVsYXRpb24gb2Ygd2lyZWxlc3Mga2V5cyBhbmQgbmV0d29yayBkZXZpY2Ugc3RhdGVzIHdpdGhpbiB0aGUgbWFjODAyMTEgY29udGV4dC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBmaWxlIGhpZXJhcmNoeSwgdGhlIHBlcm1pc3Npb25zLCBhbmQgdGhlIGFjdHVhbCByZWFkL3dyaXRlIGhhbmRsZXJzIHRoZXkndmUgaW1wbGVtZW50ZWQuIE15IGV4cGVjdGF0aW9uIGlzIHRoZSBmcmFtZXdvcmsgd2lsbCBhbGxvdyBmb3IgZXhhbWluYXRpb24gb2Yga2V5IGRhdGEsIGFzc29jaWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBkcml2ZXItc3BlY2lmaWMgc3RhdGlzdGljcywgYW5kIHByb2JhYmx5IHRoZSBhYmlsaXR5IHRvIGVuYWJsZS9kaXNhYmxlIGNlcnRhaW4gZGVidWdnaW5nIGZsYWdzLiBJJ2xsIGFsc28gY2hlY2sgaG93IHRoZXNlIGRlYnVnZnMgZW50cmllcyBpbnRlcmFjdCB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlIGFuZCBpdHMgYXNzb2NpYXRlZCBuZXR3b3JrIGRldmljZXMsIGxvb2tpbmcgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5IHVzZSB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVpciBkZWJ1Z2ZzIGVudHJpZXMgaW4gdGhlIGRldmljZSBsaWZlY3ljbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNToyOS40NzkxODEwNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcXG4xMDExOlxcdFxcdGFkZF9maWxlcyhzZGF0YSk7XFxuMTAxMjpcXHRcXHRpZiAoIW1sZF92aWYpXFxuMTAxMzpcXHRcXHRcXHRhZGRfbGlua19maWxlcyhcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbmssIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpO1xcbjEwMTQ6XFx0fVxcbjEwMTU6XFx0XFxuMTAxNjpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuMTAxNzpcXHR7XFxuMTAxODpcXHRcXHRpZiAoIXNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpXFxuMTAxOTpcXHRcXHRcXHRyZXR1cm47XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcXG4xMDIyOlxcdFxcdHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xcbjEwMjM6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG4xMDI0OlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xcbjEwMjU6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4xMDI2OlxcdH1cXG4xMDI3OlxcdFxcbjEwMjg6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbjEwMjk6XFx0e1xcbjEwMzA6XFx0XFx0ZGVidWdmc19jaGFuZ2VfbmFtZShzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBcXFwibmV0ZGV2OiVzXFxcIiwgc2RhdGEtXFx1MDAzZW5hbWUpO1xcbjEwMzE6XFx0fVxcbjEwMzI6XFx0XFxuMTAzMzpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4xMDM0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBib29sIG1sZF92aWYpXFxuMTAzNTpcXHR7XFxuMTAzNjpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTtcXG4xMDM3OlxcdFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbjEwMzg6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG4xMDM5OlxcdFxcbjEwNDA6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcXG4xMDQxOlxcdFxcdFxcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXFx1MDAzZWxvY2FsLCBzZGF0YSk7XFxuMTA0MjpcXHRcXHRcXHRpZiAoIW1sZF92aWYpXFxuMTA0MzpcXHRcXHRcXHRcXHRpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2Rydl9hZGQoXFx1MDAyNnNkYXRhLVxcdTAwM2VkZWZsaW5rKTtcXG4xMDQ0OlxcdFxcdH1cXG4xMDQ1OlxcdH1cXG4xMDQ2OlxcdFxcbjEwNDc6XFx0dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4xMDQ4OlxcdHtcXG4xMDQ5OlxcdFxcdGNoYXIgbGlua19kaXJfbmFtZVsxMF07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjI5LjQ3OTMxNjU2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDkwMzAzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIERlYnVnZnMgS2V5IFVwZGF0ZSBQcm9jZXNzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBmdW5jdGlvbiBvcGVyYXRlcyBhbmQsIGNydWNpYWxseSwgaG93IGRlYnVnZnMga2V5IGZpbGVzIGFyZSBhY3R1YWxseSBnZW5lcmF0ZWQgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgZGVmYXVsdCB1bmljYXN0IGtleSBpcyBkZWZpbmVkIGFuZCBob3cgdGhpcyB1cGRhdGUgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggaXQuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgdGFyZ2V0ZWQgZ3JlcC4gSSdsbCBsb29rIGZvciBib3RoIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQsIG9mIGNvdXJzZSwgdGhlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGZ1bmN0aW9uIGl0c2VsZi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gdHJhY2UgdGhlIGNvZGUgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLiBJIGV4cGVjdCBJJ2xsIGJlIGFibGUgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZmlsZSBwYXRocyBhbmQgdmFyaWFibGVzLCB0aGVuIGRpdmUgZGVlcGVyIGlmIHRoZSBpbml0aWFsIHJlc3VsdHMgd2FycmFudCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MzEuNjI4MzQ5OTIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDIwOTk0MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0fGRlZmF1bHRfdW5pY2FzdF9rZXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz02NTYwPXN0YXRpYyBpbnQgYXRoMTBrX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy02NjUwLVxcdFxcdCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo2NjUxOlxcdFxcdCAqIFN0YXRpYyBXRVAgc2V0cyBkZWZfd2VwX2tleV9pZHggdmlhIC5zZXRfZGVmYXVsdF91bmljYXN0X2tleVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNjY1Mi1cXHRcXHQgKiBhZnRlciBmaXJzdCBzZXRfa2V5KCkuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo2NzE1OnN0YXRpYyB2b2lkIGF0aDEwa19zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTYtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTQ4Ni1cXHQuc2V0X2tleVxcdFxcdFxcdD0gYXRoMTBrX3NldF9rZXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5NDg3OlxcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSAgICAgICAgPSBhdGgxMGtfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NDg4LVxcdC5zdGFfc3RhdGVcXHRcXHRcXHQ9IGF0aDEwa19zdGFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jPTQxPXZvaWQgaXdsX212bV9pcHY2X2FkZHJfY2hhbmdlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jOjY2OnZvaWQgaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jLTY3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9NjM1MT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBpd2xfbXZtX2h3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNjQyNi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjY0Mjc6XFx0LnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTY0MjgtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYz04ODk9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgaXdsX212bV9tbGRfaHdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmMtOTYzLSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21sZC1tYWM4MDIxMS5jOjk2NDpcXHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21sZC1tYWM4MDIxMS5jLTk2NS0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oPTIxNDc9dm9pZCBpd2xfbXZtX2lwdjZfYWRkcl9jaGFuZ2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaC0yMTQ5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjIxNTA6dm9pZCBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTIxNTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTEzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgd2Z4X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE0OS1cXHQuc2V0X3J0c190aHJlc2hvbGQgICAgICAgPSB3Znhfc2V0X3J0c190aHJlc2hvbGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6MTUwOlxcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy0xNTEtXFx0LmJzc19pbmZvX2NoYW5nZWQgICAgICAgID0gd2Z4X2Jzc19pbmZvX2NoYW5nZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jPTI1MD1zdGF0aWMgdm9pZCB3ZnhfYmVhY29uX2xvc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jOjI2MTp2b2lkIHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5oPTI1PWludCB3Znhfc2V0X3J0c190aHJlc2hvbGQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaDoyNjp2b2lkIHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaC0yNy12b2lkIHdmeF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9NjAwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgd2wxMjcxX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjAyOS1cXHQuc2V0X2JpdHJhdGVfbWFzayA9IHdsMTJ4eF9zZXRfYml0cmF0ZV9tYXNrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjAzMDpcXHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSB3bDEyNzFfb3Bfc2V0X2RlZmF1bHRfa2V5X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYwMzEtXFx0LmNoYW5uZWxfc3dpdGNoID0gd2wxMnh4X29wX2NoYW5uZWxfc3dpdGNoLFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zNDYwPXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTEyLSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozNTEzOiAqIFRoZSBzZXRfZGVmYXVsdF91bmljYXN0X2tleSgpIGNhbGwgdXBkYXRlcyB0aGUgZGVmYXVsdCBXRVAga2V5IGluZGV4XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTE0LSAqIGNvbmZpZ3VyZWQgdG8gdGhlIGhhcmR3YXJlIGZvciBXRVAgZW5jcnlwdGlvbiB0eXBlLiBUaGlzIGlzIHJlcXVpcmVkXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MjE3LSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0MjE4OiAqIEBzZXRfZGVmYXVsdF91bmljYXN0X2tleTogU2V0IHRoZSBkZWZhdWx0ICh1bmljYXN0KSBrZXkgaW5kZXgsIHVzZWZ1bCBmb3JcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTktICpcXHRXRVAgd2hlbiB0aGUgZGV2aWNlIHNlbmRzIGRhdGEgcGFja2V0cyBhdXRvbm9tb3VzbHksIGUuZy4gZm9yIEFSUFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzQyPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDgwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGNmZzgwMjExX2d0a19yZWtleV9kYXRhICpkYXRhKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MDE6XFx0dm9pZCAoKnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MDItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYz0zNjE9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNjktXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzcwOnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM3MS17XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzktXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgwOlxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4MTpcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zODItXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgzOlxcdGlmIChzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSkge1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4NC1cXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4NTpcXHRcXHRcXHRcXHRcXHRzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg2LVxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4NzpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODg6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcXFwiZGVmYXVsdF91bmljYXN0X2tleVxcXCIsXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtOS12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfbWdtdF9kZWZhdWx0KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xNy17fVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDE2PXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMjMtXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzoxMDI0OlxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMjUtXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM3LVxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzg6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaD0xMTIzPXN0YXRpYyBpbmxpbmUgdm9pZFxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEyNDpkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMTI1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTEzNS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjExMzY6XFx0dHJhY2VfZHJ2X3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KGxvY2FsLCBzZGF0YSwga2V5X2lkeCk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMTM3OlxcdGlmIChsb2NhbC1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfZGVmYXVsdF91bmljYXN0X2tleSlcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjExMzg6XFx0XFx0bG9jYWwtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYsXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMTM5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBrZXlfaWR4KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNjY9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMTk2LVxcdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICprZXlzW05VTV9ERUZBVUxUX0tFWVNdO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExOTc6XFx0c3RydWN0IGllZWU4MDIxMV9rZXkgX19yY3UgKmRlZmF1bHRfdW5pY2FzdF9rZXk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTYtXFx0XFx0c3RydWN0IGRlbnRyeSAqc3ViZGlyX3N0YXRpb25zO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjEyNTc6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVmYXVsdF91bmljYXN0X2tleTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjU4LVxcdFxcdHN0cnVjdCBkZW50cnkgKmRlZmF1bHRfbXVsdGljYXN0X2tleTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM2Ni1cXHRpZiAodW5pKSB7XFxubmV0L21hYzgwMjExL2tleS5jOjM2NzpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXksIGtleSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM2OC1cXHRcXHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtMzY5LVxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEva2V5LmM6MzcwOlxcdFxcdFxcdGRydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzZGF0YS1cXHUwMDNlbG9jYWwsIHNkYXRhLCBpZHgpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzEtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM3NS1cXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9Mzg4PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X21nbXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cXG5uZXQvbWFjODAyMTEva2V5LmM6NDAyOlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTQwMy19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NDE0PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X2JlYWNvbl9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNDI4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzo0Mjk6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNDMwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz00NDA9c3RhdGljIGludCBpZWVlODAyMTFfa2V5X3JlcGxhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNTQ5LVxcdFxcdFxcdG9sZCA9PSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9rZXkuYzo1NTA6XFx0XFx0XFx0XFx0XFx0XFx0IHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNTUxLVxcdFxcdGRlZm11bHRpa2V5ID0gb2xkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MTA4Nz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZnJlZV9rZXlzX2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXFxubmV0L21hYzgwMjExL2tleS5jOjExMDY6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NDYzPXZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTUyMy1cXHRpZiAoIWtleSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NTI0OlxcdFxcdGtleSA9IHJjdV9hY2Nlc3NfcG9pbnRlcihzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTUyNS1cXHRidWlsZC5mYXN0X3R4LmtleSA9IGtleTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ3MjA9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF9yeChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjAtXFx0aWYgKCFrZXkpXFxubmV0L21hYzgwMjExL3J4LmM6NDgyMTpcXHRcXHRrZXkgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjItXFx0aWYgKGtleSkge1xcbi0tXFxubmV0L21hYzgwMjExL3RyYWNlLmg9MjE1MT1ERUZJTkVfRVZFTlQobG9jYWxfc2RhdGFfZXZ0LCBkcnZfYWJvcnRfcG1zcixcXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIxNTYtXFxubmV0L21hYzgwMjExL3RyYWNlLmg6MjE1NzpUUkFDRV9FVkVOVChkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXFxubmV0L21hYzgwMjExL3RyYWNlLmgtMjE1OC1cXHRUUF9QUk9UTyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTU5OT1pZWVlODAyMTFfc2VsZWN0X2tleV84MDIzKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02MDgtXFx0XFx0aWYgKCF0eC1cXHUwMDNla2V5KVxcbm5ldC9tYWM4MDIxMS90eC5jOjYwOTpcXHRcXHRcXHR0eC1cXHUwMDNla2V5ID0gcmN1X2RlcmVmZXJlbmNlKHR4LVxcdTAwM2VzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL3R4LmMtNjEwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjMwPWllZWU4MDIxMV90eF9oX3NlbGVjdF9rZXkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0OS1cXHRlbHNlIGlmICghaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYzo2NTA6XFx0XFx0IChrZXkgPSByY3VfZGVyZWZlcmVuY2UodHgtXFx1MDAzZXNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSkpXFxubmV0L21hYzgwMjExL3R4LmMtNjUxLVxcdFxcdHR4LVxcdTAwM2VrZXkgPSBrZXk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zMDcyPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMyMzUtXFx0aWYgKCFidWlsZC5rZXkpXFxubmV0L21hYzgwMjExL3R4LmM6MzIzNjpcXHRcXHRidWlsZC5rZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTMyMzctXFx0aWYgKGJ1aWxkLmtleSkge1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDgxNT1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0XzgwMjMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTItXFx0XFx0aWYgKCFrZXkpXFxubmV0L21hYzgwMjExL3R4LmM6NDg1MzpcXHRcXHRcXHRrZXkgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNTozNC40NzA0NTM2MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY0MDA4MjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgIGZvciBEZWZhdWx0IEtleSBVcGRhdGVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoaW4gYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jYC4gSSdtIGZhbWlsaWFyIHdpdGggbWFjODAyMTEncyBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgc28gSSBleHBlY3QgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBtYW5hZ2luZyBkZWZhdWx0IGVuY3J5cHRpb24ga2V5cywgbGlrZWx5IHRocm91Z2ggdGhlIGRlYnVnZnMgaW50ZXJmYWNlLiBJIGFudGljaXBhdGUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCBtZWNoYW5pc20gb2Ygc2V0dGluZywgdXBkYXRpbmcsIGFuZCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgZGVmYXVsdCBrZXkgY29uZmlndXJhdGlvbiB0aGF0IHRoZSB3aXJlbGVzcyBzdGFjayB1c2VzLiBHaXZlbiB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBgZGVidWdmc19rZXkuY2AgZmlsZSwgSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBkZWJ1Z2ZzIGVudHJpZXMgLSBsaWtlbHkgdG8gZXhwb3NlIGtleSBtYW5pcHVsYXRpb24gdG8gZGV2ZWxvcGVycyBhbmQgZGVidWdnaW5nLlxuSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFueSBlcnJvciBoYW5kbGluZyBpdCBpbXBsZW1lbnRzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGtleSBtYW5hZ2VtZW50IHN5c3RlbSBvZiBtYWM4MDIxMS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGNvbnNpZGVyaW5nIHRoZSBpbnRlcmZhY2UsIGlucHV0IGFuZCBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbi4gR2l2ZW4gbXkgY3VycmVudCBwcm9qZWN0LCBJJ20gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgc2VjdXJpdHksIGFuZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtYXkgY29tZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNTozNi42MzQ0NjQwODlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzY1OlxcdFxcbiAzNjY6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGtleS1cXHUwMDNlZGVidWdmcy5kaXIpO1xcbiAzNjc6XFx0XFx0a2V5LVxcdTAwM2VkZWJ1Z2ZzLmRpciA9IE5VTEw7XFxuIDM2ODpcXHR9XFxuIDM2OTpcXHRcXG4gMzcwOlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbiAzNzE6XFx0e1xcbiAzNzI6XFx0XFx0Y2hhciBidWZbNTBdO1xcbiAzNzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0aWYgKCFzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxcbiAzNzY6XFx0XFx0XFx0cmV0dXJuO1xcbiAzNzc6XFx0XFxuIDM3ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSk7XFxuIDM4MTpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG4gMzgyOlxcdFxcbiAzODM6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XFxuIDM4NDpcXHRcXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbiAzODU6XFx0XFx0XFx0XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbiAzODY6XFx0XFx0XFx0c3ByaW50ZihidWYsIFxcXCIuLi9rZXlzLyVkXFxcIiwga2V5LVxcdTAwM2VkZWJ1Z2ZzLmNudCk7XFxuIDM4NzpcXHRcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cXG4gMzg4OlxcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoXFxcImRlZmF1bHRfdW5pY2FzdF9rZXlcXFwiLFxcbiAzODk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XFxuIDM5MDpcXHRcXHR9XFxuIDM5MTpcXHRcXG4gMzkyOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XFxuIDM5MzpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xcbiAzOTQ6XFx0XFxuIDM5NTpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB7XFxuIDM5NjpcXHRcXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbiAzOTc6XFx0XFx0XFx0XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KTtcXG4gMzk4OlxcdFxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbiAzOTk6XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID1cXG4gNDAwOlxcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoXFxcImRlZmF1bHRfbXVsdGljYXN0X2tleVxcXCIsXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgYnVmKTtcXG4gNDAyOlxcdFxcdH1cXG4gNDAzOlxcdH1cXG4gNDA0OlxcdFxcbiA0MDU6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gNDA2OlxcdHtcXG4gNDA3OlxcdFxcdGlmICghc2RhdGEpXFxuIDQwODpcXHRcXHRcXHRyZXR1cm47XFxuIDQwOTpcXHRcXG4gNDEwOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbWdtdF9rZXkpO1xcbiA0MTE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tZ210X2tleSA9IE5VTEw7XFxuIDQxMjpcXHR9XFxuIDQxMzpcXHRcXG4gNDE0OlxcdHZvaWRcXG4gNDE1OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIDQxNjpcXHR7XFxuIDQxNzpcXHRcXHRpZiAoIXNkYXRhKVxcbiA0MTg6XFx0XFx0XFx0cmV0dXJuO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkpO1xcbiA0MjE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9iZWFjb25fa2V5ID0gTlVMTDtcXG4gNDIyOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MzYuNjM0NTQyODI5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyMzYwMjcwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIG1hYzgwMjExIERlYnVnZnMgSXNzdWUqKlxuXG5Pa2F5LCBzbyBsZXQncyBicmVhayB0aGlzIGRvd24uIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCByZW1vdmVzIHRoZSBlbnRpcmUgZGVidWdmcyBkaXJlY3RvcnkgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgc3RhdGlvbiBkYXRhIChgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyYCkgcmVjdXJzaXZlbHkuIFRoZSBjb3JlIHByb2JsZW0gd2FzIHRoYXQsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVycyBpbiBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCBpZiB3ZSByZW1vdmVkIHRoZSBkZWJ1Z2ZzIGRpcmVjdG9yeSByZWN1cnNpdmVseS5cblxuVGhlIHByb2JsZW1hdGljIHNjZW5hcmlvIGFyb3NlIHdoZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgd2FzIGNhbGxlZC4gSXQgd291bGQgY29ycmVjdGx5IHJlbW92ZSB0aGUgb2xkIG5ldGRldiBhbmQgdGhlbiBhZGQgYSBuZXcgb25lLCBidXQgY3J1Y2lhbGx5LCBpdCAqd2Fzbid0KiB1cGRhdGluZyB0aGUgZGVmYXVsdCBrZXlzLiBUaGlzIG1lYW50IGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgY291bGQgYmVjb21lIHN0YWxlLCBwb2ludGluZyB0byBtZW1vcnkgdGhhdCBoYWQgYmVlbiBmcmVlZCwgb3IgYmUgZW50aXJlbHkgbG9zdCBhcyB0aGUgbmV3IG5ldGRldiBjYW1lIGludG8gZXhpc3RlbmNlLlxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3ZSBub3cgZXhwbGljaXRseSBzZXQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gYE5VTExgLiBUaGlzIGNsZWFucyB1cCB0aGUgb2xkIGtleSBwb2ludGVycyBvbiByZW1vdmFsLiBBbmQgaW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAsIHdlJ3ZlIGFkZGVkIGEgY2FsbCB0byBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKWAgYWZ0ZXIgdGhlIHJlY3JlYXRlIHRvIHJlLWluaXRpYWxpemUgdGhlIGRlZmF1bHQga2V5cyBmb3IgdGhlIG5ldyBuZXRkZXYuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBkZWZhdWx0IGtleXMgYXJlIGFsd2F5cyBrZXB0IGNvbnNpc3RlbnQuXG5cbk5vdywgYXMgYW4gYXNpZGUsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcmVhbC13b3JsZCBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgZnV6emluZy4gTGV0J3MgY29uc2lkZXIgcmVhY2hhYmlsaXR5LiBHaXZlbiB0aGF0IHN5emthbGxlciBpcyBoZWF2aWx5IGZ1enplZCBieSB0aGUgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBjcmVhdGVzIHZpcnR1YWwgbWFjODAyMTEgZGV2aWNlcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0Uga2VybmVscywgdGhlbiB5ZXMsIG1hYzgwMjExIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgaW4gc3l6a2FsbGVyLiBUaGF0J3MgZXhjZWxsZW50IG5ld3MuIEdpdmVuIHRoZSBwb3B1bGFyaXR5IG9mIG5sODAyMTEsIG1hYzgwMjExIGlzIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGZ1enplZCBhcmVhcyBpbiBzeXprYWxsZXIuIFRoaXMgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgd2lsbCBiZSBnZXR0aW5nIHRlc3RlZCBhIGxvdC4gQW5kLCBhcyBhIGRvdWJsZS1jaGVjaywgaXQncyB3b3J0aCByZXZpZXdpbmcgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gY29uZmlybSB0aGF0IGRlYnVnZnMgc3VwcG9ydCBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk0MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjQyLjg3MDU3NDAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk2NTkxNTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExX0RFQlVHRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnPTM0PUNPTkZJR19NQUM4MDIxMT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnOjM1OkNPTkZJR19NQUM4MDIxMV9ERUJVR0ZTPXlcXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWctMzYtQ09ORklHX01URD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc9Mjg9Q09ORklHX01BQzgwMjExPW1cXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc6Mjk6Q09ORklHX01BQzgwMjExX0RFQlVHRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2F0aDc5X2RlZmNvbmZpZy0zMC1DT05GSUdfTVREPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Mjg4PUNPTkZJR19NQUM4MDIxMV9MRURTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI4OTpDT05GSUdfTUFDODAyMTFfREVCVUdGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0yOTAtQ09ORklHX05FVF85UD1tXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTIyPWF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjIzOmF0aDEwa19jb3JlLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTI0LWF0aDEwa19jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9NTIzPXN0cnVjdCBhdGgxMGtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTU0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDo1NDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ4LVxcdC8qIHByb3RlY3RlZCBieSBjb25mX211dGV4ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI2MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2MjQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjI1LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN0YV90aWRfc3RhdHNfbWFza1xcXCIsIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg9MTk5PXN0YXRpYyBpbmxpbmUgaW50IGF0aDEwa19kZWJ1Z19md19zdGF0c19yZXF1ZXN0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTIxMC0jZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEyLXZvaWQgYXRoMTBrX3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaD0yNDY9dm9pZCBhdGgxMGtfc3RhX3VwZGF0ZV9yeF90aWRfc3RhdHNfYW1wZHUoc3RydWN0IGF0aDEwayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg6MjUyOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk0NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEwa19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk1MjUtI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5NTI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNy1cXHQuc3RhX2FkZF9kZWJ1Z2ZzXFx0XFx0PSBhdGgxMGtfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD01NDI9c3RydWN0IGF0aDExa19zdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjU2NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC01NjctXFx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzc6XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz01OD1jb25maWcgQVRIOUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYxLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM9Mjc5MD1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYzoyODM1OiNpZiBkZWZpbmVkKENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy0yODM2LVxcdC5zdGFfYWRkX2RlYnVnZnMgICAgPSBhdGg5a19zdGFfYWRkX2RlYnVnZnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZz0yNz1jb25maWcgQ0FSTDkxNzBfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkRlYnVnRlMgU3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzoyOTpcXHRkZXBlbmRzIG9uIENBUkw5MTcwIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0zMC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYz02MDA9aWwzOTQ1X3JzX2dldF9yYXRlKHZvaWQgKmlsX3IsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHZvaWQgKmlsX3N0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy03OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjc5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtNzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jPTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jLTg2Ny1cXHQuZnJlZV9zdGEgPSBpbDM5NDVfcnNfZnJlZV9zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjg2ODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtODY5LVxcdC5hZGRfc3RhX2RlYnVnZnMgPSBpbDM5NDVfYWRkX2RlYnVnZnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9MjI2Mz1pbDQ5NjVfcnNfcmF0ZV9pbml0KHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggc3RhX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jOjIzNDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDMtXFx0bHFfc3RhLVxcdTAwM2VkYmdfZml4ZWRfcmF0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9MjQ5Mz1pbDQ5NjVfcnNfZGJnZnNfc2V0X21jcyhzdHJ1Y3QgaWxfbHFfc3RhICpscV9zdGEsIHUzMiAqIHJhdGVfbl9mbGFncywgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYy0yNDk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyNDk5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI1MDAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jPTI3Njk9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzXzQ5NjVfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzctXFx0LmZyZWVfc3RhID0gaWw0OTY1X3JzX2ZyZWVfc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyNzc4OlxcdC5hZGRfc3RhX2RlYnVnZnMgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzktXFx0XFx0XFx0XFx0ICBpbDQ5NjVfcnNfYWRkX2RlYnVnZnMpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZz05Mz1jb25maWcgSVdMRUdBQ1lfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTQtXFx0Ym9vbCBcXFwiaXdsZWdhY3kgKGl3bCAzOTQ1LzQ5NjUpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjk1OlxcdGRlcGVuZHMgb24gSVdMRUdBQ1kgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEzMT1jb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0xMzc9c3RhdGljIHZvaWQgcnNfc3RheV9pbl90YWJsZShzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfc3RhLCBib29sIGZvcmNlX3NlYXJjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjE0MDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTE0MS1zdGF0aWMgdm9pZCByc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpd2xfbHFfc3RhICpscV9zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jPTI0OD1zdGF0aWMgdTggcnNfdGxfYWRkX3BhY2tldChzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6Mjk4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk5LS8qXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jPTI3NDA9dm9pZCBpd2xfcnNfcmF0ZV9pbml0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggc3RhX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yODMwLVxcdGxxX3N0YS1cXHUwMDNlaXNfYWdnID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjI4MzE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yODMyLVxcdGxxX3N0YS1cXHUwMDNlZGJnX2ZpeGVkX3JhdGUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yOTk2PXN0YXRpYyB2b2lkIHJzX2ZyZWVfc3RhKHZvaWQgKnByaXZfciwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMzAwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjMwMDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMDA3LXN0YXRpYyB2b2lkIHJzX2RiZ2ZzX3NldF9tY3Moc3RydWN0IGl3bF9scV9zdGEgKmxxX3N0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MzI2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMjc1LVxcdC5mcmVlX3N0YSA9IHJzX2ZyZWVfc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6MzI3NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMyNzctXFx0LmFkZF9zdGFfZGVidWdmcyA9IHJzX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaD0zMTk9c3RydWN0IGl3bF9scV9zdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaC0zNTItXFx0dTggdHhfYWdnX3RpZF9lbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM1MzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oLTM1NC1cXHR1MzIgZGJnX2ZpeGVkX3JhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTcwNT12b2lkIGl3bF9tdm1fcnNfYWRkX3N0YV9saW5rKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjcyMDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcyMS1cXHRscV9zdGEtXFx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0xOTYwPXN0YXRpYyBib29sIHJzX3RwY19wZXJmb3JtKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTE5NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoxOTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMTk3OS1cXHRpZiAobHFfc3RhLVxcdTAwM2VwZXJzLmRiZ19maXhlZF90eHBfcmVkdWN0aW9uIFxcdTAwM2M9IFRQQ19NQVhfUkVEVUNUSU9OKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTI3MjM9c3RhdGljIHZvaWQgKnJzX2Rydl9hbGxvY19zdGEodm9pZCAqbXZtX3JhdGUsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTI3MzMtXFx0bHFfc3RhLVxcdTAwM2VwZXJzLmRydiA9IG12bTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjI3MzQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzM1LVxcdGxxX3N0YS1cXHUwMDNlcGVycy5kYmdfZml4ZWRfcmF0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTMwMzY9c3RhdGljIHZvaWQgX19pd2xfbXZtX3JzX3R4X3N0YXR1cyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM6MzA3MTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTMwNzItXFx0LyogRGlzYWJsZSBsYXN0IHR4IGNoZWNrIGlmIHdlIGFyZSBkZWJ1Z2dpbmcgd2l0aCBmaXhlZCByYXRlIGJ1dFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0zMjY5PXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjMyODQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjg1LXN0YXRpYyB2b2lkIHJzX2J1aWxkX3JhdGVzX3RhYmxlX2Zyb21fZml4ZWQoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzMxOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMzIwOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzMyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzUxMD1zdGF0aWMgdm9pZCByc19zZXRfbHFfc3NfcGFyYW1zKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNTI3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzUyOC1cXHQvKiBDaGVjayBpZiBmb3JjaW5nIHRoZSBkZWNpc2lvbiBpcyBjb25maWd1cmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0zNTg3PXN0YXRpYyB2b2lkIHJzX2ZpbGxfbHFfY21kKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNjAwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzYwMS1cXHRpZiAobHFfc3RhLVxcdTAwM2VwZXJzLmRiZ19maXhlZF9yYXRlKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM2NjA9aW50IHJzX3ByZXR0eV9wcmludF9yYXRlX3YxKGNoYXIgKmJ1ZiwgaW50IGJ1ZnN6LCBjb25zdCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzcwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM3MDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNzA3LS8qXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTQxMDA9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzX212bV9vcHNfZHJ2ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy00MTA5LVxcdC5yYXRlX3VwZGF0ZSA9IHJzX2Rydl9yYXRlX3VwZGF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjQxMTA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy00MTExLVxcdC5hZGRfc3RhX2RlYnVnZnMgPSByc19kcnZfYWRkX3N0YV9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD0yMDg9c3RydWN0IGl3bF9scV9zdGFfcnNfZncge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0yMTQtXFx0XFx0dTMyIHN0YV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjIxNTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTIxNi1cXHRcXHQvKipcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MzAxPXN0cnVjdCBpd2xfbHFfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtMzYxLVxcdHN0cnVjdCBscV9zdGFfcGVycyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDozNjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0zNjMtXFx0XFx0dTMyIGRiZ19maXhlZF9yYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEzNzY9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMzg3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg4LS8qKiBwZXItc3RhdGlvbiBkZWJ1Z2ZzICoqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODI1LVxcdENGRzgwMjExX1RFU1RNT0RFX0RVTVAobXQ3Nl90ZXN0bW9kZV9kdW1wKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODI3LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM3PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjYzODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02Mzktdm9pZCBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NzEtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTMtXFx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTk1LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9OTM0PWludCBtdDc5OTZfbWN1X3NldF9lbWxzcl9tb2RlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC05MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9lbWxfcGFyYW1zICplbWxfcGFyYW1zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo5Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yNTE9Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUzOlxcdGRlcGVuZHMgb24gUlQyWDAwX0xJQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0yMzQyPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzYzLXN0YXRpYyB2b2lkXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz00Mjc0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjQyOTI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDI5My0jZGVmaW5lIEhXU0lNX0RFQlVHRlNfT1BTXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yMjMzPXN0cnVjdCBpZWVlODAyMTFfdmlmIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMjI1My1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjIyNTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0yMjU1LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfZGlyO1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDY4PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDI5Ny0gKlxcdGRpcmVjdG9yeSB3aXRoIGl0cyBmaWxlcy4gVGhpcyBjYWxsYmFjayBzaG91bGQgYmUgd2l0aGluIGFcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQyOTg6ICpcXHRDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00Mjk5LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDEtICpcXHR3aGVuIGEgbGluayBpcyBhZGRlZCB0byBhIG1hYzgwMjExIHZpZi4gVGhpcyBjYWxsYmFjayBzaG91bGQgYmUgd2l0aGluXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0MzAyOiAqXFx0YSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzAzLSAqXFx0Rm9yIG5vbi1NTE8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9uY2UgZm9yIHRoZSBkZWZhdWx0IGJzc19jb25mXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDctICpcXHR3aGVuIGEgc3RhdGlvbiBpcyBhZGRlZCB0byBtYWM4MDIxMSdzIHN0YXRpb24gbGlzdC4gVGhpcyBjYWxsYmFja1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMwODogKlxcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMwOS0gKlxcdGNhbGxiYWNrIGNhbiBzbGVlcC5cXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMxMi0gKlxcdHdoZW4gYSBsaW5rIGlzIGFkZGVkIHRvIGEgbWFjODAyMTEgc3RhdGlvbi4gVGhpcyBjYWxsYmFja1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMxMzogKlxcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMxNC0gKlxcdGNhbGxiYWNrIGNhbiBzbGVlcC5cXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9NDc0Mj1zdHJ1Y3QgaWVlZTgwMjExX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MzAtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MzE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODMyLVxcdHZvaWQgKCp2aWZfYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9Nzk9Y29uZmlnIE1BQzgwMjExX0xFRFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjk1LVxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlPTQwPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0xFRFMpICs9IGxlZC5vXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjQxOm1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDItXFx0ZGVidWdmcy5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01OT1yYzgwMjExX21pbnN0cmVsLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTYxLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo2MjpyYzgwMjExX21pbnN0cmVsLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNjMtXFx0cmM4MDIxMV9taW5zdHJlbF9odF9kZWJ1Z2ZzLm9cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6MjojaWZuZGVmIF9fTUFDODAyMTFfREVCVUdGU19IXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTQtXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTYtXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaDo3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtOC12b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg9MTI9c3RhdGljIGlubGluZSB2b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaC0xNi1cXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oOjE3OiNlbmRpZiAvKiBfX01BQzgwMjExX0RFQlVHRlNfSCAqL1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfS0VZX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtNC1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDo1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTYtdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfYWRkKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MjQ9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0yOC1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoyOTojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IICovXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xMi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDoxMzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNC12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX1NUQV9IXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTYtXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg6NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC04LXZvaWQgaWVlZTgwMjExX3N0YV9kZWJ1Z2ZzX2FkZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaD0yND1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2xpbmtfc3RhX2RlYnVnZnNfZHJ2X3JlbW92ZShzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpIHt9XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC0yNi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaDoyNzojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX1NUQV9IICovXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oPTQ3Nz1zdGF0aWMgaW5saW5lIHZvaWQgZHJ2X3N0YV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5NC1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjQ5NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5Ni1zdGF0aWMgaW5saW5lIHZvaWQgZHJ2X3ZpZl9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExMDg9c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE2MC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMTYxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTExNjItXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xMTY2PXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTI1My1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMjU0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTUtXFx0c3RydWN0IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzA2LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTcwOC1cXHRzdHJ1Y3QgbG9jYWxfZGVidWdmc2RlbnRyaWVzIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuaD01OT1zdHJ1Y3QgaWVlZTgwMjExX2tleSB7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmgtMTIyLVxcbm5ldC9tYWM4MDIxMS9rZXkuaDoxMjM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL2tleS5oLTEyNC1cXHRzdHJ1Y3Qge1xcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYz0yMTU9aWVlZTgwMjExX3JhdGVfY29udHJvbF9vcHNfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0MC1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjI0MTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0Mi1zdGF0aWMgc3NpemVfdCByY25hbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTI4MD1zdGF0aWMgdm9pZCByYXRlX2NvbnRyb2xfZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg0LVxcbm5ldC9tYWM4MDIxMS9yYXRlLmM6Mjg1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg2LVxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShsb2NhbC1cXHUwMDNlZGVidWdmcy5yY2Rpcik7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5oPTU1PXN0YXRpYyBpbmxpbmUgdm9pZCByYXRlX2NvbnRyb2xfYWRkX3N0YV9kZWJ1Z2ZzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbm5ldC9tYWM4MDIxMS9yYXRlLmgtNTYte1xcbm5ldC9tYWM4MDIxMS9yYXRlLmg6NTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JhdGUuaC01OC1cXHRzdHJ1Y3QgcmF0ZV9jb250cm9sX3JlZiAqcmVmID0gc3RhLVxcdTAwM2VyYXRlX2N0cmw7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCByYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjExL3JhdGUuaC02OC17XFxubmV0L21hYzgwMjExL3JhdGUuaDo2OTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTcwLVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNkaXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTEwNTk9bWluc3RyZWxfaHRfdXBkYXRlX3N0YXRzKHN0cnVjdCBtaW5zdHJlbF9wcml2ICptcCwgc3RydWN0IG1pbnN0cmVsX2h0X3N0YSAqbWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTExODEtXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxMTgyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4My1cXHQvKiB1c2UgZml4ZWQgaW5kZXggaWYgc2V0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE1OTU9bWluc3RyZWxfaHRfZ2V0X3JhdGUodm9pZCAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdm9pZCAqcHJpdl9zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE2MDYtXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxNjA3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTYwOC1cXHRpZiAobXAtXFx1MDAzZWZpeGVkX3JhdGVfaWR4ICE9IC0xKVxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xOTE1PW1pbnN0cmVsX2h0X2FsbG9jKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTQ4LVxcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM6MTk0OTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NTAtc3RhdGljIHZvaWQgbWluc3RyZWxfaHRfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHZvaWQgKnByaXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIG1hYzgwMjExX21pbnN0cmVsX2h0ID0ge1xcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTkzLVxcdC5mcmVlID0gbWluc3RyZWxfaHRfZnJlZSxcXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTk1LVxcdC5hZGRfZGVidWdmcyA9IG1pbnN0cmVsX2h0X2FkZF9kZWJ1Z2ZzLFxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaD03NT1zdHJ1Y3QgbWluc3RyZWxfcHJpdiB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oLTg1LVxcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0Lmg6ODY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaC04Ny1cXHQvKlxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NTI2PXN0cnVjdCBsaW5rX3N0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTU3Ny1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo1Nzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc5LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfZGlyO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03NzMtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Nzc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc3NS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2RpcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2NzY9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjcwMS1cXG5uZXQvbWFjODAyMTEvdHguYzoyNzAyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDMtXFx0aWYgKGxvY2FsLVxcdTAwM2Vmb3JjZV90eF9zdGF0dXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zNzEzPXZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzc1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozNzYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS90eC5jLTM3NjEtXFx0aWYgKGxvY2FsLVxcdTAwM2Vmb3JjZV90eF9zdGF0dXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjQ0LjQ2NzE3MDkzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQzOTgwOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWFjODAyMTEgRGVidWcgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jYCByaWdodCBub3cuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZW4gdGhpcyBmaWxlIGlzIGV2ZW4gY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGF0IHRvIGhhcHBlbi4gT2YgY291cnNlLCB0aGF0IHNldHRpbmcgaXMgZ29pbmcgdG8gYmUgY29uZGl0aW9uYWwsIHRvby4gSSdtIHByZXR0eSBzdXJlIGBNQUM4MDIxMWAgaXRzZWxmIGlzIGEgcHJlcmVxdWlzaXRlLCBhbmQgSSdkIGJldCBgREVCVUdfRlNgIGlzIGludm9sdmVkIGFzIHdlbGwuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgZmlsZS4gSSdsbCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA4OCBhbmQgc2VlIHdoYXQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBhcmUgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgZGVidWcgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIGludGVncmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NDYuNjExMTU1MDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgwOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuICA4MTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA4MzpcXHRcXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbiAgODQ6XFx0XFx0aGVscFxcbiAgODU6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGEgZmV3IExFRCB0cmlnZ2VycyBmb3IgZGlmZmVyZW50XFxuICA4NjpcXHRcXHQgIHBhY2tldCByZWNlaXZlL3RyYW5zbWl0IGV2ZW50cy5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4gIDkwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBzZWUgZXh0ZW5zaXZlIGluZm9ybWF0aW9uIGFib3V0XFxuICA5MzpcXHRcXHQgIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBtYWM4MDIxMSBpbiBkZWJ1Z2ZzLlxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHQgIFNheSBOIHVubGVzcyB5b3Uga25vdyB5b3UgbmVlZCB0aGlzLlxcbiAgOTY6XFx0XFxuICA5NzpcXHRjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxuICA5ODpcXHRcXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuICA5OTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFRSQUNJTkdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NDYuNjExMjMwNTA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MzQ5NzA2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBDRkc4MDIxMV9ERUJVR0ZTKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgc2VlIGlmIGBDRkc4MDIxMV9ERUJVR0ZTYCBpcyBlbmFibGVkLCBvciBhdCBsZWFzdCBhdmFpbGFibGUsIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGlzLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEknbSB0aGlua2luZywgdGhpcyBkZWJ1ZyBmZWF0dXJlIGlzIGEgY3JpdGljYWwgdG9vbCwgc28gSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQgaXRzIGN1cnJlbnQgc3RhdHVzLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBhIHNwZWNpZmljIGlzc3VlIG9yIGEgbmV3IGZlYXR1cmUgaW1wbGVtZW50YXRpb24sIGFuZCBrbm93aW5nIGlmIHRoaXMgZGVidWdnaW5nIG9wdGlvbiBpcyBlbmFibGVkIHdpbGwgYWZmZWN0IG15IG5leHQgc3RlcHMuIE5lZWQgdG8gbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NjEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjUxLjM0NjIwMzI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg5NjIwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE1OT1jb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjUzLjMzNTgyOTMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTMwODc4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBSaWdodCBub3csIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMTY5LiBUaGF0IGFyZWEgaXMgdXN1YWxseSB3aGVyZSB0aGV5IGRlZmluZSB0aGUgY29yZSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIHN1YnN5c3RlbS4gSG9wZWZ1bGx5LCBJJ2xsIGZpbmQgdGhlIGJhc2ljIGtub2JzIGFuZCBsZXZlcnMgaW4gdGhlcmUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBmb3VuZGF0aW9uYWwgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGVyZSBJIGNhbiBzdGFydCB0cmFjaW5nIGRlcGVuZGVuY2llcyBpZiBzb21ldGhpbmcgaXNuJ3Qgd29ya2luZyBhcyBJIGV4cGVjdC4gR3JhYmJpbmcgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gZ28gb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODY2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTUuMTQ4OTIwNDI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFx0ICBJZiB0aGlzIGNhdXNlcyB5b3VyIGFwcGxpY2F0aW9ucyB0byBtaXNiZWhhdmUgeW91IHNob3VsZCBmaXggeW91clxcbiAxNjY6XFx0XFx0ICBhcHBsaWNhdGlvbnMgaW5zdGVhZCAtLSB0aGV5IG5lZWQgdG8gcmVnaXN0ZXIgdGhlaXIgbmV0d29ya1xcbiAxNjc6XFx0XFx0ICBsYXRlbmN5IHJlcXVpcmVtZW50LCBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnJzdC5cXG4gMTY4OlxcdFxcbiAxNjk6XFx0Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG4gMTcwOlxcdFxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gMTcyOlxcdFxcdGhlbHBcXG4gMTczOlxcdFxcdCAgWW91IGNhbiBlbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBkZWJ1Z2ZzIGVudHJpZXMgZm9yIGNmZzgwMjExLlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE3NjpcXHRcXG4gMTc3OlxcdGNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG4gMTc4OlxcdFxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuIDE3OTpcXHRcXHRkZWZhdWx0IHlcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgWW91IHNob3VsZCBlbmFibGUgdGhpcyBvcHRpb24gdW5sZXNzIHlvdSBrbm93IGZvciBzdXJlIHlvdSBoYXZlIG5vXFxuIDE4MjpcXHRcXHQgIG5lZWQgZm9yIGl0LCBmb3IgZXhhbXBsZSB3aGVuIHVzaW5nIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlIGxvYWRlZCBhc1xcbiAxODM6XFx0XFx0ICBhIGZpcm13YXJlIGZpbGUuXFxuIDE4NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTUuMTQ5MDI2NDE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Njk1OTg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGZvciBtYWM4MDIxMSBEZWJ1Z2dpbmcgYW5kIEZ1enppbmcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nIGFuZCBmdXp6aW5nIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AuIE9idmlvdXNseSwgdGhhdCdzIHJlbGlhbnQgb24gYE1BQzgwMjExYCDigJMgbWFrZXMgc2Vuc2UuIEFuZCB0aGVuLCBgQ0ZHODAyMTFfREVCVUdGU2AsIHdoaWNoIHRoYXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBkZXBlbmRzIG9uLCBpdHNlbGYgZGVwZW5kcyBvbiBgREVCVUdfRlNgLiBHb3QgaXQuIFRoYXQgZXN0YWJsaXNoZXMgdGhlIGRlYnVnZ2luZyBzaWRlLlxuXG5Ob3csIGZvciBmdXp6aW5nLCBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBvcHRpb25zOiBgTUFDODAyMTFfSFdTSU1gIG9yIGBOTDgwMjExYC4gSSdsbCBwcm9iYWJseSB3YW50IHRvIGludmVzdGlnYXRlIHRob3NlIGZ1cnRoZXIuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExX0hXU0lNYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTcuNjE4NjI3NDUzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM0OTQ3NDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjU5LjE1MzU3OTU5NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzAyMDgzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVmlydHVhbCBXaXJlbGVzcyBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB2aXJ0dWFsIHdpcmVsZXNzIHNldHVwIGluIHRoaXMga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMZXQncyBzZWUuLi4gdGhlIHRleHQgbWVudGlvbnMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFJpZ2h0LCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHN1YnN5c3RlbS4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBLY29uZmlnYCBub3cgdG8gc2VlIHdoYXQncyBkZWZpbmVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGlzIGFsbCBwaWVjZXMgdG9nZXRoZXIuIFRoYXQnbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjowMC44NTU2NjU1OTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gICA2OlxcdFxcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuICAgNzpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXFxuICAgODpcXHRcXHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcXG4gICA5OlxcdFxcdCAgdG8gdXNlIHRoaXMgdG9vbC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZJUlRfV0lGSVxcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxcbiAgMTk6XFx0XFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjAwLjg1NTcyNTg1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjQ2NjM1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEZWJ1Z2ZzIGFuZCBtYWM4MDIxMSBJbnRlcmFjdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgc28gSSdtIHN0YXJ0aW5nIHdpdGggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0NGRzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0RFQlVHX0ZTYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gLiBUaGVzZSBwb2ludCBkaXJlY3RseSB0byB0aGUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBpdHMgZGVidWcgaW50ZXJmYWNlLCB3aGljaCBtZWFucyBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nIHRoZSB3aXJlbGVzcyBuZXR3b3JrIGludGVyZmFjZS5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgaGFzIGJlZW4gdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb25zIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC5cblxuTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgSSBzZWUgdGhhdCBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaXMgY2FsbGVkIGluIGBkcnZfcmVtb3ZlX2ludGVyZmFjZWAsIGBpZWVlODAyMTFfZGVsX3ZpcnR1YWxfbW9uaXRvcmAsIGBpZWVlODAyMTFfdGVhcmRvd25fc2RhdGFgLCBhbmQgZXZlbiBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpdHNlbGYsIHN1Z2dlc3RpbmcgYSBjbGVhbnVwIG9yIHJlbW92YWwgcHJvY2Vzcy4gTWVhbndoaWxlLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBnZXRzIGNhbGxlZCBieSBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX3NldHVwX3NkYXRhYCwgYW5kIGBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rc2AuIFNvLCB0aGVzZSBmdW5jdGlvbnMgbGlrZWx5IGRlYWwgd2l0aCByZW1vdmluZyBhbmQgcmVjcmVhdGluZyB0aGUgZGVidWdmcyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlLiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGBkcnZfcmVtb3ZlX2ludGVyZmFjZWAsIGBpZWVlODAyMTFfZGVsX3ZpcnR1YWxfbW9uaXRvcmAsIGBpZWVlODAyMTFfdGVhcmRvd25fc2RhdGFgLCBgaWVlZTgwMjExX3NldHVwX3NkYXRhYCwgYW5kIGBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rc2AgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBkZWJ1Z2ZzIGludGVyYWN0aW9ucyBhcmUgdHJpZ2dlcmVkLiBJIGFtIGFsc28gYXdhcmUgdGhhdCB0aGUgYGRlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZhbWlseSBvZiBmdW5jdGlvbnMgdGhhdCBjYWxsIHRoZSBgZGVidWdmc19yZW1vdmVfbmV0ZGV2YC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2FsbHMgYW5kIHRoZSBwcmVzZW5jZSBvZiBgcmVtb3ZlYCBhbmQgYHJlY3JlYXRlYCBpbiB0aGUgZnVuY3Rpb24gbmFtZXMsIEkgdGhpbmsgdGhpcyBjb3VsZCBiZSByZWxhdGVkIHRvOlxuKiAgIEludGVyZmFjZSByZW1vdmFsIGFuZCBjcmVhdGlvblxuKiAgIFZpcnR1YWwgaW50ZXJmYWNlIG1hbmFnZW1lbnRcbiogICBTdGF0aW9uIGRhdGEgdGVhcmRvd24gYW5kIHNldHVwXG5cblNpbmNlIEkgbmVlZCBhIGJyb2FkZXIgdmlldywgSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGNvZGViYXNlIGZvciBhbGwgY2FsbHMgdG8gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLiBJIHdhbnQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcml0aWNhbCBsb2NhdGlvbi4gSSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzE1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MDUuMTAyMzY0NjMyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgxMDU1NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTk5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE1LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMTY6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMTcte1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAzMz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMzUte1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzY6XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEzLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjE0OnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMTUtdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTIzPXZvaWQgaWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0yNC0jZWxzZVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTI2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTAwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTkwNy1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5MDg6XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTA5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjowNi41ODM0MjQ2ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzUzMDg0ODU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBbmFseXNpczogbWFjODAyMTEgRGVidWdmcyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCwgYW5kIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLCBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nLiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaGFuZGxlcyByZW1vdmFsIG9mIGRlYnVnZnMgZW50cmllcyB3aGVuIHRoZSBzZGF0YSBpcyBkZXN0cm95ZWQgb3IgdXBkYXRlZCwgb3IgdGhlIGRlYnVnZnMgaXMgcmVjcmVhdGVkLiBDb252ZXJzZWx5LCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgb24gc2RhdGEgc2V0dXAsIGludGVyZmFjZSByZW1vdmFsLCBvciBsaW5rIHVwZGF0ZXMuIEknbSBub3RpbmcgdGhhdCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBpcyBkaXJlY3RseSBjYWxsZWQgd2l0aGluIHRoZSByZWNyZWF0ZSBmdW5jdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHksIGFuZCBoZXJlLCB0aGluZ3MgbG9vayBwcm9taXNpbmcuIFRoaXMgaXMgd2l0aGluIGBtYWM4MDIxMWAsIHdoaWNoIGlzIGNvcmUsIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggc3RhbmRhcmQgYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMuIFRoaXMgbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQgZm9yIFN5emthbGxlciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgdmlydHVhbCBkZXZpY2UgdG8gbWltaWMgcmVhbCBoYXJkd2FyZSBmdXJ0aGVyIHN0cmVuZ3RoZW5zIHRoaXMgYXJndW1lbnQuIFRoaXMgaXNuJ3QgdGllZCB0byBhbnkgc3BlY2lmaWMgdmVuZG9yJ3MgaGFyZHdhcmUgYW5kIGlzbid0IGp1c3QgYWJvdXQgdW5wbHVnZ2FibGUgaGFyZHdhcmUgdGVhcmRvd24sIGJ1dCBzdGFuZGFyZCBydW50aW1lIG9wZXJhdGlvbnMgb24gdGhlIGludGVyZmFjZSBsZXZlbC4gV29ydGhGdXp6aW5nIGlzIGEgZGVmaW5pdGUgeWVzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGUgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgXG4qICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmBcbiogICBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YFxuXG5BbmQgaXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgIGFuZCBJIGtub3cgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgY2FsbGVkIGluc2lkZSBpdC5cblxuRm9yIGNvbmZpZ3VyYXRpb25zLCB0aGlzIG5lZWRzIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9ERUJVR0ZTYCwgYENGRzgwMjExX0RFQlVHRlNgLCBhbmQgYERFQlVHX0ZTYC4gTGV0IG1lIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzOiBgTUFDODAyMTFfREVCVUdGU2AgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFfREVCVUdGU2AgYW5kIGBDRkc4MDIxMV9ERUJVR0ZTYCBkZXBlbmRzIG9uIGBERUJVR19GU2AuXG5cblNvLCB0byBzdW1tYXJpemUgc3VjY2luY3RseTpcblxuMS4gIFRoaXMgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBlbnRyeSBoYW5kbGluZywgcmVzZXR0aW5nIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gTlVMTCBkdXJpbmcgbmV0ZGV2IGRlYnVnZnMgcmVtb3ZhbCBhbmQgdXBkYXRpbmcga2V5IHN5bWxpbmtzIGR1cmluZyBuZXRkZXYgZGVidWdmcyByZWNyZWF0aW9uLlxuMi4gIEl0J3MgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMgKGludGVyZmFjZSBjcmVhdGlvbiwgbW9kaWZpY2F0aW9uLCBkZWxldGlvbikgYW5kIHNpbXVsYXRhYmxlIHZpYSBgbWFjODAyMTFfaHdzaW1gLlxuMy4gIEZ1enppbmcgcHJldmVudHMgYW5kIHRlc3RzIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHJlZmVyZW5jZXMgYW5kIHN0YXRlIGlzc3VlcyB3aXRoIGludGVyZmFjZS9saW5rIHJlY3JlYXRpb24gYW5kIGtleSBjb25maWd1cmF0aW9uLlxuNC4gIEZvY3VzIHN5bWJvbHMgYXJlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YC5cbjUuICBSZXF1aXJlZCBjb25maWdzIGFyZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuXG5cbk5vdywgSSdtIHJlYWR5IHRvIHByb2NlZWQgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTQzLCJPdXRwdXRUb2tlbnMiOjI1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjoxNC4xMTQyNzU3NTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwMzQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjE0LjE5MjI4NjkxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyOTAxMjU0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjoxNC4xOTI4NTY2NTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxODI4OTU1MjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlNDhhYzg5MGRiMDU1OGMxMTRhNWQ2ZTJlNDhlM2Q1ZTNjZGRlNjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDE3OjE1OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMgYi9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG4rKysgYi9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuQEAgLTIwLDYgKzIwLDcgQEBcbiAjaW5jbHVkZSBcImllZWU4MDIxMV9pLmhcIlxuICNpbmNsdWRlIFwicmF0ZS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnZnMuaFwiXG4rI2luY2x1ZGUgXCJkZWJ1Z2ZzX2tleS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnZnNfbmV0ZGV2LmhcIlxuICNpbmNsdWRlIFwiZHJpdmVyLW9wcy5oXCJcbiBcbkBAIC0xMDIwLDYgKzEwMjEsOCBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcbiBcdHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciA9IE5VTEw7XG4gXHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLnN1YmRpcl9zdGF0aW9ucyA9IE5VTEw7XG4rXHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuK1x0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuIH1cbiBcbiB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5AQCAtMTAzMiw2ICsxMDM1LDcgQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4ge1xuIFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XG4gXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcbitcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4gXG4gXHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbiBcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MTQuMTkyODU5Njg0WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzOTA3MjI0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkgQ29uY2VybnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZsYWcgaXQgZm9yIEtNU0FOIG9yIEtBU0FOIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXRpZXMuXG5cblNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBUaGUgZGlmZiBpbnRyb2R1Y2VzIGFuIGluY2x1ZGUgZm9yIGBkZWJ1Z2ZzX2tleS5oYCBhbmQgdXBkYXRlcyB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBmdW5jdGlvbnMuIFRoZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgZnVuY3Rpb24gbm93IGNsZWFycyB0aGUgcG9pbnRlcnMgdG8gYGRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCBgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCwgYW5kIHRoZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBmdW5jdGlvbiBoYXMgYSBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLlxuXG5NeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtYW5hZ2luZyB0aGVzZSBrZXkgcG9pbnRlcnMgYW5kIGFueSBhc3NvY2lhdGVkIGtleSBkYXRhIG1heSBiZSB0aGUgYXJlYSBvZiBmb2N1cywgYW5kIGlzIHdvcnRoIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbi4gVGltZSB0byBlbXBsb3kgc29tZSBncmVwcGluZyBhbmQgZmlsZSByZWFkaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgYWRkZWQgZmVhdHVyZXMuIEZyb20gaGVyZSwgSSB3aWxsIGFzc2VzcyB3aGV0aGVyIHRoZSBuZXcgb3IgbW9kaWZpZWQgY29kZSBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjIuNTgzNTg1NDQ5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUzNzQ1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM9MzYxPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzY5LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM3MDp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzEte1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtOS12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfbWdtdF9kZWZhdWx0KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xNy17fVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDMzPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzoxMDM4OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzOS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM3NS1cXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9Mzg4PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X21nbXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cXG5uZXQvbWFjODAyMTEva2V5LmM6NDAyOlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTQwMy19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NDE0PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X2JlYWNvbl9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNDI4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzo0Mjk6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNDMwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNS1cXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTA3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjMuMTQ4OTY1MDQ3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MDU2NzU2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSAzNzAsIGdpdmUgb3IgdGFrZSBhIGZldyBhcm91bmQgaXQuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCdzIGhhcHBlbmluZyBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIGRyaXZlci4gSSBleHBlY3QgdGhhdCBhcmVhIHRvIGJlIHJlbGF0ZWQgdG8uLi4gd2VsbCwgZ2l2ZW4gdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGNvbnRleHQgb2YgbWFjODAyMTEsIHByb2JhYmx5IHNvbWV0aGluZyB0byBkbyB3aXRoIGtleSBoYW5kbGluZyBvciBkZWJ1ZyBvdXRwdXQgcmVsYXRpbmcgdG8ga2V5cywgcG90ZW50aWFsbHkga2V5IG1hbmFnZW1lbnQgb3IgaW5qZWN0aW9uIG9mIGtleSBtYXRlcmlhbCB0aHJvdWdoIGRlYnVnZnMuIEkgYmV0IEknbGwgZmluZCBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB3b3JrIGZyb20uIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDUwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjQuOTU0NjQ0MDU4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MDpcXHRcXG4gMzYxOlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxcbiAzNjI6XFx0e1xcbiAzNjM6XFx0XFx0aWYgKCFrZXkpXFxuIDM2NDpcXHRcXHRcXHRyZXR1cm47XFxuIDM2NTpcXHRcXG4gMzY2OlxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShrZXktXFx1MDAzZWRlYnVnZnMuZGlyKTtcXG4gMzY3OlxcdFxcdGtleS1cXHUwMDNlZGVidWdmcy5kaXIgPSBOVUxMO1xcbiAzNjg6XFx0fVxcbiAzNjk6XFx0XFxuIDM3MDpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gMzcxOlxcdHtcXG4gMzcyOlxcdFxcdGNoYXIgYnVmWzUwXTtcXG4gMzczOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XFxuIDM3NDpcXHRcXG4gMzc1OlxcdFxcdGlmICghc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpcilcXG4gMzc2OlxcdFxcdFxcdHJldHVybjtcXG4gMzc3OlxcdFxcbiAzNzg6XFx0XFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuIDM3OTpcXHRcXG4gMzgwOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbiAzODE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XFxuIDM4MjpcXHRcXG4gMzgzOlxcdFxcdGlmIChzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSkge1xcbiAzODQ6XFx0XFx0XFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4gMzg1OlxcdFxcdFxcdFxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcXG4gMzg2OlxcdFxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbiAzODc6XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XFxuIDM4ODpcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFxcXCJkZWZhdWx0X3VuaWNhc3Rfa2V5XFxcIixcXG4gMzg5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xcbiAzOTA6XFx0XFx0fVxcbiAzOTE6XFx0XFxuIDM5MjpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkpO1xcbiAzOTM6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4gMzk0OlxcdFxcbiAzOTU6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSkge1xcbiAzOTY6XFx0XFx0XFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4gMzk3OlxcdFxcdFxcdFxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XFxuIDM5ODpcXHRcXHRcXHRzcHJpbnRmKGJ1ZiwgXFxcIi4uL2tleXMvJWRcXFwiLCBrZXktXFx1MDAzZWRlYnVnZnMuY250KTtcXG4gMzk5OlxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9XFxuIDQwMDpcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFxcXCJkZWZhdWx0X211bHRpY2FzdF9rZXlcXFwiLFxcbiA0MDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XFxuIDQwMjpcXHRcXHR9XFxuIDQwMzpcXHR9XFxuIDQwNDpcXHRcXG4gNDA1OlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIDQwNjpcXHR7XFxuIDQwNzpcXHRcXHRpZiAoIXNkYXRhKVxcbiA0MDg6XFx0XFx0XFx0cmV0dXJuO1xcbiA0MDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjI0Ljk1NDcxMDE5OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODQwNDU0MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyB0aGUgbWFjODAyMTEgTmV0d29yayBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIGFuZCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBzcGVjaWZpYyBoYXBwZW5pbmcgcmVsYXRlZCB0byBob3cgdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGhhbmRsZWQgYXQgYSBsb3dlciBsZXZlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIGxpbmVzIDEwMTAgdG8gMTA1MCwgYXMgdGhhdCBhcmVhIG9mdGVuIGhhbmRsZXMgaW1wb3J0YW50IG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQsIG1heWJlIHRoZXJlIGlzIHNvbWV0aGluZyBvZmYgYWJvdXQgdGhlIGRlYnVnZ2luZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIHRoZSBuZXR3b3JrIGRldmljZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBzZWN0aW9uIGFuZCBzZWUgd2hhdCBpdCByZXZlYWxzLiBIb3BlZnVsbHksIHRoaXMgZGV0YWlsZWQgbG9vayBzaGVkcyBzb21lIGxpZ2h0IG9uIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUxMywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjYuNzk1MTY2OTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDE1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDE1OlxcdFxcbjEwMTY6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbjEwMTc6XFx0e1xcbjEwMTg6XFx0XFx0aWYgKCFzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxcbjEwMTk6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjA6XFx0XFxuMTAyMTpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XFxuMTAyMjpcXHRcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcXG4xMDIzOlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLnN1YmRpcl9zdGF0aW9ucyA9IE5VTEw7XFxuMTAyNDpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG4xMDI1OlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XFxuMTAyNjpcXHR9XFxuMTAyNzpcXHRcXG4xMDI4OlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4xMDI5OlxcdHtcXG4xMDMwOlxcdFxcdGRlYnVnZnNfY2hhbmdlX25hbWUoc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgXFxcIm5ldGRldjolc1xcXCIsIHNkYXRhLVxcdTAwM2VuYW1lKTtcXG4xMDMxOlxcdH1cXG4xMDMyOlxcdFxcbjEwMzM6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTAzNDpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKVxcbjEwMzU6XFx0e1xcbjEwMzY6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxuMTAzNzpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG4xMDM4OlxcdFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxuMTAzOTpcXHRcXG4xMDQwOlxcdFxcdGlmIChzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XFxuMTA0MTpcXHRcXHRcXHRkcnZfdmlmX2FkZF9kZWJ1Z2ZzKHNkYXRhLVxcdTAwM2Vsb2NhbCwgc2RhdGEpO1xcbjEwNDI6XFx0XFx0XFx0aWYgKCFtbGRfdmlmKVxcbjEwNDM6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfYWRkKFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayk7XFxuMTA0NDpcXHRcXHR9XFxuMTA0NTpcXHR9XFxuMTA0NjpcXHRcXG4xMDQ3OlxcdHZvaWQgaWVlZTgwMjExX2xpbmtfZGVidWdmc19hZGQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuMTA0ODpcXHR7XFxuMTA0OTpcXHRcXHRjaGFyIGxpbmtfZGlyX25hbWVbMTBdO1xcbjEwNTA6XFx0XFxuMTA1MTpcXHRcXHRpZiAoV0FSTl9PTighbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciB8fCBsaW5rLVxcdTAwM2VkZWJ1Z2ZzX2RpcikpXFxuMTA1MjpcXHRcXHRcXHRyZXR1cm47XFxuMTA1MzpcXHRcXG4xMDU0OlxcdFxcdC8qIEZvciBub3csIHRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIG5vbi1NTE8gY2FwYWJsZSBkcml2ZXJzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjI2Ljc5NTI2ODk1NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njg3MTE5NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEZWJ1Z2ZzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCBmaXhpbmcgYSBwcmV0dHkgbmFzdHkgYnVnIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBkZWJ1Z2ZzIGVudHJpZXMsIHNwZWNpZmljYWxseSB3aGVuIGEgbmV0d29yayBkZXZpY2UgaXMgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3aGljaCBjYWxscyBgZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlYCBvbiB0aGUgbmV0ZGV2J3MgZGVidWdmcyBkaXJlY3RvcnkuICBUaGlzIHJlY3Vyc2l2ZSByZW1vdmFsIGxlYWRzIHRvIHN0YWxlIHBvaW50ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBkZW50cmllcyBwb2ludGVkIHRvIGJ5IGBzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGFyZSBnZXR0aW5nIGZyZWVkLiAgTGF0ZXIsIGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGNvdWxkIHRyeSB0byBvcGVyYXRlIG9uIHRoZXNlIG5vdy1pbnZhbGlkIHBvaW50ZXJzLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIGEgZG91YmxlLWZyZWUgaWYgd2UncmUgbm90IGNhcmVmdWwuICBBbHRlcm5hdGl2ZWx5LCB3aGVuIHdlIHJlY3JlYXRlIHRoZSBuZXRkZXYncyBkZWJ1Z2ZzLCB0aGUgZGVmYXVsdCBrZXkgc3ltbGlua3MgYXJlbid0IHJlLWVzdGFibGlzaGVkIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLlxuXG5UaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHdlIHNldCBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCB0byBgTlVMTGAgZHVyaW5nIG5ldGRldiByZW1vdmFsLiBUaGVuLCBkdXJpbmcgdGhlIHJlY3JlYXRpb24gb2YgdGhlIG5ldGRldidzIGRlYnVnZnMsIHdlIGNhbGwgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSlgIHRvIGVuc3VyZSB0aGUgc3ltbGlua3MgYXJlIGNvcnJlY3RseSByZWNyZWF0ZWQuIFRoaXMgZml4ZXMgdGhlIHN0YWxlIHBvaW50ZXIgaXNzdWUgYW5kIHJlc3RvcmVzIHRoZSBkZWZhdWx0IGtleSBzeW1saW5rcyBjb3JyZWN0bHkuXG5cbk5vdywgYWJvdXQgbWVtb3J5IHNhZmV0eS4gIEkndmUgY2hlY2tlZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuICBUaGVyZSdzIG5vIHN0cnVjdHVyZSBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLCBzbyB0aGF0J3MgZ29vZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFsbG9jYXRpb25zIGhhcHBlbmluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBzZXRzIHRob3NlIGtleSBwb2ludGVycyB0byBgTlVMTGAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCB1c2VzIGBzcHJpbnRmYCB3aXRoIGFuIGluaXRpYWxpemVkIHN0cmluZyBidWZmZXIgZm9yIHRoZSBzeW1saW5rIGNyZWF0aW9uLiAgVGhlIGNvcmUgbWVtb3J5IGJ1Z3MgKFVBRiwgZG91YmxlLWZyZWUpIGFyZSB0aGluZ3MgdGhhdCBLQVNBTiB3aWxsIGNhdGNoLlxuXG5TbywgZ2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgKm5vdCogYSBLTVNBTiBpc3N1ZS4gSSd2ZSBkb3VibGUtY2hlY2tlZCBteSB3b3JrLiBMZXQgbWUgcnVuIHRocm91Z2ggdGhlIHVzdWFsIEtNU0FOIGNyaXRlcmlhOlxuXG4xLiAgS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2VyIHNwYWNlPyBOby5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQWxsb2NhdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby5cbjQuICBCb3VuZHMgY2hlY2tzL2xlbmd0aHMgZ2l2aW5nIGFjY2VzcyB0byB1bmluaXQgbWVtb3J5PyBOby5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBidWcgZml4IHRoYXQgYWRkcmVzc2VzIGRhbmdsaW5nIGRlYnVnZnMgcG9pbnRlcnMgYW5kIG1pc3Npbmcgc3ltbGlua3MuICBLQVNBTiBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSByZW1haW5pbmcgbWVtb3J5IGVycm9ycy4gS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTEsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MzIuNDgyMzkwOTIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVidWdmcyBsaWZldGltZSBtYW5hZ2VtZW50IGluIG1hYzgwMjExIGJ5IHplcm9pbmcgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcG9pbnRlcnMgKGRlZmF1bHRfdW5pY2FzdF9rZXkgYW5kIGRlZmF1bHRfbXVsdGljYXN0X2tleSkgdXBvbiBpbnRlcmZhY2UgZGVidWdmcyByZW1vdmFsIGFuZCByZS1jcmVhdGluZyBkZWZhdWx0IGtleSBzeW1saW5rcyBkdXJpbmcgaW50ZXJmYWNlIGRlYnVnZnMgcmVjcmVhdGlvbi4gXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4pgnv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 16:04:41 +0000 UTC FinishedAt: 2026-09-07 17:16:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "9d1365e96a920bf79974161e370b5640a0054461", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_DEBUGFS", "CFG80211_DEBUGFS", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "9d1365e96a920bf79974161e370b5640a0054461", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_DEBUGFS", "CFG80211_DEBUGFS", "DEBUG_FS" ], "series_id": "0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_debugfs_remove_netdev", "ieee80211_debugfs_recreate_netdev", "ieee80211_debugfs_key_update_default" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1hYzgwMjExJiMzOTtzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG5pbmRleCBmM2M2YTQxZTQ5MTE5Li5hMDBiMDc3NmZkYjFkIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG5AQCAtMjAsNiAmIzQzOzIwLDcgQEBcbiAjaW5jbHVkZSBcJiMzNDtpZWVlODAyMTFfaS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7cmF0ZS5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZGVidWdmcy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RlYnVnZnNfa2V5LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkZWJ1Z2ZzX25ldGRldi5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHJpdmVyLW9wcy5oXCYjMzQ7XG4gXG5AQCAtMTAyMCw2ICYjNDM7MTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiBcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpO1xuIFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcbiBcdHNkYXRhLVx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcbiYjNDM7XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuJiM0MztcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbiB9XG4gXG4gdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuQEAgLTEwMzIsNiAmIzQzOzEwMzUsNyBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiB7XG4gXHRpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTtcbiBcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xuJiM0MztcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4gXG4gXHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbiBcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSYjMzk7cyBkZWJ1Z2ZzIG5ldGRldiBoYW5kbGluZyBieSBwcm9wZXJseSBjbGVhcmluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIHBvaW50ZXJzIHVwb24gcmVtb3ZhbCAoaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldikgYW5kIHJlYnVpbGRpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBsaW5rcyB1cG9uIGludGVyZmFjZSByZWNyZWF0aW9uIChpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzLiBGdXp6aW5nIGhlbHBzIGVuc3VyZSB0aGF0IGludGVyZmFjZSBzZXR1cCwgbGluayB1cGRhdGVzLCBhbmQga2V5IHVwZGF0ZXMgZG8gbm90IHByb2R1Y2Ugc3RhbGUgb3IgZGFuZ2xpbmcgZGVudHJ5IHJlZmVyZW5jZXMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWU0OGFjODkwZGIwNTU4YzExNGE1ZDZlMmU0OGUzZDVlM2NkZGU2NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gU2VwIDcgMTc6MTU6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCmluZGV4IGYzYzZhNDFlNDkxMTkuLmEwMGIwNzc2ZmRiMWQgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jCkBAIC0yMCw2ICYjNDM7MjAsNyBAQAogI2luY2x1ZGUgJiMzNDtpZWVlODAyMTFfaS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7cmF0ZS5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZGVidWdmcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2RlYnVnZnNfa2V5LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Z2ZzX25ldGRldi5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZHJpdmVyLW9wcy5oJiMzNDsKIApAQCAtMTAyMCw2ICYjNDM7MTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtJmd0O3ZpZi5kZWJ1Z2ZzX2Rpcik7CiAJc2RhdGEtJmd0O3ZpZi5kZWJ1Z2ZzX2RpciA9IE5VTEw7CiAJc2RhdGEtJmd0O2RlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDsKJiM0MzsJc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7CiYjNDM7CXNkYXRhLSZndDtkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7CiB9CiAKIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKQEAgLTEwMzIsNiAmIzQzOzEwMzUsNyBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIHsKIAlpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTsKIAlpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTsKJiM0MzsJaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTsKIAogCWlmIChzZGF0YS0mZ3Q7ZmxhZ3MgJmFtcDsgSUVFRTgwMjExX1NEQVRBX0lOX0RSSVZFUikgewogCQlkcnZfdmlmX2FkZF9kZWJ1Z2ZzKHNkYXRhLSZndDtsb2NhbCwgc2RhdGEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjEzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3VpdGFiaWxpdHkgRXZhbHVhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGRlY2lkZSBpZiBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2sgYW5kIGRvIGEgcXVpY2sgcmlzayBhc3Nlc3NtZW50LiBUaGlzIGlzIGEgUUEvdHJpYWdlIHRhc2ssIGV2YWx1YXRpbmcgYSBMaW51eCBrZXJuZWwgcGF0Y2guIFNlZW1zIGxpa2UgYSBiZW5pZ24sIGRlZmVuc2l2ZSBlZmZvcnQuIEdvb2QuCgpOb3csIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSYjMzk7dmUgZ290IHRoZSBkaWZmIGhlcmUsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGluY2x1ZGUsIGAmIzM0O2RlYnVnZnNfa2V5LmgmIzM0O2AsIGFuZCBtb2RpZnlpbmcgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBJIHNlZSBpdCYjMzk7cyByZW1vdmluZyBhbmQgc2V0dGluZyBhIGNvdXBsZSBvZiBkZWJ1Z2ZzIHBvaW50ZXJzIChgZGVmYXVsdF91bmljYXN0X2tleWAsIGBkZWZhdWx0X211bHRpY2FzdF9rZXlgKSwgYW5kIHRoZXJlJiMzOTtzIGEgbmV3IGNhbGwgdG8gYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAuIFNvLCBjbGVhcmx5LCB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBkZWZhdWx0IGtleXMgd2l0aGluIHRoZSBtYWM4MDIxMSBkZWJ1Z2ZzIGludGVyZmFjZS4KCkkmIzM5O2xsIG5lZWQgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgZGVidWdmc19rZXkuaGAgaXMgYWxsIGFib3V0LiBJJiMzOTtsbCBuZWVkIHRvIHNlYXJjaCB0aGUgY29kZWJhc2Ugd2l0aCBncmVwIChvciBtYXliZSBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkhKSB0byBzZWUgaG93IHRoZXNlIGtleXMgYXJlIHVzZWQsIHdoYXQgdGhlIHVwZGF0ZSBmdW5jdGlvbiBkb2VzLCBhbmQgd2hlcmUgdGhlIHBvdGVudGlhbCBuZXcgY29kZSBwYXRocyBhcmUgaW50cm9kdWNlZC4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSwgZXNwZWNpYWxseSB0aGUga2V5IHVwZGF0ZSwgd2lsbCBiZSBrZXkgdG8gZGVjaWRpbmcgaWYgdGhpcyBvcGVucyB1cCBuZXcgYXJlYXMgZm9yIGZ1enppbmcuIEFyZSB3ZSBzZXR0aW5nIHVwIG5ldyBlbnRyeSBwb2ludHMsIG5ldyBkYXRhIHN0cnVjdHVyZXMsIG5ldyB3YXlzIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbD8gT3IgaXMgdGhpcyBqdXN0IGEgY2xlYW4gdXAgb2YgYSBtZW1vcnkgbGVhaz8gT25seSB0aW1lIHdpbGwgdGVsbCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAyOD12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzMi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzM6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM0LVx0XHRcdFx0ICAgICAgIGJvb2wgbWxkX3ZpZilcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaD0xNT12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTY6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNy1cdFx0XHRcdCAgICAgICBib29sIG1sZF92aWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTI4PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTMwLXt9XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDozMTpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMzItXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBtbGRfdmlmKVxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmM9MTA4PXZvaWQgZHJ2X3JlbW92ZV9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy0xMjQtXHRpZiAoc2RhdGEgIT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVx1MDAzZW1vbml0b3Jfc2RhdGEpKVxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYzoxMjU6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmMtMTI2LVx0XHRcdFx0XHRcdCAgc2RhdGEtXHUwMDNldmlmLnZhbGlkX2xpbmtzKTtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTc2LVxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk3NzpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSwgZmFsc2UpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtMTk3OC19XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz0yODc9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbGluay5jLTM1Mi1cdGlmICghb2xkX2xpbmtzKVxubmV0L21hYzgwMjExL2xpbmsuYzozNTM6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzZGF0YSwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvbGluay5jLTM1NC1cbi0tXG5uZXQvbWFjODAyMTEvbGluay5jLTM4NC1cdFx0aWYgKCFuZXdfbGlua3MpXG5uZXQvbWFjODAyMTEvbGluay5jOjM4NTpcdFx0XHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZpbGVzLi4uCgoqKkRpdmluZyBpbnRvIG1hYzgwMjExIERlYnVnRlMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBtYWM4MDIxMWAmIzM5O3MgZGVidWcgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMg4oCTIHNwZWNpZmljYWxseSwgYGRlYnVnZnNfa2V5LmNgIGFuZCBgZGVidWdmc19uZXRkZXYuY2AuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGhvb2sgaW50byB0aGUgZXhpc3RpbmcgZGVidWdmcyBmcmFtZXdvcmsuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBtZWNoYW5pc21zIGFyZSBkZXNpZ25lZCBmb3IgaW5zcGVjdGlvbiBhbmQgcG90ZW50aWFsIG1hbmlwdWxhdGlvbiBvZiB3aXJlbGVzcyBrZXlzIGFuZCBuZXR3b3JrIGRldmljZSBzdGF0ZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBjb250ZXh0LiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGUgZmlsZSBoaWVyYXJjaHksIHRoZSBwZXJtaXNzaW9ucywgYW5kIHRoZSBhY3R1YWwgcmVhZC93cml0ZSBoYW5kbGVycyB0aGV5JiMzOTt2ZSBpbXBsZW1lbnRlZC4gTXkgZXhwZWN0YXRpb24gaXMgdGhlIGZyYW1ld29yayB3aWxsIGFsbG93IGZvciBleGFtaW5hdGlvbiBvZiBrZXkgZGF0YSwgYXNzb2NpYXRpb24gcGFyYW1ldGVycywgYW5kIGRyaXZlci1zcGVjaWZpYyBzdGF0aXN0aWNzLCBhbmQgcHJvYmFibHkgdGhlIGFiaWxpdHkgdG8gZW5hYmxlL2Rpc2FibGUgY2VydGFpbiBkZWJ1Z2dpbmcgZmxhZ3MuIEkmIzM5O2xsIGFsc28gY2hlY2sgaG93IHRoZXNlIGRlYnVnZnMgZW50cmllcyBpbnRlcmFjdCB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlIGFuZCBpdHMgYXNzb2NpYXRlZCBuZXR3b3JrIGRldmljZXMsIGxvb2tpbmcgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5IHVzZSB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVpciBkZWJ1Z2ZzIGVudHJpZXMgaW4gdGhlIGRldmljZSBsaWZlY3ljbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTAxMDpcdFx0XHRcdFx0XHRcdFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcbjEwMTE6XHRcdGFkZF9maWxlcyhzZGF0YSk7XG4xMDEyOlx0XHRpZiAoIW1sZF92aWYpXG4xMDEzOlx0XHRcdGFkZF9saW5rX2ZpbGVzKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmssIHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4xMDE0Olx0fVxuMTAxNTpcdFxuMTAxNjpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbjEwMTc6XHR7XG4xMDE4Olx0XHRpZiAoIXNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpcilcbjEwMTk6XHRcdFx0cmV0dXJuO1xuMTAyMDpcdFxuMTAyMTpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4xMDIyOlx0XHRzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xuMTAyMzpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xuMTAyNDpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbjEwMjU6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbjEwMjY6XHR9XG4xMDI3Olx0XG4xMDI4Olx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuMTAyOTpcdHtcbjEwMzA6XHRcdGRlYnVnZnNfY2hhbmdlX25hbWUoc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBcJiMzNDtuZXRkZXY6JXNcJiMzNDssIHNkYXRhLVx1MDAzZW5hbWUpO1xuMTAzMTpcdH1cbjEwMzI6XHRcbjEwMzM6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbjEwMzQ6XHRcdFx0XHRcdCAgICAgICBib29sIG1sZF92aWYpXG4xMDM1Olx0e1xuMTAzNjpcdFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XG4xMDM3Olx0XHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcbjEwMzg6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4xMDM5Olx0XG4xMDQwOlx0XHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbjEwNDE6XHRcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuMTA0MjpcdFx0XHRpZiAoIW1sZF92aWYpXG4xMDQzOlx0XHRcdFx0aWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfYWRkKFx1MDAyNnNkYXRhLVx1MDAzZWRlZmxpbmspO1xuMTA0NDpcdFx0fVxuMTA0NTpcdH1cbjEwNDY6XHRcbjEwNDc6XHR2b2lkIGllZWU4MDIxMV9saW5rX2RlYnVnZnNfYWRkKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuMTA0ODpcdHtcbjEwNDk6XHRcdGNoYXIgbGlua19kaXJfbmFtZVsxMF07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkRpc3NlY3RpbmcgdGhlIERlYnVnZnMgS2V5IFVwZGF0ZSBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgZnVuY3Rpb24gb3BlcmF0ZXMgYW5kLCBjcnVjaWFsbHksIGhvdyBkZWJ1Z2ZzIGtleSBmaWxlcyBhcmUgYWN0dWFsbHkgZ2VuZXJhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IHdoYXQgaXQmIzM5O3MgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgZGVmYXVsdCB1bmljYXN0IGtleSBpcyBkZWZpbmVkIGFuZCBob3cgdGhpcyB1cGRhdGUgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggaXQuIFRvIGRvIHRoYXQsIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHRhcmdldGVkIGdyZXAuIEkmIzM5O2xsIGxvb2sgZm9yIGJvdGggYGRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCwgb2YgY291cnNlLCB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgZnVuY3Rpb24gaXRzZWxmLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byB0cmFjZSB0aGUgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLiBJIGV4cGVjdCBJJiMzOTtsbCBiZSBhYmxlIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHJlbGV2YW50IGZpbGUgcGF0aHMgYW5kIHZhcmlhYmxlcywgdGhlbiBkaXZlIGRlZXBlciBpZiB0aGUgaW5pdGlhbCByZXN1bHRzIHdhcnJhbnQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0fGRlZmF1bHRfdW5pY2FzdF9rZXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz02NTYwPXN0YXRpYyBpbnQgYXRoMTBrX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNjY1MC1cdFx0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NjY1MTpcdFx0ICogU3RhdGljIFdFUCBzZXRzIGRlZl93ZXBfa2V5X2lkeCB2aWEgLnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY2NTItXHRcdCAqIGFmdGVyIGZpcnN0IHNldF9rZXkoKS5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjY3MTU6c3RhdGljIHZvaWQgYXRoMTBrX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy02NzE2LVx0XHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk0ODYtXHQuc2V0X2tleVx0XHRcdD0gYXRoMTBrX3NldF9rZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk0ODc6XHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgICAgICAgID0gYXRoMTBrX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NDg4LVx0LnN0YV9zdGF0ZVx0XHRcdD0gYXRoMTBrX3N0YV9zdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jPTQxPXZvaWQgaXdsX212bV9pcHY2X2FkZHJfY2hhbmdlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMtNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jOjY2OnZvaWQgaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL2QzLmMtNjctXHRcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz02MzUxPWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tdm1faHdfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNjQyNi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM6NjQyNzpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IGl3bF9tdm1fc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTY0MjgtI2VuZGlmXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmM9ODg5PWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGl3bF9tdm1fbWxkX2h3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYy05NjMtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYzo5NjQ6XHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmMtOTY1LSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oPTIxNDc9dm9pZCBpd2xfbXZtX2lwdjZfYWRkcl9jaGFuZ2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjE0OS1cdFx0XHQgICAgICBzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjIxNTA6dm9pZCBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbXZtLmgtMjE1MS1cdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM9MTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyB3Znhfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE0OS1cdC5zZXRfcnRzX3RocmVzaG9sZCAgICAgICA9IHdmeF9zZXRfcnRzX3RocmVzaG9sZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jOjE1MDpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE1MS1cdC5ic3NfaW5mb19jaGFuZ2VkICAgICAgICA9IHdmeF9ic3NfaW5mb19jaGFuZ2VkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmM9MjUwPXN0YXRpYyB2b2lkIHdmeF9iZWFjb25fbG9zc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmM6MjYxOnZvaWQgd2Z4X3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuYy0yNjIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmg9MjU9aW50IHdmeF9zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgaW50IHJhZGlvX2lkeCwgdTMyIHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc3RhLmg6MjY6dm9pZCB3Znhfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsIGludCBpZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaC0yNy12b2lkIHdmeF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTYwMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHdsMTI3MV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy02MDI5LVx0LnNldF9iaXRyYXRlX21hc2sgPSB3bDEyeHhfc2V0X2JpdHJhdGVfbWFzayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjAzMDpcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdsMTI3MV9vcF9zZXRfZGVmYXVsdF9rZXlfaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy02MDMxLVx0LmNoYW5uZWxfc3dpdGNoID0gd2wxMnh4X29wX2NoYW5uZWxfc3dpdGNoLFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MzQ2MD12b2lkIGllZWU4MDIxMV9wdXJnZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTM1MTItICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzUxMzogKiBUaGUgc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoKSBjYWxsIHVwZGF0ZXMgdGhlIGRlZmF1bHQgV0VQIGtleSBpbmRleFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTE0LSAqIGNvbmZpZ3VyZWQgdG8gdGhlIGhhcmR3YXJlIGZvciBXRVAgZW5jcnlwdGlvbiB0eXBlLiBUaGlzIGlzIHJlcXVpcmVkXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDY4PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTctICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDIxODogKiBAc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXk6IFNldCB0aGUgZGVmYXVsdCAodW5pY2FzdCkga2V5IGluZGV4LCB1c2VmdWwgZm9yXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTktICpcdFdFUCB3aGVuIHRoZSBkZXZpY2Ugc2VuZHMgZGF0YSBwYWNrZXRzIGF1dG9ub21vdXNseSwgZS5nLiBmb3IgQVJQXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzQyPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MDAtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9ndGtfcmVrZXlfZGF0YSAqZGF0YSk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MDE6XHR2b2lkICgqc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODAyLVx0XHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYz0zNjE9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzY5LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzcwOnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzcxLXtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzktXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODA6XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgxOlx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4Mi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4MzpcdGlmIChzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zODQtXHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6Mzg1Olx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4Ni1cdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODc6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODg6XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X3VuaWNhc3Rfa2V5XCYjMzQ7LFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg5LVx0XHRcdFx0XHQgICAgICAgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oPTc9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC05LXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTE3LXt9XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoxODpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDE2PXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDIzLVx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAyNDpcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDI1LVx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9MTEyMz1zdGF0aWMgaW5saW5lIHZvaWRcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEyNDpkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTExMjUtXHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTEzNS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEzNjpcdHRyYWNlX2Rydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShsb2NhbCwgc2RhdGEsIGtleV9pZHgpO1xubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMTM3Olx0aWYgKGxvY2FsLVx1MDAzZW9wcy1cdTAwM2VzZXRfZGVmYXVsdF91bmljYXN0X2tleSlcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEzODpcdFx0bG9jYWwtXHUwMDNlb3BzLVx1MDAzZXNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KFx1MDAyNmxvY2FsLVx1MDAzZWh3LCBcdTAwMjZzZGF0YS1cdTAwM2V2aWYsXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTExMzktXHRcdFx0XHRcdFx0ICAgIGtleV9pZHgpO1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNjY9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5Ni1cdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICprZXlzW05VTV9ERUZBVUxUX0tFWVNdO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTE5NzpcdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICpkZWZhdWx0X3VuaWNhc3Rfa2V5O1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5OC1cbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjU2LVx0XHRzdHJ1Y3QgZGVudHJ5ICpzdWJkaXJfc3RhdGlvbnM7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMjU3Olx0XHRzdHJ1Y3QgZGVudHJ5ICpkZWZhdWx0X3VuaWNhc3Rfa2V5O1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTI1OC1cdFx0c3RydWN0IGRlbnRyeSAqZGVmYXVsdF9tdWx0aWNhc3Rfa2V5O1xuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjYtXHRpZiAodW5pKSB7XG5uZXQvbWFjODAyMTEva2V5LmM6MzY3Olx0XHRyY3VfYXNzaWduX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSwga2V5KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNjgtXHRcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTM2OS1cdFx0aWYgKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQX1ZMQU4pXG5uZXQvbWFjODAyMTEva2V5LmM6MzcwOlx0XHRcdGRydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEsIGlkeCk7XG5uZXQvbWFjODAyMTEva2V5LmMtMzcxLVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzUtXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzctfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zODg9X19pZWVlODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cbm5ldC9tYWM4MDIxMS9rZXkuYzo0MDI6XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTQwMy19XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTQxND1fX2llZWU4MDIxMV9zZXRfZGVmYXVsdF9iZWFjb25fa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy00MjgtXG5uZXQvbWFjODAyMTEva2V5LmM6NDI5Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy00MzAtfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz00NDA9c3RhdGljIGludCBpZWVlODAyMTFfa2V5X3JlcGxhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTU0OS1cdFx0XHRvbGQgPT0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG5uZXQvbWFjODAyMTEva2V5LmM6NTUwOlx0XHRcdFx0XHRcdCBzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9rZXkuYy01NTEtXHRcdGRlZm11bHRpa2V5ID0gb2xkIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XG4tLVxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jPTQ2Mz12b2lkIG1lc2hfZmFzdF90eF9jYWNoZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNTIzLVx0aWYgKCFrZXkpXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NTI0Olx0XHRrZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMtNTI1LVx0YnVpbGQuZmFzdF90eC5rZXkgPSBrZXk7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcyMD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjAtXHRpZiAoIWtleSlcbm5ldC9tYWM4MDIxMS9yeC5jOjQ4MjE6XHRcdGtleSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjItXHRpZiAoa2V5KSB7XG4tLVxubmV0L21hYzgwMjExL3RyYWNlLmg9MjE1MT1ERUZJTkVfRVZFTlQobG9jYWxfc2RhdGFfZXZ0LCBkcnZfYWJvcnRfcG1zcixcbi0tXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMTU2LVxubmV0L21hYzgwMjExL3RyYWNlLmg6MjE1NzpUUkFDRV9FVkVOVChkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXG5uZXQvbWFjODAyMTEvdHJhY2UuaC0yMTU4LVx0VFBfUFJPVE8oc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmM9NTk5PWllZWU4MDIxMV9zZWxlY3Rfa2V5XzgwMjMoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02MDgtXHRcdGlmICghdHgtXHUwMDNla2V5KVxubmV0L21hYzgwMjExL3R4LmM6NjA5Olx0XHRcdHR4LVx1MDAzZWtleSA9IHJjdV9kZXJlZmVyZW5jZSh0eC1cdTAwM2VzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS90eC5jLTYxMC1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02MzA9aWVlZTgwMjExX3R4X2hfc2VsZWN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0OS1cdGVsc2UgaWYgKCFpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6NjUwOlx0XHQgKGtleSA9IHJjdV9kZXJlZmVyZW5jZSh0eC1cdTAwM2VzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSkpXG5uZXQvbWFjODAyMTEvdHguYy02NTEtXHRcdHR4LVx1MDAzZWtleSA9IGtleTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDcyPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMjM1LVx0aWYgKCFidWlsZC5rZXkpXG5uZXQvbWFjODAyMTEvdHguYzozMjM2Olx0XHRidWlsZC5rZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XG5uZXQvbWFjODAyMTEvdHguYy0zMjM3LVx0aWYgKGJ1aWxkLmtleSkge1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ4MTU9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdF84MDIzKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDg1Mi1cdFx0aWYgKCFrZXkpXG5uZXQvbWFjODAyMTEvdHguYzo0ODUzOlx0XHRcdGtleSA9IHJjdV9kZXJlZmVyZW5jZShzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTcKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgIGZvciBEZWZhdWx0IEtleSBVcGRhdGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGZ1bmN0aW9uIG9wZXJhdGVzIHdpdGhpbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggbWFjODAyMTEmIzM5O3Mgb3ZlcmFsbCBhcmNoaXRlY3R1cmUsIHNvIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gcGxheXMgYSBjcnVjaWFsIHJvbGUgaW4gbWFuYWdpbmcgZGVmYXVsdCBlbmNyeXB0aW9uIGtleXMsIGxpa2VseSB0aHJvdWdoIHRoZSBkZWJ1Z2ZzIGludGVyZmFjZS4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBhY3R1YWwgbWVjaGFuaXNtIG9mIHNldHRpbmcsIHVwZGF0aW5nLCBhbmQgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGRlZmF1bHQga2V5IGNvbmZpZ3VyYXRpb24gdGhhdCB0aGUgd2lyZWxlc3Mgc3RhY2sgdXNlcy4gR2l2ZW4gdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgYGRlYnVnZnNfa2V5LmNgIGZpbGUsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVyYWN0cyB3aXRoIGRlYnVnZnMgZW50cmllcyAtIGxpa2VseSB0byBleHBvc2Uga2V5IG1hbmlwdWxhdGlvbiB0byBkZXZlbG9wZXJzIGFuZCBkZWJ1Z2dpbmcuCkkmIzM5O2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgYW55IGVycm9yIGhhbmRsaW5nIGl0IGltcGxlbWVudHMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2V5IG1hbmFnZW1lbnQgc3lzdGVtIG9mIG1hYzgwMjExLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGNvbnNpZGVyaW5nIHRoZSBpbnRlcmZhY2UsIGlucHV0IGFuZCBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbi4gR2l2ZW4gbXkgY3VycmVudCBwcm9qZWN0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGVkZ2UgY2FzZXMsIHNlY3VyaXR5LCBhbmQgcG9zc2libGUgcmFjZSBjb25kaXRpb25zIHRoYXQgbWF5IGNvbWUgdXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM2NTpcdFxuIDM2NjpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGtleS1cdTAwM2VkZWJ1Z2ZzLmRpcik7XG4gMzY3Olx0XHRrZXktXHUwMDNlZGVidWdmcy5kaXIgPSBOVUxMO1xuIDM2ODpcdH1cbiAzNjk6XHRcbiAzNzA6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiAzNzE6XHR7XG4gMzcyOlx0XHRjaGFyIGJ1Zls1MF07XG4gMzczOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5O1xuIDM3NDpcdFxuIDM3NTpcdFx0aWYgKCFzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpXG4gMzc2Olx0XHRcdHJldHVybjtcbiAzNzc6XHRcbiAzNzg6XHRcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiAzNzk6XHRcbiAzODA6XHRcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSk7XG4gMzgxOlx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuIDM4MjpcdFxuIDM4MzpcdFx0aWYgKHNkYXRhLVx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpIHtcbiAzODQ6XHRcdFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG4gMzg1Olx0XHRcdFx0XHRcdHNkYXRhLVx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xuIDM4NjpcdFx0XHRzcHJpbnRmKGJ1ZiwgXCYjMzQ7Li4va2V5cy8lZFwmIzM0Oywga2V5LVx1MDAzZWRlYnVnZnMuY250KTtcbiAzODc6XHRcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cbiAzODg6XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFwmIzM0O2RlZmF1bHRfdW5pY2FzdF9rZXlcJiMzNDssXG4gMzg5Olx0XHRcdFx0XHRcdCAgICAgICBzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XG4gMzkwOlx0XHR9XG4gMzkxOlx0XG4gMzkyOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XG4gMzkzOlx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XG4gMzk0Olx0XG4gMzk1Olx0XHRpZiAoc2RhdGEtXHUwMDNlZGVmbGluay5kZWZhdWx0X211bHRpY2FzdF9rZXkpIHtcbiAzOTY6XHRcdFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHksXG4gMzk3Olx0XHRcdFx0XHRcdHNkYXRhLVx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KTtcbiAzOTg6XHRcdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG4gMzk5Olx0XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID1cbiA0MDA6XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFwmIzM0O2RlZmF1bHRfbXVsdGljYXN0X2tleVwmIzM0OyxcbiA0MDE6XHRcdFx0XHRcdFx0ICAgICAgIHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgYnVmKTtcbiA0MDI6XHRcdH1cbiA0MDM6XHR9XG4gNDA0Olx0XG4gNDA1Olx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbiA0MDY6XHR7XG4gNDA3Olx0XHRpZiAoIXNkYXRhKVxuIDQwODpcdFx0XHRyZXR1cm47XG4gNDA5Olx0XG4gNDEwOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbWdtdF9rZXkpO1xuIDQxMTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X21nbXRfa2V5ID0gTlVMTDtcbiA0MTI6XHR9XG4gNDEzOlx0XG4gNDE0Olx0dm9pZFxuIDQxNTpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gNDE2Olx0e1xuIDQxNzpcdFx0aWYgKCFzZGF0YSlcbiA0MTg6XHRcdFx0cmV0dXJuO1xuIDQxOTpcdFxuIDQyMDpcdFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkpO1xuIDQyMTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkgPSBOVUxMO1xuIDQyMjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5NDMKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIG1hYzgwMjExIERlYnVnZnMgSXNzdWUqKgoKT2theSwgc28gbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIHJlbW92ZXMgdGhlIGVudGlyZSBkZWJ1Z2ZzIGRpcmVjdG9yeSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBzdGF0aW9uIGRhdGEgKGBzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyYCkgcmVjdXJzaXZlbHkuIFRoZSBjb3JlIHByb2JsZW0gd2FzIHRoYXQsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVycyBpbiBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGlmIHdlIHJlbW92ZWQgdGhlIGRlYnVnZnMgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5LgoKVGhlIHByb2JsZW1hdGljIHNjZW5hcmlvIGFyb3NlIHdoZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgd2FzIGNhbGxlZC4gSXQgd291bGQgY29ycmVjdGx5IHJlbW92ZSB0aGUgb2xkIG5ldGRldiBhbmQgdGhlbiBhZGQgYSBuZXcgb25lLCBidXQgY3J1Y2lhbGx5LCBpdCAqd2FzbiYjMzk7dCogdXBkYXRpbmcgdGhlIGRlZmF1bHQga2V5cy4gVGhpcyBtZWFudCBgZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBkZWZhdWx0X211bHRpY2FzdF9rZXlgIGNvdWxkIGJlY29tZSBzdGFsZSwgcG9pbnRpbmcgdG8gbWVtb3J5IHRoYXQgaGFkIGJlZW4gZnJlZWQsIG9yIGJlIGVudGlyZWx5IGxvc3QgYXMgdGhlIG5ldyBuZXRkZXYgY2FtZSBpbnRvIGV4aXN0ZW5jZS4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkLiBJbiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAsIHdlIG5vdyBleHBsaWNpdGx5IHNldCBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIHRvIGBOVUxMYC4gVGhpcyBjbGVhbnMgdXAgdGhlIG9sZCBrZXkgcG9pbnRlcnMgb24gcmVtb3ZhbC4gQW5kIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLCB3ZSYjMzk7dmUgYWRkZWQgYSBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpYCBhZnRlciB0aGUgcmVjcmVhdGUgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBrZXlzIGZvciB0aGUgbmV3IG5ldGRldi4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGRlZmF1bHQga2V5cyBhcmUgYWx3YXlzIGtlcHQgY29uc2lzdGVudC4KCk5vdywgYXMgYW4gYXNpZGUsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHJlYWwtd29ybGQgaW1wbGljYXRpb25zLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGZ1enppbmcuIExldCYjMzk7cyBjb25zaWRlciByZWFjaGFiaWxpdHkuIEdpdmVuIHRoYXQgc3l6a2FsbGVyIGlzIGhlYXZpbHkgZnV6emVkIGJ5IHRoZSBgbWFjODAyMTFfaHdzaW1gIHdoaWNoIGNyZWF0ZXMgdmlydHVhbCBtYWM4MDIxMSBkZXZpY2VzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSBrZXJuZWxzLCB0aGVuIHllcywgbWFjODAyMTEgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiBzeXprYWxsZXIuIFRoYXQmIzM5O3MgZXhjZWxsZW50IG5ld3MuIEdpdmVuIHRoZSBwb3B1bGFyaXR5IG9mIG5sODAyMTEsIG1hYzgwMjExIGlzIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGZ1enplZCBhcmVhcyBpbiBzeXprYWxsZXIuIFRoaXMgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgd2lsbCBiZSBnZXR0aW5nIHRlc3RlZCBhIGxvdC4gQW5kLCBhcyBhIGRvdWJsZS1jaGVjaywgaXQmIzM5O3Mgd29ydGggcmV2aWV3aW5nIHRoZSBLY29uZmlnIHNldHRpbmdzIHRvIGNvbmZpcm0gdGhhdCBkZWJ1Z2ZzIHN1cHBvcnQgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWc9MzQ9Q09ORklHX01BQzgwMjExPW1cbmFyY2gvbWlwcy9jb25maWdzL2F0aDI1X2RlZmNvbmZpZzozNTpDT05GSUdfTUFDODAyMTFfREVCVUdGUz15XG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWctMzYtQ09ORklHX01URD15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoNzlfZGVmY29uZmlnPTI4PUNPTkZJR19NQUM4MDIxMT1tXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc6Mjk6Q09ORklHX01BQzgwMjExX0RFQlVHRlM9eVxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoNzlfZGVmY29uZmlnLTMwLUNPTkZJR19NVEQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Mjg4PUNPTkZJR19NQUM4MDIxMV9MRURTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6Mjg5OkNPTkZJR19NQUM4MDIxMV9ERUJVR0ZTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMjkwLUNPTkZJR19ORVRfOVA9bVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MjI9YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX0xFRFMpICYjNDM7PSBsZWRzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MjM6YXRoMTBrX2NvcmUtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnNfc3RhLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMjQtYXRoMTBrX2NvcmUtJChDT05GSUdfUE0pICYjNDM7PSB3b3cub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oPTUyMz1zdHJ1Y3QgYXRoMTBrX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6NTQ3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ4LVx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2MjQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUykpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjYyNS1cdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzdGFfdGlkX3N0YXRzX21hc2tcJiMzNDssIDA2MDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEwLSNlbmRpZiAvKiBDT05GSUdfQVRIMTBLX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDoyMTE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEyLXZvaWQgYXRoMTBrX3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg9MjQ2PXZvaWQgYXRoMTBrX3N0YV91cGRhdGVfcnhfdGlkX3N0YXRzX2FtcGR1KHN0cnVjdCBhdGgxMGsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTEtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjI1MjojZW5kaWYgLyogQ09ORklHX01BQzgwMjExX0RFQlVHRlMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz05NDcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGgxMGtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNS0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6OTUyNjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNy1cdC5zdGFfYWRkX2RlYnVnZnNcdFx0PSBhdGgxMGtfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZz0zOD1jb25maWcgQVRIMTFLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0MDpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTU0Mj1zdHJ1Y3QgYXRoMTFrX3N0YSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmg6NTY2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY3LVx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MzU9Y29uZmlnIEFUSDEyS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9NTg9Y29uZmlnIEFUSDlLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBERUJVR19GUyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjEtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYz0yNzkwPXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jOjI4MzU6I2lmIGRlZmluZWQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzYtXHQuc3RhX2FkZF9kZWJ1Z2ZzICAgID0gYXRoOWtfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnPTI3PWNvbmZpZyBDQVJMOTE3MF9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RGVidWdGUyBTdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzoyOTpcdGRlcGVuZHMgb24gQ0FSTDkxNzAgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0zMC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYz02MDA9aWwzOTQ1X3JzX2dldF9yYXRlKHZvaWQgKmlsX3IsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHZvaWQgKmlsX3N0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtNzk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjc5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy03OTgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jPTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy04NjctXHQuZnJlZV9zdGEgPSBpbDM5NDVfcnNfZnJlZV9zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmM6ODY4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jLTg2OS1cdC5hZGRfc3RhX2RlYnVnZnMgPSBpbDM5NDVfYWRkX2RlYnVnZnMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jPTIyNjM9aWw0OTY1X3JzX3JhdGVfaW5pdChzdHJ1Y3QgaWxfcHJpdiAqaWwsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHN0YV9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmMtMjM0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyMzQyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDMtXHRscV9zdGEtXHUwMDNlZGJnX2ZpeGVkX3JhdGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYz0yNDkzPWlsNDk2NV9yc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpbF9scV9zdGEgKmxxX3N0YSwgdTMyICogcmF0ZV9uX2ZsYWdzLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYy0yNDk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jOjI0OTk6XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI1MDAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9Mjc2OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfNDk2NV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzctXHQuZnJlZV9zdGEgPSBpbDQ5NjVfcnNfZnJlZV9zdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM6Mjc3ODpcdC5hZGRfc3RhX2RlYnVnZnMgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmMtMjc3OS1cdFx0XHRcdCAgaWw0OTY1X3JzX2FkZF9kZWJ1Z2ZzKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnPTkzPWNvbmZpZyBJV0xFR0FDWV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtpd2xlZ2FjeSAoaXdsIDM5NDUvNDk2NSkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjk1Olx0ZGVwZW5kcyBvbiBJV0xFR0FDWSBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc9MTMxPWNvbmZpZyBJV0xXSUZJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzItXHRib29sIFwmIzM0O2l3bHdpZmkgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWctMTM0LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MTM3PXN0YXRpYyB2b2lkIHJzX3N0YXlfaW5fdGFibGUoc3RydWN0IGl3bF9scV9zdGEgKmxxX3N0YSwgYm9vbCBmb3JjZV9zZWFyY2gpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYzoxNDA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTE0MS1zdGF0aWMgdm9pZCByc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpd2xfbHFfc3RhICpscV9zdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yNDg9c3RhdGljIHU4IHJzX3RsX2FkZF9wYWNrZXQoc3RydWN0IGl3bF9scV9zdGEgKmxxX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjI5ODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk5LS8qXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yNzQwPXZvaWQgaXdsX3JzX3JhdGVfaW5pdChzdHJ1Y3QgaXdsX3ByaXYgKnByaXYsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHU4IHN0YV9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTI4MzAtXHRscV9zdGEtXHUwMDNlaXNfYWdnID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6MjgzMTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjgzMi1cdGxxX3N0YS1cdTAwM2VkYmdfZml4ZWRfcmF0ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yOTk2PXN0YXRpYyB2b2lkIHJzX2ZyZWVfc3RhKHZvaWQgKnByaXZfciwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMwMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjMwMDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMwMDctc3RhdGljIHZvaWQgcnNfZGJnZnNfc2V0X21jcyhzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MzI2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMzI3NS1cdC5mcmVlX3N0YSA9IHJzX2ZyZWVfc3RhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYzozMjc2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMjc3LVx0LmFkZF9zdGFfZGVidWdmcyA9IHJzX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmg9MzE5PXN0cnVjdCBpd2xfbHFfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oLTM1Mi1cdHU4IHR4X2FnZ190aWRfZW47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM1MzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmgtMzU0LVx0dTMyIGRiZ19maXhlZF9yYXRlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM9NzA1PXZvaWQgaXdsX212bV9yc19hZGRfc3RhX2xpbmsoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcxOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLWZ3LmM6NzIwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMtZncuYy03MjEtXHRscV9zdGEtXHUwMDNlcGVycy5kYmdfZml4ZWRfcmF0ZSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0xOTYwPXN0YXRpYyBib29sIHJzX3RwY19wZXJmb3JtKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0xOTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoxOTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0xOTc5LVx0aWYgKGxxX3N0YS1cdTAwM2VwZXJzLmRiZ19maXhlZF90eHBfcmVkdWN0aW9uIFx1MDAzYz0gVFBDX01BWF9SRURVQ1RJT04pIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTI3MjM9c3RhdGljIHZvaWQgKnJzX2Rydl9hbGxvY19zdGEodm9pZCAqbXZtX3JhdGUsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzMzLVx0bHFfc3RhLVx1MDAzZXBlcnMuZHJ2ID0gbXZtO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoyNzM0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzM1LVx0bHFfc3RhLVx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzAzNj1zdGF0aWMgdm9pZCBfX2l3bF9tdm1fcnNfdHhfc3RhdHVzKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMDcxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcyLVx0LyogRGlzYWJsZSBsYXN0IHR4IGNoZWNrIGlmIHdlIGFyZSBkZWJ1Z2dpbmcgd2l0aCBmaXhlZCByYXRlIGJ1dFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzI2OT12b2lkIGl3bF9tdm1fcnNfdHhfc3RhdHVzKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMjg0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjg1LXN0YXRpYyB2b2lkIHJzX2J1aWxkX3JhdGVzX3RhYmxlX2Zyb21fZml4ZWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTMzMTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMzIwOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMzIxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzUxMD1zdGF0aWMgdm9pZCByc19zZXRfbHFfc3NfcGFyYW1zKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNTI3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNTI4LVx0LyogQ2hlY2sgaWYgZm9yY2luZyB0aGUgZGVjaXNpb24gaXMgY29uZmlndXJlZC5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM1ODc9c3RhdGljIHZvaWQgcnNfZmlsbF9scV9jbWQoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM2MDA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM2MDEtXHRpZiAobHFfc3RhLVx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM2NjA9aW50IHJzX3ByZXR0eV9wcmludF9yYXRlX3YxKGNoYXIgKmJ1ZiwgaW50IGJ1ZnN6LCBjb25zdCB1MzIgcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM3MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM3MDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM3MDctLypcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTQxMDA9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzX212bV9vcHNfZHJ2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtNDEwOS1cdC5yYXRlX3VwZGF0ZSA9IHJzX2Rydl9yYXRlX3VwZGF0ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM6NDExMDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtNDExMS1cdC5hZGRfc3RhX2RlYnVnZnMgPSByc19kcnZfYWRkX3N0YV9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MjA4PXN0cnVjdCBpd2xfbHFfc3RhX3JzX2Z3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTIxNC1cdFx0dTMyIHN0YV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg6MjE1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0yMTYtXHRcdC8qKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MzAxPXN0cnVjdCBpd2xfbHFfc3RhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTM2MS1cdHN0cnVjdCBscV9zdGFfcGVycyB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjM2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtMzYzLVx0XHR1MzIgZGJnX2ZpeGVkX3JhdGU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEzNzY9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kZWJ1Z2ZzLmMtMTM4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMzg3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jLTEzODgtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNS1cdENGRzgwMjExX1RFU1RNT0RFX0RVTVAobXQ3Nl90ZXN0bW9kZV9kdW1wKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jOjE4MjY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWluLmMtMTgyNy1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oPTYzNz1ib29sIG10NzkxNV9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjYzODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oLTYzOS12b2lkIG10NzkxNV9zdGFfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk3MS0vKiogcGVyLXN0YXRpb24gZGVidWdmcyAqKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTkzLVx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jOjI1OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmMtMjU5NS1cdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oPTkzND1pbnQgbXQ3OTk2X21jdV9zZXRfZW1sc3JfbW9kZShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L210Nzk5Ni5oLTkzNy1cdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2VtbF9wYXJhbXMgKmVtbF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg6OTM4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc9MjUxPWNvbmZpZyBSVDJYMDBfTElCX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXHRib29sIFwmIzM0O1JhbGluayBkZWJ1Z2ZzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZzoyNTM6XHRkZXBlbmRzIG9uIFJUMlgwMF9MSUIgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MjM0Mj1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMjM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjIzNjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzYzLXN0YXRpYyB2b2lkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDI3ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQyOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MjkyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDI5My0jZGVmaW5lIEhXU0lNX0RFQlVHRlNfT1BTXHRcdFx0XHRcdFxcXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yMjMzPXN0cnVjdCBpZWVlODAyMTFfdmlmIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTIyNTMtXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjIyNTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTIyNTUtXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2Rpcjtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDI5Ny0gKlx0ZGlyZWN0b3J5IHdpdGggaXRzIGZpbGVzLiBUaGlzIGNhbGxiYWNrIHNob3VsZCBiZSB3aXRoaW4gYVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0Mjk4OiAqXHRDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyOTktICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDEtICpcdHdoZW4gYSBsaW5rIGlzIGFkZGVkIHRvIGEgbWFjODAyMTEgdmlmLiBUaGlzIGNhbGxiYWNrIHNob3VsZCBiZSB3aXRoaW5cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMwMjogKlx0YSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDMtICpcdEZvciBub24tTUxPIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciB0aGUgZGVmYXVsdCBic3NfY29uZlxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMwNy0gKlx0d2hlbiBhIHN0YXRpb24gaXMgYWRkZWQgdG8gbWFjODAyMTEmIzM5O3Mgc3RhdGlvbiBsaXN0LiBUaGlzIGNhbGxiYWNrXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQzMDg6ICpcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzA5LSAqXHRjYWxsYmFjayBjYW4gc2xlZXAuXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzEyLSAqXHR3aGVuIGEgbGluayBpcyBhZGRlZCB0byBhIG1hYzgwMjExIHN0YXRpb24uIFRoaXMgY2FsbGJhY2tcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMxMzogKlx0c2hvdWxkIGJlIHdpdGhpbiBhIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTIGNvbmRpdGlvbmFsLiBUaGlzXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMTQtICpcdGNhbGxiYWNrIGNhbiBzbGVlcC5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQ3NDI9c3RydWN0IGllZWU4MDIxMV9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDgzMC1cdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEpO1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0ODMxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODMyLVx0dm9pZCAoKnZpZl9hZGRfZGVidWdmcykoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9Nzk9Y29uZmlnIE1BQzgwMjExX0xFRFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NS1cdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXHRoZWxwXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlPTQwPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0xFRFMpICYjNDM7PSBsZWQub1xubmV0L21hYzgwMjExL01ha2VmaWxlOjQxOm1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICYjNDM7PSBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTQyLVx0ZGVidWdmcy5vIFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlPTU5PXJjODAyMTFfbWluc3RyZWwteSA6PSBcXFxuLS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS02MS1cbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo2MjpyYzgwMjExX21pbnN0cmVsLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICYjNDM7PSBcXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTYzLVx0cmM4MDIxMV9taW5zdHJlbF9odF9kZWJ1Z2ZzLm9cbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6MjojaWZuZGVmIF9fTUFDODAyMTFfREVCVUdGU19IXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oOjM6I2RlZmluZSBfX01BQzgwMjExX0RFQlVHRlNfSFxubmV0L21hYzgwMjExL2RlYnVnZnMuaC00LVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtNi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtOC12b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oPTEyPXN0YXRpYyBpbmxpbmUgdm9pZCBkZWJ1Z2ZzX2h3X2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTE2LVxubmV0L21hYzgwMjExL2RlYnVnZnMuaDoxNzojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX0ggKi9cbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoyOiNpZm5kZWYgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC00LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTYtdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfYWRkKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oPTI0PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX2JlYWNvbl9kZWZhdWx0KFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTI4LVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6Mjk6I2VuZGlmIC8qIF9fTUFDODAyMTFfREVCVUdGU19LRVlfSCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEyLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNC12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjM6I2RlZmluZSBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTQtXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtNi1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC04LXZvaWQgaWVlZTgwMjExX3N0YV9kZWJ1Z2ZzX2FkZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg9MjQ9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9saW5rX3N0YV9kZWJ1Z2ZzX2Rydl9yZW1vdmUoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKSB7fVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTI2LVxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg6Mjc6I2VuZGlmIC8qIF9fTUFDODAyMTFfREVCVUdGU19TVEFfSCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg9NDc3PXN0YXRpYyBpbmxpbmUgdm9pZCBkcnZfc3RhX3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5NC1cbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6NDk1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC00OTYtc3RhdGljIGlubGluZSB2b2lkIGRydl92aWZfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTEwOD1zdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE2MC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExNjE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMTYyLVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTE2Nj1zdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhIHtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjUzLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTI1NDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTUtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTcwNi1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzA4LVx0c3RydWN0IGxvY2FsX2RlYnVnZnNkZW50cmllcyB7XG4tLVxubmV0L21hYzgwMjExL2tleS5oPTU5PXN0cnVjdCBpZWVlODAyMTFfa2V5IHtcbi0tXG5uZXQvbWFjODAyMTEva2V5LmgtMTIyLVxubmV0L21hYzgwMjExL2tleS5oOjEyMzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9rZXkuaC0xMjQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmM9MjE1PWllZWU4MDIxMV9yYXRlX2NvbnRyb2xfb3BzX2dldChjb25zdCBjaGFyICpuYW1lKVxuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjQwLVxubmV0L21hYzgwMjExL3JhdGUuYzoyNDE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0Mi1zdGF0aWMgc3NpemVfdCByY25hbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYz0yODA9c3RhdGljIHZvaWQgcmF0ZV9jb250cm9sX2ZyZWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy0yODQtXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjI4NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg2LVx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGxvY2FsLVx1MDAzZWRlYnVnZnMucmNkaXIpO1xuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmg9NTU9c3RhdGljIGlubGluZSB2b2lkIHJhdGVfY29udHJvbF9hZGRfc3RhX2RlYnVnZnMoc3RydWN0IHN0YV9pbmZvICpzdGEpXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTU2LXtcbm5ldC9tYWM4MDIxMS9yYXRlLmg6NTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTU4LVx0c3RydWN0IHJhdGVfY29udHJvbF9yZWYgKnJlZiA9IHN0YS1cdTAwM2VyYXRlX2N0cmw7XG4tLVxubmV0L21hYzgwMjExL3JhdGUuaD02Nz1zdGF0aWMgaW5saW5lIHZvaWQgcmF0ZV9jb250cm9sX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxubmV0L21hYzgwMjExL3JhdGUuaC02OC17XG5uZXQvbWFjODAyMTEvcmF0ZS5oOjY5OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3JhdGUuaC03MC1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNkaXI7XG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xMDU5PW1pbnN0cmVsX2h0X3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbWluc3RyZWxfcHJpdiAqbXAsIHN0cnVjdCBtaW5zdHJlbF9odF9zdGEgKm1pKVxuLS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4MS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM6MTE4MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4My1cdC8qIHVzZSBmaXhlZCBpbmRleCBpZiBzZXQgKi9cbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE1OTU9bWluc3RyZWxfaHRfZ2V0X3JhdGUodm9pZCAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdm9pZCAqcHJpdl9zdGEsXG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xNjA2LVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxNjA3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xNjA4LVx0aWYgKG1wLVx1MDAzZWZpeGVkX3JhdGVfaWR4ICE9IC0xKVxuLS1cbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM9MTkxNT1taW5zdHJlbF9odF9hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NDgtXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5NDk6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NTAtc3RhdGljIHZvaWQgbWluc3RyZWxfaHRfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHZvaWQgKnByaXYsXG4tLVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xOTgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmF0ZV9jb250cm9sX29wcyBtYWM4MDIxMV9taW5zdHJlbF9odCA9IHtcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5OTMtXHQuZnJlZSA9IG1pbnN0cmVsX2h0X2ZyZWUsXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5OTUtXHQuYWRkX2RlYnVnZnMgPSBtaW5zdHJlbF9odF9hZGRfZGVidWdmcyxcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oPTc1PXN0cnVjdCBtaW5zdHJlbF9wcml2IHtcbi0tXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oLTg1LVxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaDo4NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmgtODctXHQvKlxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTUyNj1zdHJ1Y3QgbGlua19zdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6NTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc5LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzczLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Nzc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNzc1LVx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY3Nj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjcwMS1cbm5ldC9tYWM4MDIxMS90eC5jOjI3MDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvdHguYy0yNzAzLVx0aWYgKGxvY2FsLVx1MDAzZWZvcmNlX3R4X3N0YXR1cylcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zNzEzPXZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTM3NTktXG5uZXQvbWFjODAyMTEvdHguYzozNzYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL3R4LmMtMzc2MS1cdGlmIChsb2NhbC1cdTAwM2Vmb3JjZV90eF9zdGF0dXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBEZWJ1ZyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgcmlnaHQgbm93LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGVuIHRoaXMgZmlsZSBpcyBldmVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gSXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBoYXMgdG8gYmUgZW5hYmxlZCBmb3IgdGhhdCB0byBoYXBwZW4uIE9mIGNvdXJzZSwgdGhhdCBzZXR0aW5nIGlzIGdvaW5nIHRvIGJlIGNvbmRpdGlvbmFsLCB0b28uIEkmIzM5O20gcHJldHR5IHN1cmUgYE1BQzgwMjExYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUsIGFuZCBJJiMzOTtkIGJldCBgREVCVUdfRlNgIGlzIGludm9sdmVkIGFzIHdlbGwuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXJvdW5kIGxpbmUgODggYW5kIHNlZSB3aGF0IHRoZSBleGFjdCBkZXBlbmRlbmNpZXMgYXJlIHRvIGJlIHN1cmUuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlIGRlYnVnIGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBpbnRlZ3JhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4gIDgxOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDgyOlx0XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gIDgzOlx0XHRzZWxlY3QgTEVEU19UUklHR0VSU1xuICA4NDpcdFx0aGVscFxuICA4NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGEgZmV3IExFRCB0cmlnZ2VycyBmb3IgZGlmZmVyZW50XG4gIDg2Olx0XHQgIHBhY2tldCByZWNlaXZlL3RyYW5zbWl0IGV2ZW50cy5cbiAgODc6XHRcbiAgODg6XHRjb25maWcgTUFDODAyMTFfREVCVUdGU1xuICA4OTpcdFx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbiAgOTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IENGRzgwMjExX0RFQlVHRlNcbiAgOTE6XHRcdGhlbHBcbiAgOTI6XHRcdCAgU2VsZWN0IHRoaXMgdG8gc2VlIGV4dGVuc2l2ZSBpbmZvcm1hdGlvbiBhYm91dFxuICA5MzpcdFx0ICB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgbWFjODAyMTEgaW4gZGVidWdmcy5cbiAgOTQ6XHRcbiAgOTU6XHRcdCAgU2F5IE4gdW5sZXNzIHlvdSBrbm93IHlvdSBuZWVkIHRoaXMuXG4gIDk2Olx0XG4gIDk3Olx0Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xuICA5ODpcdFx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbiAgOTk6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IFRSQUNJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc1NjEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQ0ZHODAyMTFfREVCVUdGUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBzZWUgaWYgYENGRzgwMjExX0RFQlVHRlNgIGlzIGVuYWJsZWQsIG9yIGF0IGxlYXN0IGF2YWlsYWJsZSwgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGlzLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZGVidWcgZmVhdHVyZSBpcyBhIGNyaXRpY2FsIHRvb2wsIHNvIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IGl0cyBjdXJyZW50IHN0YXR1cy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IGEgc3BlY2lmaWMgaXNzdWUgb3IgYSBuZXcgZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiwgYW5kIGtub3dpbmcgaWYgdGhpcyBkZWJ1Z2dpbmcgb3B0aW9uIGlzIGVuYWJsZWQgd2lsbCBhZmZlY3QgbXkgbmV4dCBzdGVwcy4gTmVlZCB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgc2V0IHVwIGNvcnJlY3RseS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTFfREVCVUdGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xNTk9Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODY2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgV2lyZWxlc3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBhdCBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFyb3VuZCBsaW5lIDE2OS4gVGhhdCBhcmVhIGlzIHVzdWFsbHkgd2hlcmUgdGhleSBkZWZpbmUgdGhlIGNvcmUgb3B0aW9ucyByZWxhdGVkIHRvIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0uIEhvcGVmdWxseSwgSSYjMzk7bGwgZmluZCB0aGUgYmFzaWMga25vYnMgYW5kIGxldmVycyBpbiB0aGVyZS4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGZvdW5kYXRpb25hbCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZCwgYW5kIHBvdGVudGlhbGx5IHdoZXJlIEkgY2FuIHN0YXJ0IHRyYWNpbmcgZGVwZW5kZW5jaWVzIGlmIHNvbWV0aGluZyBpc24mIzM5O3Qgd29ya2luZyBhcyBJIGV4cGVjdC4gR3JhYmJpbmcgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gZ28gb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBJZiB0aGlzIGNhdXNlcyB5b3VyIGFwcGxpY2F0aW9ucyB0byBtaXNiZWhhdmUgeW91IHNob3VsZCBmaXggeW91clxuIDE2NjpcdFx0ICBhcHBsaWNhdGlvbnMgaW5zdGVhZCAtLSB0aGV5IG5lZWQgdG8gcmVnaXN0ZXIgdGhlaXIgbmV0d29ya1xuIDE2NzpcdFx0ICBsYXRlbmN5IHJlcXVpcmVtZW50LCBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnJzdC5cbiAxNjg6XHRcbiAxNjk6XHRjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xuIDE3MDpcdFx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbiAxNzE6XHRcdGRlcGVuZHMgb24gREVCVUdfRlNcbiAxNzI6XHRcdGhlbHBcbiAxNzM6XHRcdCAgWW91IGNhbiBlbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBkZWJ1Z2ZzIGVudHJpZXMgZm9yIGNmZzgwMjExLlxuIDE3NDpcdFxuIDE3NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE3NjpcdFxuIDE3NzpcdGNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcbiAxNzg6XHRcdGJvb2wgXCYjMzQ7c3VwcG9ydCBDUkRBXCYjMzQ7IGlmIEVYUEVSVFxuIDE3OTpcdFx0ZGVmYXVsdCB5XG4gMTgwOlx0XHRoZWxwXG4gMTgxOlx0XHQgIFlvdSBzaG91bGQgZW5hYmxlIHRoaXMgb3B0aW9uIHVubGVzcyB5b3Uga25vdyBmb3Igc3VyZSB5b3UgaGF2ZSBub1xuIDE4MjpcdFx0ICBuZWVkIGZvciBpdCwgZm9yIGV4YW1wbGUgd2hlbiB1c2luZyB0aGUgcmVndWxhdG9yeSBkYXRhYmFzZSBsb2FkZWQgYXNcbiAxODM6XHRcdCAgYSBmaXJtd2FyZSBmaWxlLlxuIDE4NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODM2NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEZXBlbmRlbmN5IEFuYWx5c2lzIGZvciBtYWM4MDIxMSBEZWJ1Z2dpbmcgYW5kIEZ1enppbmcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBhbmQgZnV6emluZyB0aGUgYG1hYzgwMjExYCBzdWJzeXN0ZW0uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLiBPYnZpb3VzbHksIHRoYXQmIzM5O3MgcmVsaWFudCBvbiBgTUFDODAyMTFgIOKAkyBtYWtlcyBzZW5zZS4gQW5kIHRoZW4sIGBDRkc4MDIxMV9ERUJVR0ZTYCwgd2hpY2ggdGhhdCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGRlcGVuZHMgb24sIGl0c2VsZiBkZXBlbmRzIG9uIGBERUJVR19GU2AuIEdvdCBpdC4gVGhhdCBlc3RhYmxpc2hlcyB0aGUgZGVidWdnaW5nIHNpZGUuCgpOb3csIGZvciBmdXp6aW5nLCBJJiMzOTt2ZSBnb3QgYSBjb3VwbGUgb2Ygb3B0aW9uczogYE1BQzgwMjExX0hXU0lNYCBvciBgTkw4MDIxMWAuIEkmIzM5O2xsIHByb2JhYmx5IHdhbnQgdG8gaW52ZXN0aWdhdGUgdGhvc2UgZnVydGhlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExX0hXU0lNYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzgzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBWaXJ0dWFsIFdpcmVsZXNzIEtjb25maWcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB2aXJ0dWFsIHdpcmVsZXNzIHNldHVwIGluIHRoaXMga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSB0ZXh0IG1lbnRpb25zIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBSaWdodCwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHN1YnN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCBgS2NvbmZpZ2Agbm93IHRvIHNlZSB3aGF0JiMzOTtzIGRlZmluZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoaXMgYWxsIHBpZWNlcyB0b2dldGhlci4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzE1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEZWJ1Z2ZzIGFuZCBtYWM4MDIxMSBJbnRlcmFjdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBJJiMzOTttIHN0YXJ0aW5nIHdpdGggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0NGRzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0RFQlVHX0ZTYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gLiBUaGVzZSBwb2ludCBkaXJlY3RseSB0byB0aGUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBpdHMgZGVidWcgaW50ZXJmYWNlLCB3aGljaCBtZWFucyBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgYXQgY2hhbmdlcyByZWxhdGVkIHRvIGRlYnVnZ2luZyBhbmQgbW9uaXRvcmluZyB0aGUgd2lyZWxlc3MgbmV0d29yayBpbnRlcmZhY2UuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgaGFzIGJlZW4gdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb25zIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4KCkxvb2tpbmcgYXQgdGhlIGNhbGwgZ3JhcGgsIEkgc2VlIHRoYXQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIGlzIGNhbGxlZCBpbiBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX2RlbF92aXJ0dWFsX21vbml0b3JgLCBgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhYCwgYW5kIGV2ZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaXRzZWxmLCBzdWdnZXN0aW5nIGEgY2xlYW51cCBvciByZW1vdmFsIHByb2Nlc3MuIE1lYW53aGlsZSwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZ2V0cyBjYWxsZWQgYnkgYGRydl9yZW1vdmVfaW50ZXJmYWNlYCwgYGllZWU4MDIxMV9zZXR1cF9zZGF0YWAsIGFuZCBgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3NgLiBTbywgdGhlc2UgZnVuY3Rpb25zIGxpa2VseSBkZWFsIHdpdGggcmVtb3ZpbmcgYW5kIHJlY3JlYXRpbmcgdGhlIGRlYnVnZnMgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggYSBuZXR3b3JrIGRldmljZS4gSSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX2RlbF92aXJ0dWFsX21vbml0b3JgLCBgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhYCwgYGllZWU4MDIxMV9zZXR1cF9zZGF0YWAsIGFuZCBgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3NgIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlc2UgZGVidWdmcyBpbnRlcmFjdGlvbnMgYXJlIHRyaWdnZXJlZC4gSSBhbSBhbHNvIGF3YXJlIHRoYXQgdGhlIGBkZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaXMgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBmYW1pbHkgb2YgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGUgYGRlYnVnZnNfcmVtb3ZlX25ldGRldmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjYWxscyBhbmQgdGhlIHByZXNlbmNlIG9mIGByZW1vdmVgIGFuZCBgcmVjcmVhdGVgIGluIHRoZSBmdW5jdGlvbiBuYW1lcywgSSB0aGluayB0aGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG86CiogICBJbnRlcmZhY2UgcmVtb3ZhbCBhbmQgY3JlYXRpb24KKiAgIFZpcnR1YWwgaW50ZXJmYWNlIG1hbmFnZW1lbnQKKiAgIFN0YXRpb24gZGF0YSB0ZWFyZG93biBhbmQgc2V0dXAKClNpbmNlIEkgbmVlZCBhIGJyb2FkZXIgdmlldywgSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlYmFzZSBmb3IgYWxsIGNhbGxzIHRvIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YC4gSSB3YW50IHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGNyaXRpY2FsIGxvY2F0aW9uLiBJIHdhbnQgdG8gYmUgY29tcHJlaGVuc2l2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz05OTk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE1LVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAxNjp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE3LXtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDMzPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMzUte1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEzLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg6MTQ6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTE1LXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg9MjM9dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2Rydl9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMjQtI2Vsc2Vcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMjYtXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05MDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX3RlYXJkb3duX3NkYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTkwNy1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjkwODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xubmV0L21hYzgwMjExL2lmYWNlLmMtOTA5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTE0MwoJCQkJCQkJb3V0cHV0OiAyNTMKCQkJCQkJCXRob3VnaHRzOiA5MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQW5hbHlzaXM6IG1hYzgwMjExIERlYnVnZnMgRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCwgYW5kIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLCBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nLiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaGFuZGxlcyByZW1vdmFsIG9mIGRlYnVnZnMgZW50cmllcyB3aGVuIHRoZSBzZGF0YSBpcyBkZXN0cm95ZWQgb3IgdXBkYXRlZCwgb3IgdGhlIGRlYnVnZnMgaXMgcmVjcmVhdGVkLiBDb252ZXJzZWx5LCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgb24gc2RhdGEgc2V0dXAsIGludGVyZmFjZSByZW1vdmFsLCBvciBsaW5rIHVwZGF0ZXMuIEkmIzM5O20gbm90aW5nIHRoYXQgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgZGlyZWN0bHkgY2FsbGVkIHdpdGhpbiB0aGUgcmVjcmVhdGUgZnVuY3Rpb24uCgpUaGUga2V5IHF1ZXN0aW9uIGlzIHJlYWNoYWJpbGl0eSwgYW5kIGhlcmUsIHRoaW5ncyBsb29rIHByb21pc2luZy4gVGhpcyBpcyB3aXRoaW4gYG1hYzgwMjExYCwgd2hpY2ggaXMgY29yZSwgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCBzdGFuZGFyZCBgbmw4MDIxMWAgbmV0bGluayBjb21tYW5kcy4gVGhpcyBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldCBmb3IgU3l6a2FsbGVyIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBvZmZlcnMgYSB2aXJ0dWFsIGRldmljZSB0byBtaW1pYyByZWFsIGhhcmR3YXJlIGZ1cnRoZXIgc3RyZW5ndGhlbnMgdGhpcyBhcmd1bWVudC4gVGhpcyBpc24mIzM5O3QgdGllZCB0byBhbnkgc3BlY2lmaWMgdmVuZG9yJiMzOTtzIGhhcmR3YXJlIGFuZCBpc24mIzM5O3QganVzdCBhYm91dCB1bnBsdWdnYWJsZSBoYXJkd2FyZSB0ZWFyZG93biwgYnV0IHN0YW5kYXJkIHJ1bnRpbWUgb3BlcmF0aW9ucyBvbiB0aGUgaW50ZXJmYWNlIGxldmVsLiBXb3J0aEZ1enppbmcgaXMgYSBkZWZpbml0ZSB5ZXMuCgpJJiMzOTt2ZSBjb25maXJtZWQgdGhlIGZvY3VzIHN5bWJvbHMgYXJlOgoqICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgCiogICBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YAoqICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAKCkFuZCBpdCYjMzk7cyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgIGFuZCBJIGtub3cgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgY2FsbGVkIGluc2lkZSBpdC4KCkZvciBjb25maWd1cmF0aW9ucywgdGhpcyBuZWVkcyBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuIExldCBtZSB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llczogYE1BQzgwMjExX0RFQlVHRlNgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExX0RFQlVHRlNgIGFuZCBgQ0ZHODAyMTFfREVCVUdGU2AgZGVwZW5kcyBvbiBgREVCVUdfRlNgLgoKU28sIHRvIHN1bW1hcml6ZSBzdWNjaW5jdGx5OgoKMS4gIFRoaXMgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBlbnRyeSBoYW5kbGluZywgcmVzZXR0aW5nIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gTlVMTCBkdXJpbmcgbmV0ZGV2IGRlYnVnZnMgcmVtb3ZhbCBhbmQgdXBkYXRpbmcga2V5IHN5bWxpbmtzIGR1cmluZyBuZXRkZXYgZGVidWdmcyByZWNyZWF0aW9uLgoyLiAgSXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMgKGludGVyZmFjZSBjcmVhdGlvbiwgbW9kaWZpY2F0aW9uLCBkZWxldGlvbikgYW5kIHNpbXVsYXRhYmxlIHZpYSBgbWFjODAyMTFfaHdzaW1gLgozLiAgRnV6emluZyBwcmV2ZW50cyBhbmQgdGVzdHMgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcmVmZXJlbmNlcyBhbmQgc3RhdGUgaXNzdWVzIHdpdGggaW50ZXJmYWNlL2xpbmsgcmVjcmVhdGlvbiBhbmQga2V5IGNvbmZpZ3VyYXRpb24uCjQuICBGb2N1cyBzeW1ib2xzIGFyZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAsIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAuCjUuICBSZXF1aXJlZCBjb25maWdzIGFyZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTFfREVCVUdGUyYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSYjMzk7cyBkZWJ1Z2ZzIG5ldGRldiBoYW5kbGluZyBieSBwcm9wZXJseSBjbGVhcmluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIHBvaW50ZXJzIHVwb24gcmVtb3ZhbCAoaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldikgYW5kIHJlYnVpbGRpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBsaW5rcyB1cG9uIGludGVyZmFjZSByZWNyZWF0aW9uIChpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2luZyBtYWM4MDIxMV9od3NpbSBhbmQgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzLiBGdXp6aW5nIGhlbHBzIGVuc3VyZSB0aGF0IGludGVyZmFjZSBzZXR1cCwgbGluayB1cGRhdGVzLCBhbmQga2V5IHVwZGF0ZXMgZG8gbm90IHByb2R1Y2Ugc3RhbGUgb3IgZGFuZ2xpbmcgZGVudHJ5IHJlZmVyZW5jZXMgb3IgcmFjZSBjb25kaXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9ERUJVR0ZTJiMzNDssCiAgICAmIzM0O0NGRzgwMjExX0RFQlVHRlMmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWFjODAyMTEmIzM5O3MgZGVidWdmcyBuZXRkZXYgaGFuZGxpbmcgYnkgcHJvcGVybHkgY2xlYXJpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBwb2ludGVycyB1cG9uIHJlbW92YWwgKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYpIGFuZCByZWJ1aWxkaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgbGlua3MgdXBvbiBpbnRlcmZhY2UgcmVjcmVhdGlvbiAoaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbmV0bGluayBjb21tYW5kcy4gRnV6emluZyBoZWxwcyBlbnN1cmUgdGhhdCBpbnRlcmZhY2Ugc2V0dXAsIGxpbmsgdXBkYXRlcywgYW5kIGtleSB1cGRhdGVzIGRvIG5vdCBwcm9kdWNlIHN0YWxlIG9yIGRhbmdsaW5nIGRlbnRyeSByZWZlcmVuY2VzIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMKQEAgLTIwLDYgJiM0MzsyMCw3IEBACiAjaW5jbHVkZSAmIzM0O2llZWU4MDIxMV9pLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtyYXRlLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkZWJ1Z2ZzLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7ZGVidWdmc19rZXkuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RlYnVnZnNfbmV0ZGV2LmgmIzM0OwogI2luY2x1ZGUgJiMzNDtkcml2ZXItb3BzLmgmIzM0OwogCkBAIC0xMDIwLDYgJiM0MzsxMDIxLDggQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKQogCWRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyKTsKIAlzZGF0YS0mZ3Q7dmlmLmRlYnVnZnNfZGlyID0gTlVMTDsKIAlzZGF0YS0mZ3Q7ZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMOwomIzQzOwlzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDsKJiM0MzsJc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDsKIH0KIAogdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKQpAQCAtMTAzMiw2ICYjNDM7MTAzNSw3IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogewogCWllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpOwogCWllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpOwomIzQzOwlpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpOwogCiAJaWYgKHNkYXRhLSZndDtmbGFncyAmYW1wOyBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7CiAJCWRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtJmd0O2xvY2FsLCBzZGF0YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDI1CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoIGZvciBNZW1vcnkgU2FmZXR5IENvbmNlcm5zKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZsYWcgaXQgZm9yIEtNU0FOIG9yIEtBU0FOIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXRpZXMuCgpTcGVjaWZpY2FsbHksIEkgc2VlIGNoYW5nZXMgaW4gYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jYC4gVGhlIGRpZmYgaW50cm9kdWNlcyBhbiBpbmNsdWRlIGZvciBgZGVidWdmc19rZXkuaGAgYW5kIHVwZGF0ZXMgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBUaGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgIGZ1bmN0aW9uIG5vdyBjbGVhcnMgdGhlIHBvaW50ZXJzIHRvIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAsIGFuZCB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb24gaGFzIGEgY2FsbCB0byBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YC4KCk15IGludHVpdGlvbiB0ZWxscyBtZSB0aGF0IG1hbmFnaW5nIHRoZXNlIGtleSBwb2ludGVycyBhbmQgYW55IGFzc29jaWF0ZWQga2V5IGRhdGEgbWF5IGJlIHRoZSBhcmVhIG9mIGZvY3VzLCBhbmQgaXMgd29ydGggYWRkaXRpb25hbCBpbnZlc3RpZ2F0aW9uLiBUaW1lIHRvIGVtcGxveSBzb21lIGdyZXBwaW5nIGFuZCBmaWxlIHJlYWRpbmcgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBhZGRlZCBmZWF0dXJlcy4gRnJvbSBoZXJlLCBJIHdpbGwgYXNzZXNzIHdoZXRoZXIgdGhlIG5ldyBvciBtb2RpZmllZCBjb2RlIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgd2l0aGluIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM9MzYxPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM2OS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM3MDp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM3MS17XG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDo4OnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTktdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChcbi0tXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaD0xNj1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTcte31cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xOS1cdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM6MTAzODpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzUtXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzctfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0zODg9X19pZWVlODAyMTFfc2V0X2RlZmF1bHRfbWdtdF9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cbm5ldC9tYWM4MDIxMS9rZXkuYzo0MDI6XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xubmV0L21hYzgwMjExL2tleS5jLTQwMy19XG4tLVxubmV0L21hYzgwMjExL2tleS5jPTQxND1fX2llZWU4MDIxMV9zZXRfZGVmYXVsdF9iZWFjb25fa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYy00MjgtXG5uZXQvbWFjODAyMTEva2V5LmM6NDI5Olx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcbm5ldC9tYWM4MDIxMS9rZXkuYy00MzAtfVxuLS1cbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBkZWJ1Z2ZzX2tleS5jYCoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMzcwLCBnaXZlIG9yIHRha2UgYSBmZXcgYXJvdW5kIGl0LiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoYXQgc2VjdGlvbiBvZiB0aGUgZHJpdmVyLiBJIGV4cGVjdCB0aGF0IGFyZWEgdG8gYmUgcmVsYXRlZCB0by4uLiB3ZWxsLCBnaXZlbiB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgY29udGV4dCBvZiBtYWM4MDIxMSwgcHJvYmFibHkgc29tZXRoaW5nIHRvIGRvIHdpdGgga2V5IGhhbmRsaW5nIG9yIGRlYnVnIG91dHB1dCByZWxhdGluZyB0byBrZXlzLCBwb3RlbnRpYWxseSBrZXkgbWFuYWdlbWVudCBvciBpbmplY3Rpb24gb2Yga2V5IG1hdGVyaWFsIHRocm91Z2ggZGVidWdmcy4gSSBiZXQgSSYjMzk7bGwgZmluZCBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB3b3JrIGZyb20uIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzYwOlx0XG4gMzYxOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXG4gMzYyOlx0e1xuIDM2MzpcdFx0aWYgKCFrZXkpXG4gMzY0Olx0XHRcdHJldHVybjtcbiAzNjU6XHRcbiAzNjY6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShrZXktXHUwMDNlZGVidWdmcy5kaXIpO1xuIDM2NzpcdFx0a2V5LVx1MDAzZWRlYnVnZnMuZGlyID0gTlVMTDtcbiAzNjg6XHR9XG4gMzY5Olx0XG4gMzcwOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gMzcxOlx0e1xuIDM3MjpcdFx0Y2hhciBidWZbNTBdO1xuIDM3MzpcdFx0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcbiAzNzQ6XHRcbiAzNzU6XHRcdGlmICghc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxuIDM3NjpcdFx0XHRyZXR1cm47XG4gMzc3Olx0XG4gMzc4Olx0XHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSk7XG4gMzc5Olx0XG4gMzgwOlx0XHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xuIDM4MTpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbiAzODI6XHRcbiAzODM6XHRcdGlmIChzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XG4gMzg0Olx0XHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxuIDM4NTpcdFx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcbiAzODY6XHRcdFx0c3ByaW50ZihidWYsIFwmIzM0Oy4uL2tleXMvJWRcJiMzNDssIGtleS1cdTAwM2VkZWJ1Z2ZzLmNudCk7XG4gMzg3Olx0XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XG4gMzg4Olx0XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X3VuaWNhc3Rfa2V5XCYjMzQ7LFxuIDM4OTpcdFx0XHRcdFx0XHQgICAgICAgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xuIDM5MDpcdFx0fVxuIDM5MTpcdFxuIDM5MjpcdFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkpO1xuIDM5MzpcdFx0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuIDM5NDpcdFxuIDM5NTpcdFx0aWYgKHNkYXRhLVx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB7XG4gMzk2Olx0XHRcdGtleSA9IHdpcGh5X2RlcmVmZXJlbmNlKHNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LndpcGh5LFxuIDM5NzpcdFx0XHRcdFx0XHRzZGF0YS1cdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XG4gMzk4Olx0XHRcdHNwcmludGYoYnVmLCBcJiMzNDsuLi9rZXlzLyVkXCYjMzQ7LCBrZXktXHUwMDNlZGVidWdmcy5jbnQpO1xuIDM5OTpcdFx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9XG4gNDAwOlx0XHRcdFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcJiMzNDtkZWZhdWx0X211bHRpY2FzdF9rZXlcJiMzNDssXG4gNDAxOlx0XHRcdFx0XHRcdCAgICAgICBzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XG4gNDAyOlx0XHR9XG4gNDAzOlx0fVxuIDQwNDpcdFxuIDQwNTpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gNDA2Olx0e1xuIDQwNzpcdFx0aWYgKCFzZGF0YSlcbiA0MDg6XHRcdFx0cmV0dXJuO1xuIDQwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTEzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEZWJ1Z2dpbmcgdGhlIG1hYzgwMjExIE5ldHdvcmsgRGV2aWNlIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIGFuZCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBzcGVjaWZpYyBoYXBwZW5pbmcgcmVsYXRlZCB0byBob3cgdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGhhbmRsZWQgYXQgYSBsb3dlciBsZXZlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIGxpbmVzIDEwMTAgdG8gMTA1MCwgYXMgdGhhdCBhcmVhIG9mdGVuIGhhbmRsZXMgaW1wb3J0YW50IG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQsIG1heWJlIHRoZXJlIGlzIHNvbWV0aGluZyBvZmYgYWJvdXQgdGhlIGRlYnVnZ2luZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIHRoZSBuZXR3b3JrIGRldmljZS4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIHRoYXQgc2VjdGlvbiBhbmQgc2VlIHdoYXQgaXQgcmV2ZWFscy4gSG9wZWZ1bGx5LCB0aGlzIGRldGFpbGVkIGxvb2sgc2hlZHMgc29tZSBsaWdodCBvbiB0aGUgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMTU6XHRcbjEwMTY6XHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4xMDE3Olx0e1xuMTAxODpcdFx0aWYgKCFzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpXG4xMDE5Olx0XHRcdHJldHVybjtcbjEwMjA6XHRcbjEwMjE6XHRcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIpO1xuMTAyMjpcdFx0c2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcbjEwMjM6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcbjEwMjQ6XHRcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XG4xMDI1Olx0XHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XG4xMDI2Olx0fVxuMTAyNzpcdFxuMTAyODpcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbjEwMjk6XHR7XG4xMDMwOlx0XHRkZWJ1Z2ZzX2NoYW5nZV9uYW1lKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgXCYjMzQ7bmV0ZGV2OiVzXCYjMzQ7LCBzZGF0YS1cdTAwM2VuYW1lKTtcbjEwMzE6XHR9XG4xMDMyOlx0XG4xMDMzOlx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4xMDM0Olx0XHRcdFx0XHQgICAgICAgYm9vbCBtbGRfdmlmKVxuMTAzNTpcdHtcbjEwMzY6XHRcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xuMTAzNzpcdFx0aWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzZGF0YSwgbWxkX3ZpZik7XG4xMDM4Olx0XHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xuMTAzOTpcdFxuMTA0MDpcdFx0aWYgKHNkYXRhLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XG4xMDQxOlx0XHRcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhKTtcbjEwNDI6XHRcdFx0aWYgKCFtbGRfdmlmKVxuMTA0MzpcdFx0XHRcdGllZWU4MDIxMV9saW5rX2RlYnVnZnNfZHJ2X2FkZChcdTAwMjZzZGF0YS1cdTAwM2VkZWZsaW5rKTtcbjEwNDQ6XHRcdH1cbjEwNDU6XHR9XG4xMDQ2Olx0XG4xMDQ3Olx0dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbjEwNDg6XHR7XG4xMDQ5Olx0XHRjaGFyIGxpbmtfZGlyX25hbWVbMTBdO1xuMTA1MDpcdFxuMTA1MTpcdFx0aWYgKFdBUk5fT04oIWxpbmstXHUwMDNlc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyIHx8IGxpbmstXHUwMDNlZGVidWdmc19kaXIpKVxuMTA1MjpcdFx0XHRyZXR1cm47XG4xMDUzOlx0XG4xMDU0Olx0XHQvKiBGb3Igbm93LCB0aGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBub24tTUxPIGNhcGFibGUgZHJpdmVycyAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTExCgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDYwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRGVidWdmcyBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCBmaXhpbmcgYSBwcmV0dHkgbmFzdHkgYnVnIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBkZWJ1Z2ZzIGVudHJpZXMsIHNwZWNpZmljYWxseSB3aGVuIGEgbmV0d29yayBkZXZpY2UgaXMgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3aGljaCBjYWxscyBgZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlYCBvbiB0aGUgbmV0ZGV2JiMzOTtzIGRlYnVnZnMgZGlyZWN0b3J5LiAgVGhpcyByZWN1cnNpdmUgcmVtb3ZhbCBsZWFkcyB0byBzdGFsZSBwb2ludGVycy4gU3BlY2lmaWNhbGx5LCB0aGUgZGVudHJpZXMgcG9pbnRlZCB0byBieSBgc2RhdGEtJmd0O2RlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGFyZSBnZXR0aW5nIGZyZWVkLiAgTGF0ZXIsIGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGNvdWxkIHRyeSB0byBvcGVyYXRlIG9uIHRoZXNlIG5vdy1pbnZhbGlkIHBvaW50ZXJzLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIGEgZG91YmxlLWZyZWUgaWYgd2UmIzM5O3JlIG5vdCBjYXJlZnVsLiAgQWx0ZXJuYXRpdmVseSwgd2hlbiB3ZSByZWNyZWF0ZSB0aGUgbmV0ZGV2JiMzOTtzIGRlYnVnZnMsIHRoZSBkZWZhdWx0IGtleSBzeW1saW5rcyBhcmVuJiMzOTt0IHJlLWVzdGFibGlzaGVkIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLgoKVGhlIHBhdGNoJiMzOTtzIHNvbHV0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogd2Ugc2V0IGBzZGF0YS0mZ3Q7ZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLSZndDtkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gYE5VTExgIGR1cmluZyBuZXRkZXYgcmVtb3ZhbC4gVGhlbiwgZHVyaW5nIHRoZSByZWNyZWF0aW9uIG9mIHRoZSBuZXRkZXYmIzM5O3MgZGVidWdmcywgd2UgY2FsbCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKWAgdG8gZW5zdXJlIHRoZSBzeW1saW5rcyBhcmUgY29ycmVjdGx5IHJlY3JlYXRlZC4gVGhpcyBmaXhlcyB0aGUgc3RhbGUgcG9pbnRlciBpc3N1ZSBhbmQgcmVzdG9yZXMgdGhlIGRlZmF1bHQga2V5IHN5bWxpbmtzIGNvcnJlY3RseS4KCk5vdywgYWJvdXQgbWVtb3J5IHNhZmV0eS4gIEkmIzM5O3ZlIGNoZWNrZWQgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiAgVGhlcmUmIzM5O3Mgbm8gc3RydWN0dXJlIGRhdGEgYmVpbmcgY29waWVkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQmIzM5O3MgZ29vZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFsbG9jYXRpb25zIGhhcHBlbmluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBzZXRzIHRob3NlIGtleSBwb2ludGVycyB0byBgTlVMTGAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCB1c2VzIGBzcHJpbnRmYCB3aXRoIGFuIGluaXRpYWxpemVkIHN0cmluZyBidWZmZXIgZm9yIHRoZSBzeW1saW5rIGNyZWF0aW9uLiAgVGhlIGNvcmUgbWVtb3J5IGJ1Z3MgKFVBRiwgZG91YmxlLWZyZWUpIGFyZSB0aGluZ3MgdGhhdCBLQVNBTiB3aWxsIGNhdGNoLgoKU28sIGdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyAqbm90KiBhIEtNU0FOIGlzc3VlLiBJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCBteSB3b3JrLiBMZXQgbWUgcnVuIHRocm91Z2ggdGhlIHVzdWFsIEtNU0FOIGNyaXRlcmlhOgoKMS4gIEtlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlciBzcGFjZT8gTm8uCjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCjMuICBBbGxvY2F0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/IE5vLgo0LiAgQm91bmRzIGNoZWNrcy9sZW5ndGhzIGdpdmluZyBhY2Nlc3MgdG8gdW5pbml0IG1lbW9yeT8gTm8uCgpUaGVyZWZvcmUsIGBOZWVkc0tNU0FOPWZhbHNlYC4KCkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBidWcgZml4IHRoYXQgYWRkcmVzc2VzIGRhbmdsaW5nIGRlYnVnZnMgcG9pbnRlcnMgYW5kIG1pc3Npbmcgc3ltbGlua3MuICBLQVNBTiBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSByZW1haW5pbmcgbWVtb3J5IGVycm9ycy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZGVidWdmcyBsaWZldGltZSBtYW5hZ2VtZW50IGluIG1hYzgwMjExIGJ5IHplcm9pbmcgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcG9pbnRlcnMgKGRlZmF1bHRfdW5pY2FzdF9rZXkgYW5kIGRlZmF1bHRfbXVsdGljYXN0X2tleSkgdXBvbiBpbnRlcmZhY2UgZGVidWdmcyByZW1vdmFsIGFuZCByZS1jcmVhdGluZyBkZWZhdWx0IGtleSBzeW1saW5rcyBkdXJpbmcgaW50ZXJmYWNlIGRlYnVnZnMgcmVjcmVhdGlvbi4gXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcyAoZS5nLiwgdmlhIGNvcHlfdG9fdXNlciBvciBuZXRsaW5rKS4gQW55IHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgcmVsYXRlZCB0byBzdGFsZSBkZWJ1Z2ZzIGRlbnRyaWVzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBhbmQgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MDkuMzg2NTgxMjA4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMwOTU4NDA0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBkZWJ1Z2ZzIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gbWFjODAyMTEgYnkgemVyb2luZyBkYW5nbGluZyBkZWJ1Z2ZzIGRlbnRyeSBwb2ludGVycyAoZGVmYXVsdF91bmljYXN0X2tleSBhbmQgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB1cG9uIGludGVyZmFjZSBkZWJ1Z2ZzIHJlbW92YWwgYW5kIHJlLWNyZWF0aW5nIGRlZmF1bHQga2V5IHN5bWxpbmtzIGR1cmluZyBpbnRlcmZhY2UgZGVidWdmcyByZWNyZWF0aW9uLiBcXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbW9kaWZ5IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcyAoZS5nLiwgdmlhIGNvcHlfdG9fdXNlciBvciBuZXRsaW5rKS4gQW55IHBvdGVudGlhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgcmVsYXRlZCB0byBzdGFsZSBkZWJ1Z2ZzIGRlbnRyaWVzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMgYXJlIGFkZHJlc3NlZCBhbmQgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjA5LjM4NjU4NjE0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MzY5ODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFlNDhhYzg5MGRiMDU1OGMxMTRhNWQ2ZTJlNDhlM2Q1ZTNjZGRlNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXFxuaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXFxuQEAgLTIwLDYgKzIwLDcgQEBcXG4gI2luY2x1ZGUgXFxcImllZWU4MDIxMV9pLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJyYXRlLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJkZWJ1Z2ZzLmhcXFwiXFxuKyNpbmNsdWRlIFxcXCJkZWJ1Z2ZzX2tleS5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZGVidWdmc19uZXRkZXYuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRyaXZlci1vcHMuaFxcXCJcXG4gXFxuQEAgLTEwMjAsNiArMTAyMSw4IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gXFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpO1xcbiBcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcXG4gXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG4rXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XFxuK1xcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XFxuIH1cXG4gXFxuIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5AQCAtMTAzMiw2ICsxMDM1LDcgQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIHtcXG4gXFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxuIFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbitcXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xcbiBcXG4gXFx0aWYgKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcXG4gXFx0XFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cXHUwMDNlbG9jYWwsIHNkYXRhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MTAuODcwOTk0NDk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2MzMyMTI4NzkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfREVCVUdGU1wiLFxuICAgIFwiQ0ZHODAyMTFfREVCVUdGU1wiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZcIixcbiAgICBcImllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1hYzgwMjExJ3MgZGVidWdmcyBuZXRkZXYgaGFuZGxpbmcgYnkgcHJvcGVybHkgY2xlYXJpbmcgZGVmYXVsdCBrZXkgZGVidWdmcyBwb2ludGVycyB1cG9uIHJlbW92YWwgKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYpIGFuZCByZWJ1aWxkaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgbGlua3MgdXBvbiBpbnRlcmZhY2UgcmVjcmVhdGlvbiAoaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgdXNpbmcgbWFjODAyMTFfaHdzaW0gYW5kIG5sODAyMTEgbmV0bGluayBjb21tYW5kcy4gRnV6emluZyBoZWxwcyBlbnN1cmUgdGhhdCBpbnRlcmZhY2Ugc2V0dXAsIGxpbmsgdXBkYXRlcywgYW5kIGtleSB1cGRhdGVzIGRvIG5vdCBwcm9kdWNlIHN0YWxlIG9yIGRhbmdsaW5nIGRlbnRyeSByZWZlcmVuY2VzIG9yIHJhY2UgY29uZGl0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZTQ4YWM4OTBkYjA1NThjMTE0YTVkNmUyZTQ4ZTNkNWUzY2RkZTY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAxNzoxNTowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbmluZGV4IGYzYzZhNDFlNDkxMTkuLmEwMGIwNzc2ZmRiMWQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuKysrIGIvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcbkBAIC0yMCw2ICsyMCw3IEBAXG4gI2luY2x1ZGUgXCJpZWVlODAyMTFfaS5oXCJcbiAjaW5jbHVkZSBcInJhdGUuaFwiXG4gI2luY2x1ZGUgXCJkZWJ1Z2ZzLmhcIlxuKyNpbmNsdWRlIFwiZGVidWdmc19rZXkuaFwiXG4gI2luY2x1ZGUgXCJkZWJ1Z2ZzX25ldGRldi5oXCJcbiAjaW5jbHVkZSBcImRyaXZlci1vcHMuaFwiXG4gXG5AQCAtMTAyMCw2ICsxMDIxLDggQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XG4gXHRzZGF0YS1cdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xuIFx0c2RhdGEtXHUwMDNlZGVidWdmcy5zdWJkaXJfc3RhdGlvbnMgPSBOVUxMO1xuK1x0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcbitcdHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcbiB9XG4gXG4gdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuQEAgLTEwMzIsNiArMTAzNSw3IEBAIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIHtcbiBcdGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc2RhdGEpO1xuIFx0aWVlZTgwMjExX2RlYnVnZnNfYWRkX25ldGRldihzZGF0YSwgbWxkX3ZpZik7XG4rXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xuIFxuIFx0aWYgKHNkYXRhLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XG4gXHRcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXHUwMDNlbG9jYWwsIHNkYXRhKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjEwLjg3MTAwMDczOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0MTA3NTA5MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3VpdGFiaWxpdHkgRXZhbHVhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyeWluZyB0byBkZWNpZGUgaWYgaXQncyB3b3J0aCBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCwgbGV0J3MgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZG8gYSBxdWljayByaXNrIGFzc2Vzc21lbnQuIFRoaXMgaXMgYSBRQS90cmlhZ2UgdGFzaywgZXZhbHVhdGluZyBhIExpbnV4IGtlcm5lbCBwYXRjaC4gU2VlbXMgbGlrZSBhIGJlbmlnbiwgZGVmZW5zaXZlIGVmZm9ydC4gR29vZC5cblxuTm93LCBJJ2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSd2ZSBnb3QgdGhlIGRpZmYgaGVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgbmV3IGluY2x1ZGUsIGBcImRlYnVnZnNfa2V5LmhcImAsIGFuZCBtb2RpZnlpbmcgdGhlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgZnVuY3Rpb25zLiBJIHNlZSBpdCdzIHJlbW92aW5nIGFuZCBzZXR0aW5nIGEgY291cGxlIG9mIGRlYnVnZnMgcG9pbnRlcnMgKGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCwgYGRlZmF1bHRfbXVsdGljYXN0X2tleWApLCBhbmQgdGhlcmUncyBhIG5ldyBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLiBTbywgY2xlYXJseSwgdGhpcyBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggZGVmYXVsdCBrZXlzIHdpdGhpbiB0aGUgbWFjODAyMTEgZGVidWdmcyBpbnRlcmZhY2UuXG5cbkknbGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBkZWJ1Z2ZzX2tleS5oYCBpcyBhbGwgYWJvdXQuIEknbGwgbmVlZCB0byBzZWFyY2ggdGhlIGNvZGViYXNlIHdpdGggZ3JlcCAob3IgbWF5YmUganVzdCByZWFkIHRoZSBmaWxlIGRpcmVjdGx5ISkgdG8gc2VlIGhvdyB0aGVzZSBrZXlzIGFyZSB1c2VkLCB3aGF0IHRoZSB1cGRhdGUgZnVuY3Rpb24gZG9lcywgYW5kIHdoZXJlIHRoZSBwb3RlbnRpYWwgbmV3IGNvZGUgcGF0aHMgYXJlIGludHJvZHVjZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGVzcGVjaWFsbHkgdGhlIGtleSB1cGRhdGUsIHdpbGwgYmUga2V5IHRvIGRlY2lkaW5nIGlmIHRoaXMgb3BlbnMgdXAgbmV3IGFyZWFzIGZvciBmdXp6aW5nLiBBcmUgd2Ugc2V0dGluZyB1cCBuZXcgZW50cnkgcG9pbnRzLCBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBuZXcgd2F5cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWw/IE9yIGlzIHRoaXMganVzdCBhIGNsZWFuIHVwIG9mIGEgbWVtb3J5IGxlYWs/IE9ubHkgdGltZSB3aWxsIHRlbGwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNToyNC45Nzg1MTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk3NDIzOTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAyOD12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDMyLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzM6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNC1cXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2Lmg9MTU9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDoxNjp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNy1cXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTI4PXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMzAte31cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDozMTpzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTMyLVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIG1sZF92aWYpXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5jPTEwOD12b2lkIGRydl9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYy0xMjQtXFx0aWYgKHNkYXRhICE9IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cXHUwMDNlbW9uaXRvcl9zZGF0YSkpXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuYzoxMjU6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHNkYXRhLFxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgc2RhdGEtXFx1MDAzZXZpZi52YWxpZF9saW5rcyk7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xODc4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXR1cF9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5NzYtXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk3NzpcXHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTc4LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM9Mjg3PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91cGRhdGVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbGluay5jLTM1Mi1cXHRpZiAoIW9sZF9saW5rcylcXG5uZXQvbWFjODAyMTEvbGluay5jOjM1MzpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc2RhdGEsIHRydWUpO1xcbm5ldC9tYWM4MDIxMS9saW5rLmMtMzU0LVxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy0zODQtXFx0XFx0aWYgKCFuZXdfbGlua3MpXFxubmV0L21hYzgwMjExL2xpbmsuYzozODU6XFx0XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHNkYXRhLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2xpbmsuYy0zODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjI2Ljk1Mjc1NzAwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MjY0MjE1ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIGZpbGVzLi4uXG5cbioqRGl2aW5nIGludG8gbWFjODAyMTEgRGVidWdGUyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBtYWM4MDIxMWAncyBkZWJ1ZyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucyDigJMgc3BlY2lmaWNhbGx5LCBgZGVidWdmc19rZXkuY2AgYW5kIGBkZWJ1Z2ZzX25ldGRldi5jYC4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBob29rIGludG8gdGhlIGV4aXN0aW5nIGRlYnVnZnMgZnJhbWV3b3JrLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhlc2UgbWVjaGFuaXNtcyBhcmUgZGVzaWduZWQgZm9yIGluc3BlY3Rpb24gYW5kIHBvdGVudGlhbCBtYW5pcHVsYXRpb24gb2Ygd2lyZWxlc3Mga2V5cyBhbmQgbmV0d29yayBkZXZpY2Ugc3RhdGVzIHdpdGhpbiB0aGUgbWFjODAyMTEgY29udGV4dC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoZSBmaWxlIGhpZXJhcmNoeSwgdGhlIHBlcm1pc3Npb25zLCBhbmQgdGhlIGFjdHVhbCByZWFkL3dyaXRlIGhhbmRsZXJzIHRoZXkndmUgaW1wbGVtZW50ZWQuIE15IGV4cGVjdGF0aW9uIGlzIHRoZSBmcmFtZXdvcmsgd2lsbCBhbGxvdyBmb3IgZXhhbWluYXRpb24gb2Yga2V5IGRhdGEsIGFzc29jaWF0aW9uIHBhcmFtZXRlcnMsIGFuZCBkcml2ZXItc3BlY2lmaWMgc3RhdGlzdGljcywgYW5kIHByb2JhYmx5IHRoZSBhYmlsaXR5IHRvIGVuYWJsZS9kaXNhYmxlIGNlcnRhaW4gZGVidWdnaW5nIGZsYWdzLiBJJ2xsIGFsc28gY2hlY2sgaG93IHRoZXNlIGRlYnVnZnMgZW50cmllcyBpbnRlcmFjdCB3aXRoIHRoZSBtYWM4MDIxMSBjb3JlIGFuZCBpdHMgYXNzb2NpYXRlZCBuZXR3b3JrIGRldmljZXMsIGxvb2tpbmcgZm9yIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGV5IHVzZSB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVpciBkZWJ1Z2ZzIGVudHJpZXMgaW4gdGhlIGRldmljZSBsaWZlY3ljbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyODYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNToyOS40NzkxODEwNDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcXG4xMDExOlxcdFxcdGFkZF9maWxlcyhzZGF0YSk7XFxuMTAxMjpcXHRcXHRpZiAoIW1sZF92aWYpXFxuMTAxMzpcXHRcXHRcXHRhZGRfbGlua19maWxlcyhcXHUwMDI2c2RhdGEtXFx1MDAzZWRlZmxpbmssIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpO1xcbjEwMTQ6XFx0fVxcbjEwMTU6XFx0XFxuMTAxNjpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuMTAxNzpcXHR7XFxuMTAxODpcXHRcXHRpZiAoIXNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIpXFxuMTAxOTpcXHRcXHRcXHRyZXR1cm47XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcXG4xMDIyOlxcdFxcdHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIgPSBOVUxMO1xcbjEwMjM6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG4xMDI0OlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xcbjEwMjU6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4xMDI2OlxcdH1cXG4xMDI3OlxcdFxcbjEwMjg6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbjEwMjk6XFx0e1xcbjEwMzA6XFx0XFx0ZGVidWdmc19jaGFuZ2VfbmFtZShzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBcXFwibmV0ZGV2OiVzXFxcIiwgc2RhdGEtXFx1MDAzZW5hbWUpO1xcbjEwMzE6XFx0fVxcbjEwMzI6XFx0XFxuMTAzMzpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4xMDM0OlxcdFxcdFxcdFxcdFxcdCAgICAgICBib29sIG1sZF92aWYpXFxuMTAzNTpcXHR7XFxuMTAzNjpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHNkYXRhKTtcXG4xMDM3OlxcdFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbjEwMzg6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG4xMDM5OlxcdFxcbjEwNDA6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcXG4xMDQxOlxcdFxcdFxcdGRydl92aWZfYWRkX2RlYnVnZnMoc2RhdGEtXFx1MDAzZWxvY2FsLCBzZGF0YSk7XFxuMTA0MjpcXHRcXHRcXHRpZiAoIW1sZF92aWYpXFxuMTA0MzpcXHRcXHRcXHRcXHRpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2Rydl9hZGQoXFx1MDAyNnNkYXRhLVxcdTAwM2VkZWZsaW5rKTtcXG4xMDQ0OlxcdFxcdH1cXG4xMDQ1OlxcdH1cXG4xMDQ2OlxcdFxcbjEwNDc6XFx0dm9pZCBpZWVlODAyMTFfbGlua19kZWJ1Z2ZzX2FkZChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4xMDQ4OlxcdHtcXG4xMDQ5OlxcdFxcdGNoYXIgbGlua19kaXJfbmFtZVsxMF07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjI5LjQ3OTMxNjU2N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNDkwMzAzMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIERlYnVnZnMgS2V5IFVwZGF0ZSBQcm9jZXNzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBmdW5jdGlvbiBvcGVyYXRlcyBhbmQsIGNydWNpYWxseSwgaG93IGRlYnVnZnMga2V5IGZpbGVzIGFyZSBhY3R1YWxseSBnZW5lcmF0ZWQgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0IGlzIGFsd2F5cyB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgZGVmYXVsdCB1bmljYXN0IGtleSBpcyBkZWZpbmVkIGFuZCBob3cgdGhpcyB1cGRhdGUgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggaXQuIFRvIGRvIHRoYXQsIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgdGFyZ2V0ZWQgZ3JlcC4gSSdsbCBsb29rIGZvciBib3RoIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQsIG9mIGNvdXJzZSwgdGhlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGZ1bmN0aW9uIGl0c2VsZi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gdHJhY2UgdGhlIGNvZGUgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLiBJIGV4cGVjdCBJJ2xsIGJlIGFibGUgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgZmlsZSBwYXRocyBhbmQgdmFyaWFibGVzLCB0aGVuIGRpdmUgZGVlcGVyIGlmIHRoZSBpbml0aWFsIHJlc3VsdHMgd2FycmFudCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MzEuNjI4MzQ5OTIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4NDIwOTk0MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0fGRlZmF1bHRfdW5pY2FzdF9rZXlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz02NTYwPXN0YXRpYyBpbnQgYXRoMTBrX3NldF9rZXkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGVudW0gc2V0X2tleV9jbWQgY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy02NjUwLVxcdFxcdCAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo2NjUxOlxcdFxcdCAqIFN0YXRpYyBXRVAgc2V0cyBkZWZfd2VwX2tleV9pZHggdmlhIC5zZXRfZGVmYXVsdF91bmljYXN0X2tleVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNjY1Mi1cXHRcXHQgKiBhZnRlciBmaXJzdCBzZXRfa2V5KCkuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo2NzE1OnN0YXRpYyB2b2lkIGF0aDEwa19zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTY3MTYtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTQ4Ni1cXHQuc2V0X2tleVxcdFxcdFxcdD0gYXRoMTBrX3NldF9rZXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5NDg3OlxcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSAgICAgICAgPSBhdGgxMGtfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NDg4LVxcdC5zdGFfc3RhdGVcXHRcXHRcXHQ9IGF0aDEwa19zdGFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jPTQxPXZvaWQgaXdsX212bV9pcHY2X2FkZHJfY2hhbmdlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vZDMuYy02NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jOjY2OnZvaWQgaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9kMy5jLTY3LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9NjM1MT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBpd2xfbXZtX2h3X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtNjQyNi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjY0Mjc6XFx0LnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gaXdsX212bV9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTY0MjgtI2VuZGlmXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tbGQtbWFjODAyMTEuYz04ODk9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgaXdsX212bV9tbGRfaHdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWxkLW1hYzgwMjExLmMtOTYzLSNlbmRpZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21sZC1tYWM4MDIxMS5jOjk2NDpcXHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21sZC1tYWM4MDIxMS5jLTk2NS0jZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oPTIxNDc9dm9pZCBpd2xfbXZtX2lwdjZfYWRkcl9jaGFuZ2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tdm0uaC0yMTQ5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oOjIxNTA6dm9pZCBpd2xfbXZtX3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL212bS5oLTIxNTEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLCBpbnQgaWR4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jPTEzMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgd2Z4X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jLTE0OS1cXHQuc2V0X3J0c190aHJlc2hvbGQgICAgICAgPSB3Znhfc2V0X3J0c190aHJlc2hvbGQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmM6MTUwOlxcdC5zZXRfZGVmYXVsdF91bmljYXN0X2tleSA9IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYy0xNTEtXFx0LmJzc19pbmZvX2NoYW5nZWQgICAgICAgID0gd2Z4X2Jzc19pbmZvX2NoYW5nZWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jPTI1MD1zdGF0aWMgdm9pZCB3ZnhfYmVhY29uX2xvc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jOjI2MTp2b2lkIHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5jLTI2Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3N0YS5oPTI1PWludCB3Znhfc2V0X3J0c190aHJlc2hvbGQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGludCByYWRpb19pZHgsIHUzMiB2YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaDoyNjp2b2lkIHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zdGEuaC0yNy12b2lkIHdmeF9jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1bnNpZ25lZCBpbnQgY2hhbmdlZF9mbGFncyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9NjAwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgd2wxMjcxX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtNjAyOS1cXHQuc2V0X2JpdHJhdGVfbWFzayA9IHdsMTJ4eF9zZXRfYml0cmF0ZV9tYXNrLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NjAzMDpcXHQuc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkgPSB3bDEyNzFfb3Bfc2V0X2RlZmF1bHRfa2V5X2lkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTYwMzEtXFx0LmNoYW5uZWxfc3dpdGNoID0gd2wxMnh4X29wX2NoYW5uZWxfc3dpdGNoLFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zNDYwPXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTEyLSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozNTEzOiAqIFRoZSBzZXRfZGVmYXVsdF91bmljYXN0X2tleSgpIGNhbGwgdXBkYXRlcyB0aGUgZGVmYXVsdCBXRVAga2V5IGluZGV4XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNTE0LSAqIGNvbmZpZ3VyZWQgdG8gdGhlIGhhcmR3YXJlIGZvciBXRVAgZW5jcnlwdGlvbiB0eXBlLiBUaGlzIGlzIHJlcXVpcmVkXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MjE3LSAqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0MjE4OiAqIEBzZXRfZGVmYXVsdF91bmljYXN0X2tleTogU2V0IHRoZSBkZWZhdWx0ICh1bmljYXN0KSBrZXkgaW5kZXgsIHVzZWZ1bCBmb3JcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQyMTktICpcXHRXRVAgd2hlbiB0aGUgZGV2aWNlIHNlbmRzIGRhdGEgcGFja2V0cyBhdXRvbm9tb3VzbHksIGUuZy4gZm9yIEFSUFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00NzQyPXN0cnVjdCBpZWVlODAyMTFfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDgwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGNmZzgwMjExX2d0a19yZWtleV9kYXRhICpkYXRhKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MDE6XFx0dm9pZCAoKnNldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MDItXFx0XFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgaW50IGlkeCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYz0zNjE9dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNjktXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzcwOnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM3MS17XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzktXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgwOlxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4MTpcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zODItXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM6MzgzOlxcdGlmIChzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSkge1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jLTM4NC1cXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4NTpcXHRcXHRcXHRcXHRcXHRzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg2LVxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM4NzpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYzozODg6XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfc3ltbGluayhcXFwiZGVmYXVsdF91bmljYXN0X2tleVxcXCIsXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtOS12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfbWdtdF9kZWZhdWx0KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xNy17fVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDE2PXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMjMtXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuc3ViZGlyX3N0YXRpb25zID0gTlVMTDtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzoxMDI0OlxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMjUtXFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jPTEwMzM9dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM3LVxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc2RhdGEsIG1sZF92aWYpO1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzg6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDM5LVxcbi0tXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaD0xMTIzPXN0YXRpYyBpbmxpbmUgdm9pZFxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmg6MTEyNDpkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMTI1LVxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kcml2ZXItb3BzLmgtMTEzNS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjExMzY6XFx0dHJhY2VfZHJ2X3NldF9kZWZhdWx0X3VuaWNhc3Rfa2V5KGxvY2FsLCBzZGF0YSwga2V5X2lkeCk7XFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaDoxMTM3OlxcdGlmIChsb2NhbC1cXHUwMDNlb3BzLVxcdTAwM2VzZXRfZGVmYXVsdF91bmljYXN0X2tleSlcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjExMzg6XFx0XFx0bG9jYWwtXFx1MDAzZW9wcy1cXHUwMDNlc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXkoXFx1MDAyNmxvY2FsLVxcdTAwM2VodywgXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYsXFxubmV0L21hYzgwMjExL2RyaXZlci1vcHMuaC0xMTM5LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBrZXlfaWR4KTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExNjY9c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMTk2LVxcdHN0cnVjdCBpZWVlODAyMTFfa2V5IF9fcmN1ICprZXlzW05VTV9ERUZBVUxUX0tFWVNdO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjExOTc6XFx0c3RydWN0IGllZWU4MDIxMV9rZXkgX19yY3UgKmRlZmF1bHRfdW5pY2FzdF9rZXk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE5OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTYtXFx0XFx0c3RydWN0IGRlbnRyeSAqc3ViZGlyX3N0YXRpb25zO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjEyNTc6XFx0XFx0c3RydWN0IGRlbnRyeSAqZGVmYXVsdF91bmljYXN0X2tleTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xMjU4LVxcdFxcdHN0cnVjdCBkZW50cnkgKmRlZmF1bHRfbXVsdGljYXN0X2tleTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM2Ni1cXHRpZiAodW5pKSB7XFxubmV0L21hYzgwMjExL2tleS5jOjM2NzpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXksIGtleSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM2OC1cXHRcXHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtMzY5LVxcdFxcdGlmIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVBfVkxBTilcXG5uZXQvbWFjODAyMTEva2V5LmM6MzcwOlxcdFxcdFxcdGRydl9zZXRfZGVmYXVsdF91bmljYXN0X2tleShzZGF0YS1cXHUwMDNlbG9jYWwsIHNkYXRhLCBpZHgpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0zNzEtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM3NS1cXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9Mzg4PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X21nbXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cXG5uZXQvbWFjODAyMTEva2V5LmM6NDAyOlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTQwMy19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NDE0PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X2JlYWNvbl9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNDI4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzo0Mjk6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNDMwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz00NDA9c3RhdGljIGludCBpZWVlODAyMTFfa2V5X3JlcGxhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNTQ5LVxcdFxcdFxcdG9sZCA9PSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbm5ldC9tYWM4MDIxMS9rZXkuYzo1NTA6XFx0XFx0XFx0XFx0XFx0XFx0IHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNTUxLVxcdFxcdGRlZm11bHRpa2V5ID0gb2xkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9MTA4Nz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZnJlZV9rZXlzX2lmYWNlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTExMDUtXFxubmV0L21hYzgwMjExL2tleS5jOjExMDY6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNy19XFxuLS1cXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM9NDYzPXZvaWQgbWVzaF9mYXN0X3R4X2NhY2hlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTUyMy1cXHRpZiAoIWtleSlcXG5uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmM6NTI0OlxcdFxcdGtleSA9IHJjdV9hY2Nlc3NfcG9pbnRlcihzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jLTUyNS1cXHRidWlsZC5mYXN0X3R4LmtleSA9IGtleTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ3MjA9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF9yeChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjAtXFx0aWYgKCFrZXkpXFxubmV0L21hYzgwMjExL3J4LmM6NDgyMTpcXHRcXHRrZXkgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS9yeC5jLTQ4MjItXFx0aWYgKGtleSkge1xcbi0tXFxubmV0L21hYzgwMjExL3RyYWNlLmg9MjE1MT1ERUZJTkVfRVZFTlQobG9jYWxfc2RhdGFfZXZ0LCBkcnZfYWJvcnRfcG1zcixcXG4tLVxcbm5ldC9tYWM4MDIxMS90cmFjZS5oLTIxNTYtXFxubmV0L21hYzgwMjExL3RyYWNlLmg6MjE1NzpUUkFDRV9FVkVOVChkcnZfc2V0X2RlZmF1bHRfdW5pY2FzdF9rZXksXFxubmV0L21hYzgwMjExL3RyYWNlLmgtMjE1OC1cXHRUUF9QUk9UTyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTU5OT1pZWVlODAyMTFfc2VsZWN0X2tleV84MDIzKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02MDgtXFx0XFx0aWYgKCF0eC1cXHUwMDNla2V5KVxcbm5ldC9tYWM4MDIxMS90eC5jOjYwOTpcXHRcXHRcXHR0eC1cXHUwMDNla2V5ID0gcmN1X2RlcmVmZXJlbmNlKHR4LVxcdTAwM2VzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSk7XFxubmV0L21hYzgwMjExL3R4LmMtNjEwLVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjMwPWllZWU4MDIxMV90eF9oX3NlbGVjdF9rZXkoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0OS1cXHRlbHNlIGlmICghaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYzo2NTA6XFx0XFx0IChrZXkgPSByY3VfZGVyZWZlcmVuY2UodHgtXFx1MDAzZXNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSkpXFxubmV0L21hYzgwMjExL3R4LmMtNjUxLVxcdFxcdHR4LVxcdTAwM2VrZXkgPSBrZXk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zMDcyPXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMyMzUtXFx0aWYgKCFidWlsZC5rZXkpXFxubmV0L21hYzgwMjExL3R4LmM6MzIzNjpcXHRcXHRidWlsZC5rZXkgPSByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTMyMzctXFx0aWYgKGJ1aWxkLmtleSkge1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDgxNT1zdGF0aWMgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0XzgwMjMoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTItXFx0XFx0aWYgKCFrZXkpXFxubmV0L21hYzgwMjExL3R4LmM6NDg1MzpcXHRcXHRcXHRrZXkgPSByY3VfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ4NTQtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNTozNC40NzA0NTM2MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY0MDA4MjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgIGZvciBEZWZhdWx0IEtleSBVcGRhdGVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoaW4gYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jYC4gSSdtIGZhbWlsaWFyIHdpdGggbWFjODAyMTEncyBvdmVyYWxsIGFyY2hpdGVjdHVyZSwgc28gSSBleHBlY3QgdGhpcyBmdW5jdGlvbiBwbGF5cyBhIGNydWNpYWwgcm9sZSBpbiBtYW5hZ2luZyBkZWZhdWx0IGVuY3J5cHRpb24ga2V5cywgbGlrZWx5IHRocm91Z2ggdGhlIGRlYnVnZnMgaW50ZXJmYWNlLiBJIGFudGljaXBhdGUgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGFjdHVhbCBtZWNoYW5pc20gb2Ygc2V0dGluZywgdXBkYXRpbmcsIGFuZCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgZGVmYXVsdCBrZXkgY29uZmlndXJhdGlvbiB0aGF0IHRoZSB3aXJlbGVzcyBzdGFjayB1c2VzLiBHaXZlbiB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBgZGVidWdmc19rZXkuY2AgZmlsZSwgSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCBkZWJ1Z2ZzIGVudHJpZXMgLSBsaWtlbHkgdG8gZXhwb3NlIGtleSBtYW5pcHVsYXRpb24gdG8gZGV2ZWxvcGVycyBhbmQgZGVidWdnaW5nLlxuSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGFueSBlcnJvciBoYW5kbGluZyBpdCBpbXBsZW1lbnRzLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGtleSBtYW5hZ2VtZW50IHN5c3RlbSBvZiBtYWM4MDIxMS4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGNvbnNpZGVyaW5nIHRoZSBpbnRlcmZhY2UsIGlucHV0IGFuZCBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbi4gR2l2ZW4gbXkgY3VycmVudCBwcm9qZWN0LCBJJ20gdGhpbmtpbmcgYWJvdXQgZWRnZSBjYXNlcywgc2VjdXJpdHksIGFuZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMgdGhhdCBtYXkgY29tZSB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTcsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNTozNi42MzQ0NjQwODlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzY1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzY1OlxcdFxcbiAzNjY6XFx0XFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGtleS1cXHUwMDNlZGVidWdmcy5kaXIpO1xcbiAzNjc6XFx0XFx0a2V5LVxcdTAwM2VkZWJ1Z2ZzLmRpciA9IE5VTEw7XFxuIDM2ODpcXHR9XFxuIDM2OTpcXHRcXG4gMzcwOlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbiAzNzE6XFx0e1xcbiAzNzI6XFx0XFx0Y2hhciBidWZbNTBdO1xcbiAzNzM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9rZXkgKmtleTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0aWYgKCFzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxcbiAzNzY6XFx0XFx0XFx0cmV0dXJuO1xcbiAzNzc6XFx0XFxuIDM3ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0ZGVidWdmc19yZW1vdmUoc2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSk7XFxuIDM4MTpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG4gMzgyOlxcdFxcbiAzODM6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KSB7XFxuIDM4NDpcXHRcXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbiAzODU6XFx0XFx0XFx0XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbiAzODY6XFx0XFx0XFx0c3ByaW50ZihidWYsIFxcXCIuLi9rZXlzLyVkXFxcIiwga2V5LVxcdTAwM2VkZWJ1Z2ZzLmNudCk7XFxuIDM4NzpcXHRcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID1cXG4gMzg4OlxcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoXFxcImRlZmF1bHRfdW5pY2FzdF9rZXlcXFwiLFxcbiAzODk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XFxuIDM5MDpcXHRcXHR9XFxuIDM5MTpcXHRcXG4gMzkyOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XFxuIDM5MzpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xcbiAzOTQ6XFx0XFxuIDM5NTpcXHRcXHRpZiAoc2RhdGEtXFx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KSB7XFxuIDM5NjpcXHRcXHRcXHRrZXkgPSB3aXBoeV9kZXJlZmVyZW5jZShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5LFxcbiAzOTc6XFx0XFx0XFx0XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlZmxpbmsuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5KTtcXG4gMzk4OlxcdFxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbiAzOTk6XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID1cXG4gNDAwOlxcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoXFxcImRlZmF1bHRfbXVsdGljYXN0X2tleVxcXCIsXFxuIDQwMTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgYnVmKTtcXG4gNDAyOlxcdFxcdH1cXG4gNDAzOlxcdH1cXG4gNDA0OlxcdFxcbiA0MDU6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfcmVtb3ZlX21nbXRfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gNDA2OlxcdHtcXG4gNDA3OlxcdFxcdGlmICghc2RhdGEpXFxuIDQwODpcXHRcXHRcXHRyZXR1cm47XFxuIDQwOTpcXHRcXG4gNDEwOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbWdtdF9rZXkpO1xcbiA0MTE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tZ210X2tleSA9IE5VTEw7XFxuIDQxMjpcXHR9XFxuIDQxMzpcXHRcXG4gNDE0OlxcdHZvaWRcXG4gNDE1OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIDQxNjpcXHR7XFxuIDQxNzpcXHRcXHRpZiAoIXNkYXRhKVxcbiA0MTg6XFx0XFx0XFx0cmV0dXJuO1xcbiA0MTk6XFx0XFxuIDQyMDpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X2JlYWNvbl9rZXkpO1xcbiA0MjE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9iZWFjb25fa2V5ID0gTlVMTDtcXG4gNDIyOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6MzYuNjM0NTQyODI5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYyMzYwMjcwODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIG1hYzgwMjExIERlYnVnZnMgSXNzdWUqKlxuXG5Pa2F5LCBzbyBsZXQncyBicmVhayB0aGlzIGRvd24uIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCByZW1vdmVzIHRoZSBlbnRpcmUgZGVidWdmcyBkaXJlY3RvcnkgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgc3RhdGlvbiBkYXRhIChgc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyYCkgcmVjdXJzaXZlbHkuIFRoZSBjb3JlIHByb2JsZW0gd2FzIHRoYXQsIGJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBvdGVudGlhbGx5IGxlZnQgd2l0aCBkYW5nbGluZyBwb2ludGVycyBpbiBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCBpZiB3ZSByZW1vdmVkIHRoZSBkZWJ1Z2ZzIGRpcmVjdG9yeSByZWN1cnNpdmVseS5cblxuVGhlIHByb2JsZW1hdGljIHNjZW5hcmlvIGFyb3NlIHdoZW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgd2FzIGNhbGxlZC4gSXQgd291bGQgY29ycmVjdGx5IHJlbW92ZSB0aGUgb2xkIG5ldGRldiBhbmQgdGhlbiBhZGQgYSBuZXcgb25lLCBidXQgY3J1Y2lhbGx5LCBpdCAqd2Fzbid0KiB1cGRhdGluZyB0aGUgZGVmYXVsdCBrZXlzLiBUaGlzIG1lYW50IGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgY291bGQgYmVjb21lIHN0YWxlLCBwb2ludGluZyB0byBtZW1vcnkgdGhhdCBoYWQgYmVlbiBmcmVlZCwgb3IgYmUgZW50aXJlbHkgbG9zdCBhcyB0aGUgbmV3IG5ldGRldiBjYW1lIGludG8gZXhpc3RlbmNlLlxuXG5UaGUgZml4IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3ZSBub3cgZXhwbGljaXRseSBzZXQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleWAgYW5kIGBzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gYE5VTExgLiBUaGlzIGNsZWFucyB1cCB0aGUgb2xkIGtleSBwb2ludGVycyBvbiByZW1vdmFsLiBBbmQgaW4gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAsIHdlJ3ZlIGFkZGVkIGEgY2FsbCB0byBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKWAgYWZ0ZXIgdGhlIHJlY3JlYXRlIHRvIHJlLWluaXRpYWxpemUgdGhlIGRlZmF1bHQga2V5cyBmb3IgdGhlIG5ldyBuZXRkZXYuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBkZWZhdWx0IGtleXMgYXJlIGFsd2F5cyBrZXB0IGNvbnNpc3RlbnQuXG5cbk5vdywgYXMgYW4gYXNpZGUsIEknbSB0aGlua2luZyBhYm91dCB0aGUgcmVhbC13b3JsZCBpbXBsaWNhdGlvbnMsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgZnV6emluZy4gTGV0J3MgY29uc2lkZXIgcmVhY2hhYmlsaXR5LiBHaXZlbiB0aGF0IHN5emthbGxlciBpcyBoZWF2aWx5IGZ1enplZCBieSB0aGUgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBjcmVhdGVzIHZpcnR1YWwgbWFjODAyMTEgZGV2aWNlcyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIGFuZCBHQ0Uga2VybmVscywgdGhlbiB5ZXMsIG1hYzgwMjExIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUgaW4gc3l6a2FsbGVyLiBUaGF0J3MgZXhjZWxsZW50IG5ld3MuIEdpdmVuIHRoZSBwb3B1bGFyaXR5IG9mIG5sODAyMTEsIG1hYzgwMjExIGlzIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGZ1enplZCBhcmVhcyBpbiBzeXprYWxsZXIuIFRoaXMgcGFydGljdWxhciBhcmVhIG9mIGNvZGUgd2lsbCBiZSBnZXR0aW5nIHRlc3RlZCBhIGxvdC4gQW5kLCBhcyBhIGRvdWJsZS1jaGVjaywgaXQncyB3b3J0aCByZXZpZXdpbmcgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gY29uZmlybSB0aGF0IGRlYnVnZnMgc3VwcG9ydCBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk0MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjQyLjg3MDU3NDAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTk2NTkxNTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQzgwMjExX0RFQlVHRlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnPTM0PUNPTkZJR19NQUM4MDIxMT1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYXRoMjVfZGVmY29uZmlnOjM1OkNPTkZJR19NQUM4MDIxMV9ERUJVR0ZTPXlcXG5hcmNoL21pcHMvY29uZmlncy9hdGgyNV9kZWZjb25maWctMzYtQ09ORklHX01URD15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc9Mjg9Q09ORklHX01BQzgwMjExPW1cXG5hcmNoL21pcHMvY29uZmlncy9hdGg3OV9kZWZjb25maWc6Mjk6Q09ORklHX01BQzgwMjExX0RFQlVHRlM9eVxcbmFyY2gvbWlwcy9jb25maWdzL2F0aDc5X2RlZmNvbmZpZy0zMC1DT05GSUdfTVREPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Mjg4PUNPTkZJR19NQUM4MDIxMV9MRURTPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjI4OTpDT05GSUdfTUFDODAyMTFfREVCVUdGUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0yOTAtQ09ORklHX05FVF85UD1tXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTIyPWF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSArPSBsZWRzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjIzOmF0aDEwa19jb3JlLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnNfc3RhLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTI0LWF0aDEwa19jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9NTIzPXN0cnVjdCBhdGgxMGtfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTU0Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDo1NDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtNTQ4LVxcdC8qIHByb3RlY3RlZCBieSBjb25mX211dGV4ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjUyND1pbnQgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI2MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2MjQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjI1LVxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInN0YV90aWRfc3RhdHNfbWFza1xcXCIsIDA2MDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg9MTk5PXN0YXRpYyBpbmxpbmUgaW50IGF0aDEwa19kZWJ1Z19md19zdGF0c19yZXF1ZXN0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTIxMC0jZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjEyLXZvaWQgYXRoMTBrX3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaD0yNDY9dm9pZCBhdGgxMGtfc3RhX3VwZGF0ZV9yeF90aWRfc3RhdHNfYW1wZHUoc3RydWN0IGF0aDEwayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjUxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmg6MjUyOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jPTk0NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDEwa19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk1MjUtI2VuZGlmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYzo5NTI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyNy1cXHQuc3RhX2FkZF9kZWJ1Z2ZzXFx0XFx0PSBhdGgxMGtfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnPTM4PWNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD01NDI9c3RydWN0IGF0aDExa19zdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oOjU2NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC01NjctXFx0LyogcHJvdGVjdGVkIGJ5IGNvbmZfbXV0ZXggKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzc6XFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz01OD1jb25maWcgQVRIOUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTU5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYxLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmM9Mjc5MD1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFpbi5jLTI4MzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYzoyODM1OiNpZiBkZWZpbmVkKENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYy0yODM2LVxcdC5zdGFfYWRkX2RlYnVnZnMgICAgPSBhdGg5a19zdGFfYWRkX2RlYnVnZnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZz0yNz1jb25maWcgQ0FSTDkxNzBfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkRlYnVnRlMgU3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZzoyOTpcXHRkZXBlbmRzIG9uIENBUkw5MTcwIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvS2NvbmZpZy0zMC1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYz02MDA9aWwzOTQ1X3JzX2dldF9yYXRlKHZvaWQgKmlsX3IsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHZvaWQgKmlsX3N0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzM5NDUtcnMuYy03OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjc5NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtNzk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jPTg1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jLTg2Ny1cXHQuZnJlZV9zdGEgPSBpbDM5NDVfcnNfZnJlZV9zdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvMzk0NS1ycy5jOjg2ODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS8zOTQ1LXJzLmMtODY5LVxcdC5hZGRfc3RhX2RlYnVnZnMgPSBpbDM5NDVfYWRkX2RlYnVnZnMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9MjI2Mz1pbDQ5NjVfcnNfcmF0ZV9pbml0KHN0cnVjdCBpbF9wcml2ICppbCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggc3RhX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jOjIzNDI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTIzNDMtXFx0bHFfc3RhLVxcdTAwM2VkYmdfZml4ZWRfcmF0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS80OTY1LXJzLmM9MjQ5Mz1pbDQ5NjVfcnNfZGJnZnNfc2V0X21jcyhzdHJ1Y3QgaWxfbHFfc3RhICpscV9zdGEsIHUzMiAqIHJhdGVfbl9mbGFncywgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYy0yNDk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyNDk5OlxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUykpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI1MDAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jPTI3Njk9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzXzQ5NjVfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzctXFx0LmZyZWVfc3RhID0gaWw0OTY1X3JzX2ZyZWVfc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5LzQ5NjUtcnMuYzoyNzc4OlxcdC5hZGRfc3RhX2RlYnVnZnMgPSBQVFJfSUYoSVNfRU5BQkxFRChDT05GSUdfTUFDODAyMTFfREVCVUdGUyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvNDk2NS1ycy5jLTI3NzktXFx0XFx0XFx0XFx0ICBpbDQ5NjVfcnNfYWRkX2RlYnVnZnMpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvS2NvbmZpZz05Mz1jb25maWcgSVdMRUdBQ1lfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTQtXFx0Ym9vbCBcXFwiaXdsZWdhY3kgKGl3bCAzOTQ1LzQ5NjUpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2xlZ2FjeS9LY29uZmlnOjk1OlxcdGRlcGVuZHMgb24gSVdMRUdBQ1kgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bGVnYWN5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnPTEzMT1jb25maWcgSVdMV0lGSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJpd2x3aWZpIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL0tjb25maWc6MTMzOlxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvS2NvbmZpZy0xMzQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0xMzc9c3RhdGljIHZvaWQgcnNfc3RheV9pbl90YWJsZShzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfc3RhLCBib29sIGZvcmNlX3NlYXJjaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTEzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjE0MDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTE0MS1zdGF0aWMgdm9pZCByc19kYmdmc19zZXRfbWNzKHN0cnVjdCBpd2xfbHFfc3RhICpscV9zdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jPTI0OD1zdGF0aWMgdTggcnNfdGxfYWRkX3BhY2tldChzdHJ1Y3QgaXdsX2xxX3N0YSAqbHFfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6Mjk4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMjk5LS8qXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jPTI3NDA9dm9pZCBpd2xfcnNfcmF0ZV9pbml0KHN0cnVjdCBpd2xfcHJpdiAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdTggc3RhX2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yODMwLVxcdGxxX3N0YS1cXHUwMDNlaXNfYWdnID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjI4MzE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0yODMyLVxcdGxxX3N0YS1cXHUwMDNlZGJnX2ZpeGVkX3JhdGUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYz0yOTk2PXN0YXRpYyB2b2lkIHJzX2ZyZWVfc3RhKHZvaWQgKnByaXZfciwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmMtMzAwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jOjMwMDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMDA3LXN0YXRpYyB2b2lkIHJzX2RiZ2ZzX3NldF9tY3Moc3RydWN0IGl3bF9scV9zdGEgKmxxX3N0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM9MzI2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHJhdGVfY29udHJvbF9vcHMgcnNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuYy0zMjc1LVxcdC5mcmVlX3N0YSA9IHJzX2ZyZWVfc3RhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvZHZtL3JzLmM6MzI3NjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5jLTMyNzctXFx0LmFkZF9zdGFfZGVidWdmcyA9IHJzX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaD0zMTk9c3RydWN0IGl3bF9scV9zdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9kdm0vcnMuaC0zNTItXFx0dTggdHhfYWdnX3RpZF9lbjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oOjM1MzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL2R2bS9ycy5oLTM1NC1cXHR1MzIgZGJnX2ZpeGVkX3JhdGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jPTcwNT12b2lkIGl3bF9tdm1fcnNfYWRkX3N0YV9saW5rKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jOjcyMDojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy1mdy5jLTcyMS1cXHRscV9zdGEtXFx1MDAzZXBlcnMuZGJnX2ZpeGVkX3JhdGUgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0xOTYwPXN0YXRpYyBib29sIHJzX3RwY19wZXJmb3JtKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTE5NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzoxOTc4OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMTk3OS1cXHRpZiAobHFfc3RhLVxcdTAwM2VwZXJzLmRiZ19maXhlZF90eHBfcmVkdWN0aW9uIFxcdTAwM2M9IFRQQ19NQVhfUkVEVUNUSU9OKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTI3MjM9c3RhdGljIHZvaWQgKnJzX2Rydl9hbGxvY19zdGEodm9pZCAqbXZtX3JhdGUsIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTI3MzMtXFx0bHFfc3RhLVxcdTAwM2VwZXJzLmRydiA9IG12bTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjI3MzQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0yNzM1LVxcdGxxX3N0YS1cXHUwMDNlcGVycy5kYmdfZml4ZWRfcmF0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTMwMzY9c3RhdGljIHZvaWQgX19pd2xfbXZtX3JzX3R4X3N0YXR1cyhzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM6MzA3MTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTMwNzItXFx0LyogRGlzYWJsZSBsYXN0IHR4IGNoZWNrIGlmIHdlIGFyZSBkZWJ1Z2dpbmcgd2l0aCBmaXhlZCByYXRlIGJ1dFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0zMjY5PXZvaWQgaXdsX212bV9yc190eF9zdGF0dXMoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzI4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjMyODQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zMjg1LXN0YXRpYyB2b2lkIHJzX2J1aWxkX3JhdGVzX3RhYmxlX2Zyb21fZml4ZWQoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzMxOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozMzIwOiNlbmRpZiAvKiBDT05GSUdfTUFDODAyMTFfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzMyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmM9MzUxMD1zdGF0aWMgdm9pZCByc19zZXRfbHFfc3NfcGFyYW1zKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1MjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNTI3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzUyOC1cXHQvKiBDaGVjayBpZiBmb3JjaW5nIHRoZSBkZWNpc2lvbiBpcyBjb25maWd1cmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYz0zNTg3PXN0YXRpYyB2b2lkIHJzX2ZpbGxfbHFfY21kKHN0cnVjdCBpd2xfbXZtICptdm0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jLTM1OTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYzozNjAwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzYwMS1cXHRpZiAobHFfc3RhLVxcdTAwM2VwZXJzLmRiZ19maXhlZF9yYXRlKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTM2NjA9aW50IHJzX3ByZXR0eV9wcmludF9yYXRlX3YxKGNoYXIgKmJ1ZiwgaW50IGJ1ZnN6LCBjb25zdCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmMtMzcwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjM3MDY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy0zNzA3LS8qXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jPTQxMDA9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIHJzX212bV9vcHNfZHJ2ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy00MTA5LVxcdC5yYXRlX3VwZGF0ZSA9IHJzX2Rydl9yYXRlX3VwZGF0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5jOjQxMTA6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuYy00MTExLVxcdC5hZGRfc3RhX2RlYnVnZnMgPSByc19kcnZfYWRkX3N0YV9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaD0yMDg9c3RydWN0IGl3bF9scV9zdGFfcnNfZncge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0yMTQtXFx0XFx0dTMyIHN0YV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oOjIxNTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9ycy5oLTIxNi1cXHRcXHQvKipcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmg9MzAxPXN0cnVjdCBpd2xfbHFfc3RhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3JzLmgtMzYxLVxcdHN0cnVjdCBscV9zdGFfcGVycyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaDozNjI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vcnMuaC0zNjMtXFx0XFx0dTMyIGRiZ19maXhlZF9yYXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZGVidWdmcy5jPTEzNzY9Ym9vbCBtdDc5MTVfZGVidWdmc19yeF9sb2coc3RydWN0IG10NzkxNV9kZXYgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYzoxMzg3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYy0xMzg4LS8qKiBwZXItc3RhdGlvbiBkZWJ1Z2ZzICoqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jPTE3NzY9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTE1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODI1LVxcdENGRzgwMjExX1RFU1RNT0RFX0RVTVAobXQ3Nl90ZXN0bW9kZV9kdW1wKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYzoxODI2OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYy0xODI3LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1Lmg9NjM3PWJvb2wgbXQ3OTE1X2RlYnVnZnNfcnhfbG9nKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oOjYzODojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUuaC02Mzktdm9pZCBtdDc5MTVfc3RhX2FkZF9kZWJ1Z2ZzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jPTk1OT1ib29sIG10Nzk5Nl9kZWJ1Z2ZzX3J4X2xvZyhzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvZGVidWdmcy5jLTk2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9kZWJ1Z2ZzLmM6OTcwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L2RlYnVnZnMuYy05NzEtLyoqIHBlci1zdGF0aW9uIGRlYnVnZnMgKiovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tYWluLmM9MjU0NT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5OTZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWFpbi5jLTI1OTMtXFx0LnR3dF90ZWFyZG93bl9yZXF1ZXN0ID0gbXQ3OTk2X3R3dF90ZWFyZG93bl9yZXF1ZXN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYzoyNTk0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21haW4uYy0yNTk1LVxcdC5zdGFfYWRkX2RlYnVnZnMgPSBtdDc5OTZfc3RhX2FkZF9kZWJ1Z2ZzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2Lmg9OTM0PWludCBtdDc5OTZfbWN1X3NldF9lbWxzcl9tb2RlKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaC05MzctXFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9lbWxfcGFyYW1zICplbWxfcGFyYW1zKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tdDc5OTYuaDo5Mzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbXQ3OTk2LmgtOTM5LXZvaWQgbXQ3OTk2X3N0YV9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZz0yNTE9Y29uZmlnIFJUMlgwMF9MSUJfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay9ydDJ4MDAvS2NvbmZpZy0yNTItXFx0Ym9vbCBcXFwiUmFsaW5rIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yYWxpbmsvcnQyeDAwL0tjb25maWc6MjUzOlxcdGRlcGVuZHMgb24gUlQyWDAwX0xJQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rL3J0MngwMC9LY29uZmlnLTI1NC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0yMzQyPXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTIzNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MjM2MjojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0yMzYzLXN0YXRpYyB2b2lkXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz00Mjc0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc2V0X3JhZGFyX2JhY2tncm91bmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjQyOTI6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDI5My0jZGVmaW5lIEhXU0lNX0RFQlVHRlNfT1BTXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yMjMzPXN0cnVjdCBpZWVlODAyMTFfdmlmIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMjI1My1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjIyNTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0yMjU1LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfZGlyO1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD00MDY4PXN0cnVjdCBpZWVlODAyMTFfcHJlcF90eF9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDI5Ny0gKlxcdGRpcmVjdG9yeSB3aXRoIGl0cyBmaWxlcy4gVGhpcyBjYWxsYmFjayBzaG91bGQgYmUgd2l0aGluIGFcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQyOTg6ICpcXHRDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00Mjk5LSAqXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDEtICpcXHR3aGVuIGEgbGluayBpcyBhZGRlZCB0byBhIG1hYzgwMjExIHZpZi4gVGhpcyBjYWxsYmFjayBzaG91bGQgYmUgd2l0aGluXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0MzAyOiAqXFx0YSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpcyBjYWxsYmFjayBjYW4gc2xlZXAuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00MzAzLSAqXFx0Rm9yIG5vbi1NTE8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9uY2UgZm9yIHRoZSBkZWZhdWx0IGJzc19jb25mXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQzMDctICpcXHR3aGVuIGEgc3RhdGlvbiBpcyBhZGRlZCB0byBtYWM4MDIxMSdzIHN0YXRpb24gbGlzdC4gVGhpcyBjYWxsYmFja1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMwODogKlxcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMwOS0gKlxcdGNhbGxiYWNrIGNhbiBzbGVlcC5cXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMxMi0gKlxcdHdoZW4gYSBsaW5rIGlzIGFkZGVkIHRvIGEgbWFjODAyMTEgc3RhdGlvbi4gVGhpcyBjYWxsYmFja1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDMxMzogKlxcdHNob3VsZCBiZSB3aXRoaW4gYSBDT05GSUdfTUFDODAyMTFfREVCVUdGUyBjb25kaXRpb25hbC4gVGhpc1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDMxNC0gKlxcdGNhbGxiYWNrIGNhbiBzbGVlcC5cXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9NDc0Mj1zdHJ1Y3QgaWVlZTgwMjExX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTQ4MzAtXFx0XFx0XFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjQ4MzE6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00ODMyLVxcdHZvaWQgKCp2aWZfYWRkX2RlYnVnZnMpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9Nzk9Y29uZmlnIE1BQzgwMjExX0xFRFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MjkzPWNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjk1LVxcdGRlcGVuZHMgb24gTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5NjpcXHRkZXBlbmRzIG9uIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTctXFx0aGVscFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlPTQwPW1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0xFRFMpICs9IGxlZC5vXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjQxOm1hYzgwMjExLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNDItXFx0ZGVidWdmcy5vIFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZT01OT1yYzgwMjExX21pbnN0cmVsLXkgOj0gXFxcXFxcbi0tXFxubmV0L21hYzgwMjExL01ha2VmaWxlLTYxLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTo2MjpyYzgwMjExX21pbnN0cmVsLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtNjMtXFx0cmM4MDIxMV9taW5zdHJlbF9odF9kZWJ1Z2ZzLm9cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg6MjojaWZuZGVmIF9fTUFDODAyMTFfREVCVUdGU19IXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTQtXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oLTYtXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaDo3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmgtOC12b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzLmg9MTI9c3RhdGljIGlubGluZSB2b2lkIGRlYnVnZnNfaHdfYWRkKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnMuaC0xNi1cXG5uZXQvbWFjODAyMTEvZGVidWdmcy5oOjE3OiNlbmRpZiAvKiBfX01BQzgwMjExX0RFQlVHRlNfSCAqL1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfS0VZX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtNC1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDo1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oLTYtdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfYWRkKHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXkpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MjQ9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfYmVhY29uX2RlZmF1bHQoXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0yOC1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaDoyOTojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX0tFWV9IICovXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xMi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaDoxMzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0xNC12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oOjI6I2lmbmRlZiBfX01BQzgwMjExX0RFQlVHRlNfU1RBX0hcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaDozOiNkZWZpbmUgX19NQUM4MDIxMV9ERUJVR0ZTX1NUQV9IXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmgtNC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX3N0YS5oLTYtXFxubmV0L21hYzgwMjExL2RlYnVnZnNfc3RhLmg6NzojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC04LXZvaWQgaWVlZTgwMjExX3N0YV9kZWJ1Z2ZzX2FkZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaD0yND1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX2xpbmtfc3RhX2RlYnVnZnNfZHJ2X3JlbW92ZShzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpIHt9XFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaC0yNi1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19zdGEuaDoyNzojZW5kaWYgLyogX19NQUM4MDIxMV9ERUJVR0ZTX1NUQV9IICovXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oPTQ3Nz1zdGF0aWMgaW5saW5lIHZvaWQgZHJ2X3N0YV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5NC1cXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oOjQ5NTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvZHJpdmVyLW9wcy5oLTQ5Ni1zdGF0aWMgaW5saW5lIHZvaWQgZHJ2X3ZpZl9hZGRfZGVidWdmcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTExMDg9c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTE2MC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMTYxOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTExNjItXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmc19kaXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xMTY2PXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEge1xcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTI1My1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxMjU0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTEyNTUtXFx0c3RydWN0IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE0NTc9c3RydWN0IGllZWU4MDIxMV9sb2NhbCB7XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzA2LVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3MDc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTcwOC1cXHRzdHJ1Y3QgbG9jYWxfZGVidWdmc2RlbnRyaWVzIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuaD01OT1zdHJ1Y3QgaWVlZTgwMjExX2tleSB7XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmgtMTIyLVxcbm5ldC9tYWM4MDIxMS9rZXkuaDoxMjM6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL2tleS5oLTEyNC1cXHRzdHJ1Y3Qge1xcbi0tXFxubmV0L21hYzgwMjExL3JhdGUuYz0yMTU9aWVlZTgwMjExX3JhdGVfY29udHJvbF9vcHNfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0MC1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjI0MTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTI0Mi1zdGF0aWMgc3NpemVfdCByY25hbWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJidWYsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTI4MD1zdGF0aWMgdm9pZCByYXRlX2NvbnRyb2xfZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg0LVxcbm5ldC9tYWM4MDIxMS9yYXRlLmM6Mjg1OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYXRlLmMtMjg2LVxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShsb2NhbC1cXHUwMDNlZGVidWdmcy5yY2Rpcik7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5oPTU1PXN0YXRpYyBpbmxpbmUgdm9pZCByYXRlX2NvbnRyb2xfYWRkX3N0YV9kZWJ1Z2ZzKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbm5ldC9tYWM4MDIxMS9yYXRlLmgtNTYte1xcbm5ldC9tYWM4MDIxMS9yYXRlLmg6NTc6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JhdGUuaC01OC1cXHRzdHJ1Y3QgcmF0ZV9jb250cm9sX3JlZiAqcmVmID0gc3RhLVxcdTAwM2VyYXRlX2N0cmw7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5oPTY3PXN0YXRpYyBpbmxpbmUgdm9pZCByYXRlX2NvbnRyb2xfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXFxubmV0L21hYzgwMjExL3JhdGUuaC02OC17XFxubmV0L21hYzgwMjExL3JhdGUuaDo2OTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmF0ZS5oLTcwLVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNkaXI7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTEwNTk9bWluc3RyZWxfaHRfdXBkYXRlX3N0YXRzKHN0cnVjdCBtaW5zdHJlbF9wcml2ICptcCwgc3RydWN0IG1pbnN0cmVsX2h0X3N0YSAqbWkpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTExODEtXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxMTgyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTE4My1cXHQvKiB1c2UgZml4ZWQgaW5kZXggaWYgc2V0ICovXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE1OTU9bWluc3RyZWxfaHRfZ2V0X3JhdGUodm9pZCAqcHJpdiwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgdm9pZCAqcHJpdl9zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE2MDYtXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYzoxNjA3OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMtMTYwOC1cXHRpZiAobXAtXFx1MDAzZWZpeGVkX3JhdGVfaWR4ICE9IC0xKVxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYz0xOTE1PW1pbnN0cmVsX2h0X2FsbG9jKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTQ4LVxcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmM6MTk0OTojaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jLTE5NTAtc3RhdGljIHZvaWQgbWluc3RyZWxfaHRfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHZvaWQgKnByaXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jPTE5ODM9c3RhdGljIGNvbnN0IHN0cnVjdCByYXRlX2NvbnRyb2xfb3BzIG1hYzgwMjExX21pbnN0cmVsX2h0ID0ge1xcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTkzLVxcdC5mcmVlID0gbWluc3RyZWxfaHRfZnJlZSxcXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jOjE5OTQ6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuYy0xOTk1LVxcdC5hZGRfZGVidWdmcyA9IG1pbnN0cmVsX2h0X2FkZF9kZWJ1Z2ZzLFxcbi0tXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaD03NT1zdHJ1Y3QgbWluc3RyZWxfcHJpdiB7XFxuLS1cXG5uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5oLTg1LVxcbm5ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0Lmg6ODY6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3JjODAyMTFfbWluc3RyZWxfaHQuaC04Ny1cXHQvKlxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NTI2PXN0cnVjdCBsaW5rX3N0YV9pbmZvIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTU3Ny1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo1Nzg6I2lmZGVmIENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtNTc5LVxcdHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfZGlyO1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9NzE1PXN0cnVjdCBzdGFfaW5mbyB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC03NzMtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6Nzc0OiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTc3NS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2RpcjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2NzY9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjcwMS1cXG5uZXQvbWFjODAyMTEvdHguYzoyNzAyOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDMtXFx0aWYgKGxvY2FsLVxcdTAwM2Vmb3JjZV90eF9zdGF0dXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zNzEzPXZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzc1OS1cXG5uZXQvbWFjODAyMTEvdHguYzozNzYwOiNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS90eC5jLTM3NjEtXFx0aWYgKGxvY2FsLVxcdTAwM2Vmb3JjZV90eF9zdGF0dXMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjQ0LjQ2NzE3MDkzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTQzOTgwOTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgbWFjODAyMTEgRGVidWcgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jYCByaWdodCBub3cuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoZW4gdGhpcyBmaWxlIGlzIGV2ZW4gY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGF0IHRvIGhhcHBlbi4gT2YgY291cnNlLCB0aGF0IHNldHRpbmcgaXMgZ29pbmcgdG8gYmUgY29uZGl0aW9uYWwsIHRvby4gSSdtIHByZXR0eSBzdXJlIGBNQUM4MDIxMWAgaXRzZWxmIGlzIGEgcHJlcmVxdWlzaXRlLCBhbmQgSSdkIGJldCBgREVCVUdfRlNgIGlzIGludm9sdmVkIGFzIHdlbGwuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgZmlsZS4gSSdsbCB0YWtlIGEgbG9vayBhcm91bmQgbGluZSA4OCBhbmQgc2VlIHdoYXQgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyBhcmUgdG8gYmUgc3VyZS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGUgZGVidWcgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIGludGVncmF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NDYuNjExMTU1MDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDgwOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuICA4MTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA4MzpcXHRcXHRzZWxlY3QgTEVEU19UUklHR0VSU1xcbiAgODQ6XFx0XFx0aGVscFxcbiAgODU6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIGEgZmV3IExFRCB0cmlnZ2VycyBmb3IgZGlmZmVyZW50XFxuICA4NjpcXHRcXHQgIHBhY2tldCByZWNlaXZlL3RyYW5zbWl0IGV2ZW50cy5cXG4gIDg3OlxcdFxcbiAgODg6XFx0Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG4gIDg5OlxcdFxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4gIDkwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfREVCVUdGU1xcbiAgOTE6XFx0XFx0aGVscFxcbiAgOTI6XFx0XFx0ICBTZWxlY3QgdGhpcyB0byBzZWUgZXh0ZW5zaXZlIGluZm9ybWF0aW9uIGFib3V0XFxuICA5MzpcXHRcXHQgIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBtYWM4MDIxMSBpbiBkZWJ1Z2ZzLlxcbiAgOTQ6XFx0XFxuICA5NTpcXHRcXHQgIFNheSBOIHVubGVzcyB5b3Uga25vdyB5b3UgbmVlZCB0aGlzLlxcbiAgOTY6XFx0XFxuICA5NzpcXHRjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxuICA5ODpcXHRcXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuICA5OTpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IFRSQUNJTkdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NDYuNjExMjMwNTA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3MzQ5NzA2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBDRkc4MDIxMV9ERUJVR0ZTKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgc2VlIGlmIGBDRkc4MDIxMV9ERUJVR0ZTYCBpcyBlbmFibGVkLCBvciBhdCBsZWFzdCBhdmFpbGFibGUsIHdpdGhpbiB0aGUga2VybmVsJ3Mgd2lyZWxlc3MgY29uZmlndXJhdGlvbi4gVGhlIGJlc3QgcGxhY2UgdG8gZmluZCB0aGF0IGlzLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIEknbSB0aGlua2luZywgdGhpcyBkZWJ1ZyBmZWF0dXJlIGlzIGEgY3JpdGljYWwgdG9vbCwgc28gSSB3YW50IHRvIGJlIGNlcnRhaW4gYWJvdXQgaXRzIGN1cnJlbnQgc3RhdHVzLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBhIHNwZWNpZmljIGlzc3VlIG9yIGEgbmV3IGZlYXR1cmUgaW1wbGVtZW50YXRpb24sIGFuZCBrbm93aW5nIGlmIHRoaXMgZGVidWdnaW5nIG9wdGlvbiBpcyBlbmFibGVkIHdpbGwgYWZmZWN0IG15IG5leHQgc3RlcHMuIE5lZWQgdG8gbWFrZSBzdXJlIGl0J3Mgc2V0IHVwIGNvcnJlY3RseS4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NjEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjUxLjM0NjIwMzI1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg5NjIwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE1OT1jb25maWcgQ0ZHODAyMTFfREVGQVVMVF9QU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjUzLjMzNTgyOTMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTMwODc4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gYmV0dGVyLiBSaWdodCBub3csIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvd2lyZWxlc3MvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMTY5LiBUaGF0IGFyZWEgaXMgdXN1YWxseSB3aGVyZSB0aGV5IGRlZmluZSB0aGUgY29yZSBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHdpcmVsZXNzIHN1YnN5c3RlbS4gSG9wZWZ1bGx5LCBJJ2xsIGZpbmQgdGhlIGJhc2ljIGtub2JzIGFuZCBsZXZlcnMgaW4gdGhlcmUuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBmb3VuZGF0aW9uYWwgZmVhdHVyZXMgYXJlIGNvbnRyb2xsZWQsIGFuZCBwb3RlbnRpYWxseSB3aGVyZSBJIGNhbiBzdGFydCB0cmFjaW5nIGRlcGVuZGVuY2llcyBpZiBzb21ldGhpbmcgaXNuJ3Qgd29ya2luZyBhcyBJIGV4cGVjdC4gR3JhYmJpbmcgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gZ28gb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODY2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTUuMTQ4OTIwNDI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFx0ICBJZiB0aGlzIGNhdXNlcyB5b3VyIGFwcGxpY2F0aW9ucyB0byBtaXNiZWhhdmUgeW91IHNob3VsZCBmaXggeW91clxcbiAxNjY6XFx0XFx0ICBhcHBsaWNhdGlvbnMgaW5zdGVhZCAtLSB0aGV5IG5lZWQgdG8gcmVnaXN0ZXIgdGhlaXIgbmV0d29ya1xcbiAxNjc6XFx0XFx0ICBsYXRlbmN5IHJlcXVpcmVtZW50LCBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnJzdC5cXG4gMTY4OlxcdFxcbiAxNjk6XFx0Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG4gMTcwOlxcdFxcdGJvb2wgXFxcImNmZzgwMjExIERlYnVnRlMgZW50cmllc1xcXCJcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gMTcyOlxcdFxcdGhlbHBcXG4gMTczOlxcdFxcdCAgWW91IGNhbiBlbmFibGUgdGhpcyBpZiB5b3Ugd2FudCBkZWJ1Z2ZzIGVudHJpZXMgZm9yIGNmZzgwMjExLlxcbiAxNzQ6XFx0XFxuIDE3NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE3NjpcXHRcXG4gMTc3OlxcdGNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG4gMTc4OlxcdFxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuIDE3OTpcXHRcXHRkZWZhdWx0IHlcXG4gMTgwOlxcdFxcdGhlbHBcXG4gMTgxOlxcdFxcdCAgWW91IHNob3VsZCBlbmFibGUgdGhpcyBvcHRpb24gdW5sZXNzIHlvdSBrbm93IGZvciBzdXJlIHlvdSBoYXZlIG5vXFxuIDE4MjpcXHRcXHQgIG5lZWQgZm9yIGl0LCBmb3IgZXhhbXBsZSB3aGVuIHVzaW5nIHRoZSByZWd1bGF0b3J5IGRhdGFiYXNlIGxvYWRlZCBhc1xcbiAxODM6XFx0XFx0ICBhIGZpcm13YXJlIGZpbGUuXFxuIDE4NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTUuMTQ5MDI2NDE5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Njk1OTg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGZvciBtYWM4MDIxMSBEZWJ1Z2dpbmcgYW5kIEZ1enppbmcqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nIGFuZCBmdXp6aW5nIHRoZSBgbWFjODAyMTFgIHN1YnN5c3RlbS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIGBDT05GSUdfTUFDODAyMTFfREVCVUdGU2AuIE9idmlvdXNseSwgdGhhdCdzIHJlbGlhbnQgb24gYE1BQzgwMjExYCDigJMgbWFrZXMgc2Vuc2UuIEFuZCB0aGVuLCBgQ0ZHODAyMTFfREVCVUdGU2AsIHdoaWNoIHRoYXQgYENPTkZJR19NQUM4MDIxMV9ERUJVR0ZTYCBkZXBlbmRzIG9uLCBpdHNlbGYgZGVwZW5kcyBvbiBgREVCVUdfRlNgLiBHb3QgaXQuIFRoYXQgZXN0YWJsaXNoZXMgdGhlIGRlYnVnZ2luZyBzaWRlLlxuXG5Ob3csIGZvciBmdXp6aW5nLCBJJ3ZlIGdvdCBhIGNvdXBsZSBvZiBvcHRpb25zOiBgTUFDODAyMTFfSFdTSU1gIG9yIGBOTDgwMjExYC4gSSdsbCBwcm9iYWJseSB3YW50IHRvIGludmVzdGlnYXRlIHRob3NlIGZ1cnRoZXIuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1BQzgwMjExX0hXU0lNYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHRha2UgaW50byBjb25zaWRlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTU6NTcuNjE4NjI3NDUzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM0OTQ3NDczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE1OjU5LjE1MzU3OTU5NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzAyMDgzNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgVmlydHVhbCBXaXJlbGVzcyBLY29uZmlnKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSB2aXJ0dWFsIHdpcmVsZXNzIHNldHVwIGluIHRoaXMga2VybmVsLiBUaGUgYmVzdCBwbGFjZSB0byBzdGFydCwgYXMgYWx3YXlzLCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBMZXQncyBzZWUuLi4gdGhlIHRleHQgbWVudGlvbnMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFJpZ2h0LCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHN1YnN5c3RlbS4gSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IGBLY29uZmlnYCBub3cgdG8gc2VlIHdoYXQncyBkZWZpbmVkLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGlzIGFsbCBwaWVjZXMgdG9nZXRoZXIuIFRoYXQnbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUuIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3ODMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjowMC44NTU2NjU1OTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuICAgMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNDpcXHRcXHRoZWxwXFxuICAgNTpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3RcXG4gICA2OlxcdFxcdCAgSUVFRSA4MDIuMTEgbmV0d29ya2luZyBzdGFjayAobWFjODAyMTEpIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgbm90XFxuICAgNzpcXHRcXHQgIG5lZWRlZCBmb3Igbm9ybWFsIHdpcmVsZXNzIExBTiB1c2FnZSBhbmQgaXMgb25seSBmb3IgdGVzdGluZy4gU2VlXFxuICAgODpcXHRcXHQgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3dcXG4gICA5OlxcdFxcdCAgdG8gdXNlIHRoaXMgdG9vbC5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gIDEyOlxcdFxcdCAgY2FsbGVkIG1hYzgwMjExX2h3c2ltLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZJUlRfV0lGSVxcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIldpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gQ0ZHODAyMTFcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBldGhlcm5ldCBjb25uZWN0aW9ucyB0byBhcHBlYXIgYXMgaWYgdGhleVxcbiAgMTk6XFx0XFx0ICBhcmUgd2lmaSBjb25uZWN0aW9ucyB0aHJvdWdoIGEgc3BlY2lhbCBydG5ldGxpbmsgZGV2aWNlLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjAwLjg1NTcyNTg1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjQ2NjM1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEZWJ1Z2ZzIGFuZCBtYWM4MDIxMSBJbnRlcmFjdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgc28gSSdtIHN0YXJ0aW5nIHdpdGggdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19NQUM4MDIxMWAsIGBDT05GSUdfQ0ZHODAyMTFgLCBgQ09ORklHX01BQzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0NGRzgwMjExX0RFQlVHRlNgLCBgQ09ORklHX0RFQlVHX0ZTYCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gLiBUaGVzZSBwb2ludCBkaXJlY3RseSB0byB0aGUgbWFjODAyMTEgc3Vic3lzdGVtIGFuZCBpdHMgZGVidWcgaW50ZXJmYWNlLCB3aGljaCBtZWFucyBJJ20gcHJvYmFibHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nIHRoZSB3aXJlbGVzcyBuZXR3b3JrIGludGVyZmFjZS5cblxuTm93LCBsZXQncyBkaWcgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IGBuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY2AgaGFzIGJlZW4gdG91Y2hlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb25zIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCBhbmQgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC5cblxuTG9va2luZyBhdCB0aGUgY2FsbCBncmFwaCwgSSBzZWUgdGhhdCBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaXMgY2FsbGVkIGluIGBkcnZfcmVtb3ZlX2ludGVyZmFjZWAsIGBpZWVlODAyMTFfZGVsX3ZpcnR1YWxfbW9uaXRvcmAsIGBpZWVlODAyMTFfdGVhcmRvd25fc2RhdGFgLCBhbmQgZXZlbiBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpdHNlbGYsIHN1Z2dlc3RpbmcgYSBjbGVhbnVwIG9yIHJlbW92YWwgcHJvY2Vzcy4gTWVhbndoaWxlLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBnZXRzIGNhbGxlZCBieSBgZHJ2X3JlbW92ZV9pbnRlcmZhY2VgLCBgaWVlZTgwMjExX3NldHVwX3NkYXRhYCwgYW5kIGBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rc2AuIFNvLCB0aGVzZSBmdW5jdGlvbnMgbGlrZWx5IGRlYWwgd2l0aCByZW1vdmluZyBhbmQgcmVjcmVhdGluZyB0aGUgZGVidWdmcyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlLiBJIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IGBkcnZfcmVtb3ZlX2ludGVyZmFjZWAsIGBpZWVlODAyMTFfZGVsX3ZpcnR1YWxfbW9uaXRvcmAsIGBpZWVlODAyMTFfdGVhcmRvd25fc2RhdGFgLCBgaWVlZTgwMjExX3NldHVwX3NkYXRhYCwgYW5kIGBpZWVlODAyMTFfdmlmX3VwZGF0ZV9saW5rc2AgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGVzZSBkZWJ1Z2ZzIGludGVyYWN0aW9ucyBhcmUgdHJpZ2dlcmVkLiBJIGFtIGFsc28gYXdhcmUgdGhhdCB0aGUgYGRlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZhbWlseSBvZiBmdW5jdGlvbnMgdGhhdCBjYWxsIHRoZSBgZGVidWdmc19yZW1vdmVfbmV0ZGV2YC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2FsbHMgYW5kIHRoZSBwcmVzZW5jZSBvZiBgcmVtb3ZlYCBhbmQgYHJlY3JlYXRlYCBpbiB0aGUgZnVuY3Rpb24gbmFtZXMsIEkgdGhpbmsgdGhpcyBjb3VsZCBiZSByZWxhdGVkIHRvOlxuKiAgIEludGVyZmFjZSByZW1vdmFsIGFuZCBjcmVhdGlvblxuKiAgIFZpcnR1YWwgaW50ZXJmYWNlIG1hbmFnZW1lbnRcbiogICBTdGF0aW9uIGRhdGEgdGVhcmRvd24gYW5kIHNldHVwXG5cblNpbmNlIEkgbmVlZCBhIGJyb2FkZXIgdmlldywgSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGNvZGViYXNlIGZvciBhbGwgY2FsbHMgdG8gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLiBJIHdhbnQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcml0aWNhbCBsb2NhdGlvbi4gSSB3YW50IHRvIGJlIGNvbXByZWhlbnNpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzE1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MDUuMTAyMzY0NjMyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgxMDU1NzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9OTk5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2FkZF9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYy0xMDE1LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMTY6dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMTcte1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmM9MTAzMz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jLTEwMzUte1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jOjEwMzY6XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTEzLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjE0OnZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmgtMTUtdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW5hbWVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oPTIzPXZvaWQgaWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfcmVtb3ZlKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuaC0yNC0jZWxzZVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oOjI1OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KFxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5oLTI2LVxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9OTAwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV90ZWFyZG93bl9zZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTkwNy1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5MDg6XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTA5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjowNi41ODM0MjQ2ODNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzUzMDg0ODU1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBBbmFseXNpczogbWFjODAyMTEgRGVidWdmcyBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCwgYW5kIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLCBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nLiBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgaGFuZGxlcyByZW1vdmFsIG9mIGRlYnVnZnMgZW50cmllcyB3aGVuIHRoZSBzZGF0YSBpcyBkZXN0cm95ZWQgb3IgdXBkYXRlZCwgb3IgdGhlIGRlYnVnZnMgaXMgcmVjcmVhdGVkLiBDb252ZXJzZWx5LCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBpcyBjYWxsZWQgb24gc2RhdGEgc2V0dXAsIGludGVyZmFjZSByZW1vdmFsLCBvciBsaW5rIHVwZGF0ZXMuIEknbSBub3RpbmcgdGhhdCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCBpcyBkaXJlY3RseSBjYWxsZWQgd2l0aGluIHRoZSByZWNyZWF0ZSBmdW5jdGlvbi5cblxuVGhlIGtleSBxdWVzdGlvbiBpcyByZWFjaGFiaWxpdHksIGFuZCBoZXJlLCB0aGluZ3MgbG9vayBwcm9taXNpbmcuIFRoaXMgaXMgd2l0aGluIGBtYWM4MDIxMWAsIHdoaWNoIGlzIGNvcmUsIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggc3RhbmRhcmQgYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMuIFRoaXMgbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQgZm9yIFN5emthbGxlciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBtYWM4MDIxMV9od3NpbWAgb2ZmZXJzIGEgdmlydHVhbCBkZXZpY2UgdG8gbWltaWMgcmVhbCBoYXJkd2FyZSBmdXJ0aGVyIHN0cmVuZ3RoZW5zIHRoaXMgYXJndW1lbnQuIFRoaXMgaXNuJ3QgdGllZCB0byBhbnkgc3BlY2lmaWMgdmVuZG9yJ3MgaGFyZHdhcmUgYW5kIGlzbid0IGp1c3QgYWJvdXQgdW5wbHVnZ2FibGUgaGFyZHdhcmUgdGVhcmRvd24sIGJ1dCBzdGFuZGFyZCBydW50aW1lIG9wZXJhdGlvbnMgb24gdGhlIGludGVyZmFjZSBsZXZlbC4gV29ydGhGdXp6aW5nIGlzIGEgZGVmaW5pdGUgeWVzLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGUgZm9jdXMgc3ltYm9scyBhcmU6XG4qICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgXG4qICAgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmBcbiogICBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YFxuXG5BbmQgaXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgIGFuZCBJIGtub3cgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdGAgaXMgY2FsbGVkIGluc2lkZSBpdC5cblxuRm9yIGNvbmZpZ3VyYXRpb25zLCB0aGlzIG5lZWRzIGBNQUM4MDIxMWAsIGBNQUM4MDIxMV9ERUJVR0ZTYCwgYENGRzgwMjExX0RFQlVHRlNgLCBhbmQgYERFQlVHX0ZTYC4gTGV0IG1lIHZlcmlmeSB0aGUgZGVwZW5kZW5jaWVzOiBgTUFDODAyMTFfREVCVUdGU2AgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgQ0ZHODAyMTFfREVCVUdGU2AgYW5kIGBDRkc4MDIxMV9ERUJVR0ZTYCBkZXBlbmRzIG9uIGBERUJVR19GU2AuXG5cblNvLCB0byBzdW1tYXJpemUgc3VjY2luY3RseTpcblxuMS4gIFRoaXMgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBlbnRyeSBoYW5kbGluZywgcmVzZXR0aW5nIGBkZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYGRlZmF1bHRfbXVsdGljYXN0X2tleWAgdG8gTlVMTCBkdXJpbmcgbmV0ZGV2IGRlYnVnZnMgcmVtb3ZhbCBhbmQgdXBkYXRpbmcga2V5IHN5bWxpbmtzIGR1cmluZyBuZXRkZXYgZGVidWdmcyByZWNyZWF0aW9uLlxuMi4gIEl0J3MgcmVhY2hhYmxlIHRocm91Z2ggYG5sODAyMTFgIG5ldGxpbmsgY29tbWFuZHMgKGludGVyZmFjZSBjcmVhdGlvbiwgbW9kaWZpY2F0aW9uLCBkZWxldGlvbikgYW5kIHNpbXVsYXRhYmxlIHZpYSBgbWFjODAyMTFfaHdzaW1gLlxuMy4gIEZ1enppbmcgcHJldmVudHMgYW5kIHRlc3RzIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHJlZmVyZW5jZXMgYW5kIHN0YXRlIGlzc3VlcyB3aXRoIGludGVyZmFjZS9saW5rIHJlY3JlYXRpb24gYW5kIGtleSBjb25maWd1cmF0aW9uLlxuNC4gIEZvY3VzIHN5bWJvbHMgYXJlIGBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2YCwgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldmAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YC5cbjUuICBSZXF1aXJlZCBjb25maWdzIGFyZSBgTUFDODAyMTFgLCBgTUFDODAyMTFfREVCVUdGU2AsIGBDRkc4MDIxMV9ERUJVR0ZTYCwgYW5kIGBERUJVR19GU2AuXG5cbk5vdywgSSdtIHJlYWR5IHRvIHByb2NlZWQgd2l0aCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTQzLCJPdXRwdXRUb2tlbnMiOjI1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjoxNC4xMTQyNzU3NTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODAwMzQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkNGRzgwMjExX0RFQlVHRlNcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldlwiLFxuICAgIFwiaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2XCIsXG4gICAgXCJpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtYWM4MDIxMSdzIGRlYnVnZnMgbmV0ZGV2IGhhbmRsaW5nIGJ5IHByb3Blcmx5IGNsZWFyaW5nIGRlZmF1bHQga2V5IGRlYnVnZnMgcG9pbnRlcnMgdXBvbiByZW1vdmFsIChpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KSBhbmQgcmVidWlsZGluZyBkZWZhdWx0IGtleSBkZWJ1Z2ZzIGxpbmtzIHVwb24gaW50ZXJmYWNlIHJlY3JlYXRpb24gKGllZWU4MDIxMV9kZWJ1Z2ZzX3JlY3JlYXRlX25ldGRldikuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIHVzaW5nIG1hYzgwMjExX2h3c2ltIGFuZCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMuIEZ1enppbmcgaGVscHMgZW5zdXJlIHRoYXQgaW50ZXJmYWNlIHNldHVwLCBsaW5rIHVwZGF0ZXMsIGFuZCBrZXkgdXBkYXRlcyBkbyBub3QgcHJvZHVjZSBzdGFsZSBvciBkYW5nbGluZyBkZW50cnkgcmVmZXJlbmNlcyBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjE0LjE5MjI4NjkxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyOTAxMjU0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QxNzoxNjoxNC4xOTI4NTY2NTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxODI4OTU1MjQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlNDhhYzg5MGRiMDU1OGMxMTRhNWQ2ZTJlNDhlM2Q1ZTNjZGRlNjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIFNlcCA3IDE3OjE1OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMgYi9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuaW5kZXggZjNjNmE0MWU0OTExOS4uYTAwYjA3NzZmZGIxZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9kZWJ1Z2ZzX25ldGRldi5jXG4rKysgYi9uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1xuQEAgLTIwLDYgKzIwLDcgQEBcbiAjaW5jbHVkZSBcImllZWU4MDIxMV9pLmhcIlxuICNpbmNsdWRlIFwicmF0ZS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnZnMuaFwiXG4rI2luY2x1ZGUgXCJkZWJ1Z2ZzX2tleS5oXCJcbiAjaW5jbHVkZSBcImRlYnVnZnNfbmV0ZGV2LmhcIlxuICNpbmNsdWRlIFwiZHJpdmVyLW9wcy5oXCJcbiBcbkBAIC0xMDIwLDYgKzEwMjEsOCBAQCB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4gXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtXHUwMDNldmlmLmRlYnVnZnNfZGlyKTtcbiBcdHNkYXRhLVx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciA9IE5VTEw7XG4gXHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLnN1YmRpcl9zdGF0aW9ucyA9IE5VTEw7XG4rXHRzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkgPSBOVUxMO1xuK1x0c2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkgPSBOVUxMO1xuIH1cbiBcbiB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbmFtZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG5AQCAtMTAzMiw2ICsxMDM1LDcgQEAgdm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4ge1xuIFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XG4gXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcbitcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XG4gXG4gXHRpZiAoc2RhdGEtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9TREFUQV9JTl9EUklWRVIpIHtcbiBcdFx0ZHJ2X3ZpZl9hZGRfZGVidWdmcyhzZGF0YS1cdTAwM2Vsb2NhbCwgc2RhdGEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MTQuMTkyODU5Njg0WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgzOTA3MjI0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2ggZm9yIE1lbW9yeSBTYWZldHkgQ29uY2VybnMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZsYWcgaXQgZm9yIEtNU0FOIG9yIEtBU0FOIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZmlsZSBjaGFuZ2VzIGFuZCBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSB2dWxuZXJhYmlsaXRpZXMuXG5cblNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyBpbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBUaGUgZGlmZiBpbnRyb2R1Y2VzIGFuIGluY2x1ZGUgZm9yIGBkZWJ1Z2ZzX2tleS5oYCBhbmQgdXBkYXRlcyB0aGUgYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBmdW5jdGlvbnMuIFRoZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldmAgZnVuY3Rpb24gbm93IGNsZWFycyB0aGUgcG9pbnRlcnMgdG8gYGRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCBgZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCwgYW5kIHRoZSBgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2YCBmdW5jdGlvbiBoYXMgYSBjYWxsIHRvIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgLlxuXG5NeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtYW5hZ2luZyB0aGVzZSBrZXkgcG9pbnRlcnMgYW5kIGFueSBhc3NvY2lhdGVkIGtleSBkYXRhIG1heSBiZSB0aGUgYXJlYSBvZiBmb2N1cywgYW5kIGlzIHdvcnRoIGFkZGl0aW9uYWwgaW52ZXN0aWdhdGlvbi4gVGltZSB0byBlbXBsb3kgc29tZSBncmVwcGluZyBhbmQgZmlsZSByZWFkaW5nIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgYWRkZWQgZmVhdHVyZXMuIEZyb20gaGVyZSwgSSB3aWxsIGFzc2VzcyB3aGV0aGVyIHRoZSBuZXcgb3IgbW9kaWZpZWQgY29kZSBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3Igb3RoZXIgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIHdpdGhpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI1LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjIuNTgzNTg1NDQ5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUzNzQ1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmM9MzYxPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmMtMzY5LVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jOjM3MDp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuYy0zNzEte1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9Nz12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg6ODp2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtOS12b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmVfbWdtdF9kZWZhdWx0KFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5Lmg9MTY9c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9rZXkgKmtleSlcXG5uZXQvbWFjODAyMTEvZGVidWdmc19rZXkuaC0xNy17fVxcbm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoXFxubmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmgtMTktXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYz0xMDMzPXZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVjcmVhdGVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzNy1cXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG5uZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuYzoxMDM4OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmMtMTAzOS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0zNTA9c3RhdGljIHZvaWQgX19pZWVlODAyMTFfc2V0X2RlZmF1bHRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTM3NS1cXG5uZXQvbWFjODAyMTEva2V5LmM6Mzc2OlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTM3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9Mzg4PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X21nbXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLCBpbnQgaWR4KVxcbi0tXFxubmV0L21hYzgwMjExL2tleS5jLTQwMS1cXG5uZXQvbWFjODAyMTEva2V5LmM6NDAyOlxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxubmV0L21hYzgwMjExL2tleS5jLTQwMy19XFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmM9NDE0PV9faWVlZTgwMjExX3NldF9kZWZhdWx0X2JlYWNvbl9rZXkoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssIGludCBpZHgpXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtNDI4LVxcbm5ldC9tYWM4MDIxMS9rZXkuYzo0Mjk6XFx0aWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0KHNkYXRhKTtcXG5uZXQvbWFjODAyMTEva2V5LmMtNDMwLX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9rZXkuYz0xMDg3PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9mcmVlX2tleXNfaWZhY2Uoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEva2V5LmMtMTEwNS1cXG5uZXQvbWFjODAyMTEva2V5LmM6MTEwNjpcXHRpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHQoc2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9rZXkuYy0xMTA3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjMuMTQ4OTY1MDQ3WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MDU2NzU2MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGRlYnVnZnNfa2V5LmNgKipcblxuT2theSwgbGV0J3MgemVybyBpbiBvbiBgbmV0L21hYzgwMjExL2RlYnVnZnNfa2V5LmNgLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSAzNzAsIGdpdmUgb3IgdGFrZSBhIGZldyBhcm91bmQgaXQuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCdzIGhhcHBlbmluZyBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIGRyaXZlci4gSSBleHBlY3QgdGhhdCBhcmVhIHRvIGJlIHJlbGF0ZWQgdG8uLi4gd2VsbCwgZ2l2ZW4gdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGNvbnRleHQgb2YgbWFjODAyMTEsIHByb2JhYmx5IHNvbWV0aGluZyB0byBkbyB3aXRoIGtleSBoYW5kbGluZyBvciBkZWJ1ZyBvdXRwdXQgcmVsYXRpbmcgdG8ga2V5cywgcG90ZW50aWFsbHkga2V5IG1hbmFnZW1lbnQgb3IgaW5qZWN0aW9uIG9mIGtleSBtYXRlcmlhbCB0aHJvdWdoIGRlYnVnZnMuIEkgYmV0IEknbGwgZmluZCBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiB0byB3b3JrIGZyb20uIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDUwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjQuOTU0NjQ0MDU4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9tYWM4MDIxMS9kZWJ1Z2ZzX2tleS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MDpcXHRcXG4gMzYxOlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZShzdHJ1Y3QgaWVlZTgwMjExX2tleSAqa2V5KVxcbiAzNjI6XFx0e1xcbiAzNjM6XFx0XFx0aWYgKCFrZXkpXFxuIDM2NDpcXHRcXHRcXHRyZXR1cm47XFxuIDM2NTpcXHRcXG4gMzY2OlxcdFxcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShrZXktXFx1MDAzZWRlYnVnZnMuZGlyKTtcXG4gMzY3OlxcdFxcdGtleS1cXHUwMDNlZGVidWdmcy5kaXIgPSBOVUxMO1xcbiAzNjg6XFx0fVxcbiAzNjk6XFx0XFxuIDM3MDpcXHR2b2lkIGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4gMzcxOlxcdHtcXG4gMzcyOlxcdFxcdGNoYXIgYnVmWzUwXTtcXG4gMzczOlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfa2V5ICprZXk7XFxuIDM3NDpcXHRcXG4gMzc1OlxcdFxcdGlmICghc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpcilcXG4gMzc2OlxcdFxcdFxcdHJldHVybjtcXG4gMzc3OlxcdFxcbiAzNzg6XFx0XFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSk7XFxuIDM3OTpcXHRcXG4gMzgwOlxcdFxcdGRlYnVnZnNfcmVtb3ZlKHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXkpO1xcbiAzODE6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9IE5VTEw7XFxuIDM4MjpcXHRcXG4gMzgzOlxcdFxcdGlmIChzZGF0YS1cXHUwMDNlZGVmYXVsdF91bmljYXN0X2tleSkge1xcbiAzODQ6XFx0XFx0XFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4gMzg1OlxcdFxcdFxcdFxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWZhdWx0X3VuaWNhc3Rfa2V5KTtcXG4gMzg2OlxcdFxcdFxcdHNwcmludGYoYnVmLCBcXFwiLi4va2V5cy8lZFxcXCIsIGtleS1cXHUwMDNlZGVidWdmcy5jbnQpO1xcbiAzODc6XFx0XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF91bmljYXN0X2tleSA9XFxuIDM4ODpcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFxcXCJkZWZhdWx0X3VuaWNhc3Rfa2V5XFxcIixcXG4gMzg5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyLCBidWYpO1xcbiAzOTA6XFx0XFx0fVxcbiAzOTE6XFx0XFxuIDM5MjpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZShzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXkpO1xcbiAzOTM6XFx0XFx0c2RhdGEtXFx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5ID0gTlVMTDtcXG4gMzk0OlxcdFxcbiAzOTU6XFx0XFx0aWYgKHNkYXRhLVxcdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSkge1xcbiAzOTY6XFx0XFx0XFx0a2V5ID0gd2lwaHlfZGVyZWZlcmVuY2Uoc2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4gMzk3OlxcdFxcdFxcdFxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWZsaW5rLmRlZmF1bHRfbXVsdGljYXN0X2tleSk7XFxuIDM5ODpcXHRcXHRcXHRzcHJpbnRmKGJ1ZiwgXFxcIi4uL2tleXMvJWRcXFwiLCBrZXktXFx1MDAzZWRlYnVnZnMuY250KTtcXG4gMzk5OlxcdFxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9XFxuIDQwMDpcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9zeW1saW5rKFxcXCJkZWZhdWx0X211bHRpY2FzdF9rZXlcXFwiLFxcbiA0MDE6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHNkYXRhLVxcdTAwM2V2aWYuZGVidWdmc19kaXIsIGJ1Zik7XFxuIDQwMjpcXHRcXHR9XFxuIDQwMzpcXHR9XFxuIDQwNDpcXHRcXG4gNDA1OlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3JlbW92ZV9tZ210X2RlZmF1bHQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIDQwNjpcXHR7XFxuIDQwNzpcXHRcXHRpZiAoIXNkYXRhKVxcbiA0MDg6XFx0XFx0XFx0cmV0dXJuO1xcbiA0MDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjI0Ljk1NDcxMDE5OFoiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODQwNDU0MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyB0aGUgbWFjODAyMTEgTmV0d29yayBEZXZpY2UgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgaXNzdWUsIGFuZCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoZXJlIG1pZ2h0IGJlIHNvbWV0aGluZyBzcGVjaWZpYyBoYXBwZW5pbmcgcmVsYXRlZCB0byBob3cgdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGhhbmRsZWQgYXQgYSBsb3dlciBsZXZlbC4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgbmV0L21hYzgwMjExL2RlYnVnZnNfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIGxpbmVzIDEwMTAgdG8gMTA1MCwgYXMgdGhhdCBhcmVhIG9mdGVuIGhhbmRsZXMgaW1wb3J0YW50IG5ldHdvcmsgZGV2aWNlIG1hbmFnZW1lbnQsIG1heWJlIHRoZXJlIGlzIHNvbWV0aGluZyBvZmYgYWJvdXQgdGhlIGRlYnVnZ2luZyBvcHRpb25zIGluIHJlbGF0aW9uIHRvIHRoZSBuZXR3b3JrIGRldmljZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhhdCBzZWN0aW9uIGFuZCBzZWUgd2hhdCBpdCByZXZlYWxzLiBIb3BlZnVsbHksIHRoaXMgZGV0YWlsZWQgbG9vayBzaGVkcyBzb21lIGxpZ2h0IG9uIHRoZSBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTUxMywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MjYuNzk1MTY2OTg0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbWFjODAyMTEvZGVidWdmc19uZXRkZXYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDE1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDE1OlxcdFxcbjEwMTY6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZW1vdmVfbmV0ZGV2KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbjEwMTc6XFx0e1xcbjEwMTg6XFx0XFx0aWYgKCFzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyKVxcbjEwMTk6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjA6XFx0XFxuMTAyMTpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2Rpcik7XFxuMTAyMjpcXHRcXHRzZGF0YS1cXHUwMDNldmlmLmRlYnVnZnNfZGlyID0gTlVMTDtcXG4xMDIzOlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLnN1YmRpcl9zdGF0aW9ucyA9IE5VTEw7XFxuMTAyNDpcXHRcXHRzZGF0YS1cXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5ID0gTlVMTDtcXG4xMDI1OlxcdFxcdHNkYXRhLVxcdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfbXVsdGljYXN0X2tleSA9IE5VTEw7XFxuMTAyNjpcXHR9XFxuMTAyNzpcXHRcXG4xMDI4OlxcdHZvaWQgaWVlZTgwMjExX2RlYnVnZnNfcmVuYW1lX25ldGRldihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4xMDI5OlxcdHtcXG4xMDMwOlxcdFxcdGRlYnVnZnNfY2hhbmdlX25hbWUoc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciwgXFxcIm5ldGRldjolc1xcXCIsIHNkYXRhLVxcdTAwM2VuYW1lKTtcXG4xMDMxOlxcdH1cXG4xMDMyOlxcdFxcbjEwMzM6XFx0dm9pZCBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuMTAzNDpcXHRcXHRcXHRcXHRcXHQgICAgICAgYm9vbCBtbGRfdmlmKVxcbjEwMzU6XFx0e1xcbjEwMzY6XFx0XFx0aWVlZTgwMjExX2RlYnVnZnNfcmVtb3ZlX25ldGRldihzZGF0YSk7XFxuMTAzNzpcXHRcXHRpZWVlODAyMTFfZGVidWdmc19hZGRfbmV0ZGV2KHNkYXRhLCBtbGRfdmlmKTtcXG4xMDM4OlxcdFxcdGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSk7XFxuMTAzOTpcXHRcXG4xMDQwOlxcdFxcdGlmIChzZGF0YS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfU0RBVEFfSU5fRFJJVkVSKSB7XFxuMTA0MTpcXHRcXHRcXHRkcnZfdmlmX2FkZF9kZWJ1Z2ZzKHNkYXRhLVxcdTAwM2Vsb2NhbCwgc2RhdGEpO1xcbjEwNDI6XFx0XFx0XFx0aWYgKCFtbGRfdmlmKVxcbjEwNDM6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfZGVidWdmc19kcnZfYWRkKFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayk7XFxuMTA0NDpcXHRcXHR9XFxuMTA0NTpcXHR9XFxuMTA0NjpcXHRcXG4xMDQ3OlxcdHZvaWQgaWVlZTgwMjExX2xpbmtfZGVidWdmc19hZGQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuMTA0ODpcXHR7XFxuMTA0OTpcXHRcXHRjaGFyIGxpbmtfZGlyX25hbWVbMTBdO1xcbjEwNTA6XFx0XFxuMTA1MTpcXHRcXHRpZiAoV0FSTl9PTighbGluay1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5kZWJ1Z2ZzX2RpciB8fCBsaW5rLVxcdTAwM2VkZWJ1Z2ZzX2RpcikpXFxuMTA1MjpcXHRcXHRcXHRyZXR1cm47XFxuMTA1MzpcXHRcXG4xMDU0OlxcdFxcdC8qIEZvciBub3csIHRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIG5vbi1NTE8gY2FwYWJsZSBkcml2ZXJzICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDE3OjE2OjI2Ljc5NTI2ODk1NFoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1Njg3MTE5NDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEZWJ1Z2ZzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGFsbCBhYm91dCBmaXhpbmcgYSBwcmV0dHkgbmFzdHkgYnVnIHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBkZWJ1Z2ZzIGVudHJpZXMsIHNwZWNpZmljYWxseSB3aGVuIGEgbmV0d29yayBkZXZpY2UgaXMgcmVtb3ZlZCBhbmQgcmVjcmVhdGVkLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9kZWJ1Z2ZzX3JlbW92ZV9uZXRkZXZgLCB3aGljaCBjYWxscyBgZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlYCBvbiB0aGUgbmV0ZGV2J3MgZGVidWdmcyBkaXJlY3RvcnkuICBUaGlzIHJlY3Vyc2l2ZSByZW1vdmFsIGxlYWRzIHRvIHN0YWxlIHBvaW50ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBkZW50cmllcyBwb2ludGVkIHRvIGJ5IGBzZGF0YS1cdTAwM2VkZWJ1Z2ZzLmRlZmF1bHRfdW5pY2FzdF9rZXlgIGFuZCBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X211bHRpY2FzdF9rZXlgIGFyZSBnZXR0aW5nIGZyZWVkLiAgTGF0ZXIsIGZ1bmN0aW9ucyBsaWtlIGBpZWVlODAyMTFfZGVidWdmc19rZXlfdXBkYXRlX2RlZmF1bHRgIGNvdWxkIHRyeSB0byBvcGVyYXRlIG9uIHRoZXNlIG5vdy1pbnZhbGlkIHBvaW50ZXJzLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUgb3IsIGV2ZW4gd29yc2UsIGEgZG91YmxlLWZyZWUgaWYgd2UncmUgbm90IGNhcmVmdWwuICBBbHRlcm5hdGl2ZWx5LCB3aGVuIHdlIHJlY3JlYXRlIHRoZSBuZXRkZXYncyBkZWJ1Z2ZzLCB0aGUgZGVmYXVsdCBrZXkgc3ltbGlua3MgYXJlbid0IHJlLWVzdGFibGlzaGVkIGluIGBpZWVlODAyMTFfZGVidWdmc19yZWNyZWF0ZV9uZXRkZXZgLlxuXG5UaGUgcGF0Y2gncyBzb2x1dGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IHdlIHNldCBgc2RhdGEtXHUwMDNlZGVidWdmcy5kZWZhdWx0X3VuaWNhc3Rfa2V5YCBhbmQgYHNkYXRhLVx1MDAzZWRlYnVnZnMuZGVmYXVsdF9tdWx0aWNhc3Rfa2V5YCB0byBgTlVMTGAgZHVyaW5nIG5ldGRldiByZW1vdmFsLiBUaGVuLCBkdXJpbmcgdGhlIHJlY3JlYXRpb24gb2YgdGhlIG5ldGRldidzIGRlYnVnZnMsIHdlIGNhbGwgYGllZWU4MDIxMV9kZWJ1Z2ZzX2tleV91cGRhdGVfZGVmYXVsdChzZGF0YSlgIHRvIGVuc3VyZSB0aGUgc3ltbGlua3MgYXJlIGNvcnJlY3RseSByZWNyZWF0ZWQuIFRoaXMgZml4ZXMgdGhlIHN0YWxlIHBvaW50ZXIgaXNzdWUgYW5kIHJlc3RvcmVzIHRoZSBkZWZhdWx0IGtleSBzeW1saW5rcyBjb3JyZWN0bHkuXG5cbk5vdywgYWJvdXQgbWVtb3J5IHNhZmV0eS4gIEkndmUgY2hlY2tlZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuICBUaGVyZSdzIG5vIHN0cnVjdHVyZSBkYXRhIGJlaW5nIGNvcGllZCB0byB1c2VyIHNwYWNlLCBzbyB0aGF0J3MgZ29vZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGFsbG9jYXRpb25zIGhhcHBlbmluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBzZXRzIHRob3NlIGtleSBwb2ludGVycyB0byBgTlVMTGAsIGFuZCBgaWVlZTgwMjExX2RlYnVnZnNfa2V5X3VwZGF0ZV9kZWZhdWx0YCB1c2VzIGBzcHJpbnRmYCB3aXRoIGFuIGluaXRpYWxpemVkIHN0cmluZyBidWZmZXIgZm9yIHRoZSBzeW1saW5rIGNyZWF0aW9uLiAgVGhlIGNvcmUgbWVtb3J5IGJ1Z3MgKFVBRiwgZG91YmxlLWZyZWUpIGFyZSB0aGluZ3MgdGhhdCBLQVNBTiB3aWxsIGNhdGNoLlxuXG5TbywgZ2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgKm5vdCogYSBLTVNBTiBpc3N1ZS4gSSd2ZSBkb3VibGUtY2hlY2tlZCBteSB3b3JrLiBMZXQgbWUgcnVuIHRocm91Z2ggdGhlIHVzdWFsIEtNU0FOIGNyaXRlcmlhOlxuXG4xLiAgS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2VyIHNwYWNlPyBOby5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQWxsb2NhdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby5cbjQuICBCb3VuZHMgY2hlY2tzL2xlbmd0aHMgZ2l2aW5nIGFjY2VzcyB0byB1bmluaXQgbWVtb3J5PyBOby5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTj1mYWxzZWAuXG5cbkluIHN1bW1hcnksIHRoaXMgcGF0Y2ggaXMgYSBidWcgZml4IHRoYXQgYWRkcmVzc2VzIGRhbmdsaW5nIGRlYnVnZnMgcG9pbnRlcnMgYW5kIG1pc3Npbmcgc3ltbGlua3MuICBLQVNBTiBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSByZW1haW5pbmcgbWVtb3J5IGVycm9ycy4gS01TQU4gaXNuJ3QgbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTEsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMTc6MTY6MzIuNDgyMzkwOTIyWiIsIlNlcSI6MzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVidWdmcyBsaWZldGltZSBtYW5hZ2VtZW50IGluIG1hYzgwMjExIGJ5IHplcm9pbmcgZGFuZ2xpbmcgZGVidWdmcyBkZW50cnkgcG9pbnRlcnMgKGRlZmF1bHRfdW5pY2FzdF9rZXkgYW5kIGRlZmF1bHRfbXVsdGljYXN0X2tleSkgdXBvbiBpbnRlcmZhY2UgZGVidWdmcyByZW1vdmFsIGFuZCByZS1jcmVhdGluZyBkZWZhdWx0IGtleSBzeW1saW5rcyBkdXJpbmcgaW50ZXJmYWNlIGRlYnVnZnMgcmVjcmVhdGlvbi4gXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIG1vZGlmeSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MgKGUuZy4sIHZpYSBjb3B5X3RvX3VzZXIgb3IgbmV0bGluaykuIEFueSBwb3RlbnRpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8gc3RhbGUgZGVidWdmcyBkZW50cmllcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFyZSBhZGRyZXNzZWQgYW5kIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlYnVnZnMgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBtYWM4MDIxMSBieSB6ZXJvaW5nIGRhbmdsaW5nIGRlYnVnZnMgZGVudHJ5IHBvaW50ZXJzIChkZWZhdWx0X3VuaWNhc3Rfa2V5IGFuZCBkZWZhdWx0X211bHRpY2FzdF9rZXkpIHVwb24gaW50ZXJmYWNlIGRlYnVnZnMgcmVtb3ZhbCBhbmQgcmUtY3JlYXRpbmcgZGVmYXVsdCBrZXkgc3ltbGlua3MgZHVyaW5nIGludGVyZmFjZSBkZWJ1Z2ZzIHJlY3JlYXRpb24uIFxcblxcblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBtb2RpZnkgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzIChlLmcuLCB2aWEgY29weV90b191c2VyIG9yIG5ldGxpbmspLiBBbnkgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyByZWxhdGVkIHRvIHN0YWxlIGRlYnVnZnMgZGVudHJpZXMgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhcmUgYWRkcmVzc2VkIGFuZCBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow4pgnv[1] Phase: Succeeded StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 17:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 17:16:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2] Phase: Succeeded StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 17:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-07 17:16:43 +0000 UTC FinishedAt: 2026-09-07 17:16:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4pgnv/series-workflow4pgnv-convert-artifact-101519184/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-07 17:16:54 +0000 UTC FinishedAt: 2026-09-07 17:33:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-07 17:16:54 +0000 UTC FinishedAt: 2026-09-07 17:33:22 +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:*74109316-e2bf-4f3d-9034-de646c4d046b,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-workflow4pgnv/series-workflow4pgnv-convert-artifact-101519184/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": "502c7f6a-d4e6-45c0-9464-1d56d856cc35", "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-workflow4pgnv/series-workflow4pgnv-build-action-1216347606/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-07 17:16:54 +0000 UTC FinishedAt: 2026-09-07 17:33:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*74109316-e2bf-4f3d-9034-de646c4d046b,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-workflow4pgnv/series-workflow4pgnv-convert-artifact-101519184/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": "502c7f6a-d4e6-45c0-9464-1d56d856cc35", "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-workflow4pgnv/series-workflow4pgnv-build-action-1216347606/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-07 17:33:22 +0000 UTC FinishedAt: 2026-09-07 17:33:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-07 17:33:22 +0000 UTC FinishedAt: 2026-09-07 17:33:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-07 17:33:22 +0000 UTC FinishedAt: 2026-09-07 17:33:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-07 17:33:22 +0000 UTC FinishedAt: 2026-09-07 17:33:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4pgnv/series-workflow4pgnv-convert-artifact-3168616119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-07 17:33:32 +0000 UTC FinishedAt: 2026-09-07 17:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-07 17:33:32 +0000 UTC FinishedAt: 2026-09-07 17:36:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*502c7f6a-d4e6-45c0-9464-1d56d856cc35,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-workflow4pgnv/series-workflow4pgnv-build-action-1216347606/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-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-07 17:36:35 +0000 UTC FinishedAt: 2026-09-07 17:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-07 17:36:35 +0000 UTC FinishedAt: 2026-09-07 17:36:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-07 17:36:35 +0000 UTC FinishedAt: 2026-09-07 17:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-07 17:36:35 +0000 UTC FinishedAt: 2026-09-07 17:53:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*74109316-e2bf-4f3d-9034-de646c4d046b,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-workflow4pgnv/series-workflow4pgnv-convert-artifact-3168616119/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": "81bd3d2d-c5bb-4b4c-aa40-e8aa9eae5455", "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-workflow4pgnv/series-workflow4pgnv-build-action-642817659/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-07 17:36:35 +0000 UTC FinishedAt: 2026-09-07 17:53:00 +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:*74109316-e2bf-4f3d-9034-de646c4d046b,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-workflow4pgnv/series-workflow4pgnv-convert-artifact-3168616119/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": "81bd3d2d-c5bb-4b4c-aa40-e8aa9eae5455", "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-workflow4pgnv/series-workflow4pgnv-build-action-642817659/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-07 17:53:10 +0000 UTC FinishedAt: 2026-09-07 17:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-07 17:53:10 +0000 UTC FinishedAt: 2026-09-07 17:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-07 17:53:10 +0000 UTC FinishedAt: 2026-09-07 17:55:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-07 17:53:10 +0000 UTC FinishedAt: 2026-09-07 17:54:55 +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:*81bd3d2d-c5bb-4b4c-aa40-e8aa9eae5455,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-workflow4pgnv/series-workflow4pgnv-build-action-642817659/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-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"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:*502c7f6a-d4e6-45c0-9464-1d56d856cc35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81bd3d2d-c5bb-4b4c-aa40-e8aa9eae5455,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-workflow4pgnv/series-workflow4pgnv-build-action-1216347606/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-workflow4pgnv/series-workflow4pgnv-build-action-642817659/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 17:55:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 17:55:10 +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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"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-workflow4pgnv/series-workflow4pgnv-convert-artifact-798874352/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 17:55:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 17:55:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-07 17:55:05 +0000 UTC FinishedAt: 2026-09-07 17:55:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-07 17:55:15 +0000 UTC FinishedAt: 2026-09-07 20:57:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pgnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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_debugfs_remove_netdev","ieee80211_debugfs_recreate_netdev","ieee80211_debugfs_key_update_default"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9d1365e96a920bf79974161e370b5640a0054461","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_DEBUGFS","CFG80211_DEBUGFS","DEBUG_FS"],"series_id":"0e5fe4a6-922d-4d42-b3a9-a3cf613b5b26","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-07 17:55:15 +0000 UTC FinishedAt: 2026-09-07 20:57:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*502c7f6a-d4e6-45c0-9464-1d56d856cc35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*81bd3d2d-c5bb-4b4c-aa40-e8aa9eae5455,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-workflow4pgnv/series-workflow4pgnv-build-action-1216347606/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-workflow4pgnv/series-workflow4pgnv-build-action-642817659/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-workflow4pgnv/series-workflow4pgnv-convert-artifact-798874352/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,}