Name: series-workflow54c8x Phase: Succeeded StartedAt: 2026-09-06 06:39:15 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[0] Phase: Succeeded StartedAt: 2026-09-06 06:39:15 +0000 UTC FinishedAt: 2026-09-06 06:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 06:39:15 +0000 UTC FinishedAt: 2026-09-06 06:42:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "ATH9K_HTC_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "ATH9K_HTC_DEBUGFS" ], "series_id": "817edea6-c9ce-41cd-8475-3cbea6107fd7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath9k_htc_calcrxfilter", "ath9k_wmi_cmd", "read_file_wmi", "ath9k_htc_init_debug" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDlrX2h0Y19jYWxjcnhmaWx0ZXImIzM0OywKICAgICYjMzQ7YXRoOWtfd21pX2NtZCYjMzQ7LAogICAgJiMzNDtyZWFkX2ZpbGVfd21pJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLmZhYjYxMzE5OWNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtMzEwLDYgJiM0MzszMTAsMjkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zbG90ID0ge1xuIFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbiYjNDM7XHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuJiM0MztcdGNoYXIgYnVmWzEyOF07XG4mIzQzO1x0dW5zaWduZWQgaW50IGxlbjtcbiYjNDM7XG4mIzQzO1x0bGVuID0gc2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksXG4mIzQzO1x0XHRcdFwmIzM0OyUyMHMgOiAlMTB1XFxuXCYjMzQ7XG4mIzQzO1x0XHRcdFwmIzM0OyUyMHMgOiAlMTB1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcJiMzNDtJc3N1ZWRcJiMzNDssIHByaXYtXHUwMDNld21pLVx1MDAzZWNtZHNfaXNzdWVkLFxuJiM0MztcdFx0XHRcJiMzNDtUaW1lb3V0c1wmIzM0OywgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc190aW1lZF9vdXQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xuJiM0MztcdC5yZWFkID0gcmVhZF9maWxlX3dtaSxcbiYjNDM7XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuJiM0MztcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuJiM0MztcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3F1ZXVlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4gXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuIHtcbkBAIC01MDUsNiAmIzQzOzUyOCw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2xvdFwmIzM0OywgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc19zbG90KTtcbiYjNDM7XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3dtaVwmIzM0OywgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfd21pKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cXVldWVcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfcXVldWUpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZWJ1Z1wmIzM0OywgMDYwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbmluZGV4IGJlZDdlYTI0MjVhMGUuLjI5OTA2NGE3ZmE0OTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuQEAgLTg2OCwxNCAmIzQzOzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuICAqL1xuIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiB7XG4tI2RlZmluZVx0UlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKVxuLVxuIFx0c3RydWN0IGF0aF9odyAqYWggPSBwcml2LVx1MDAzZWFoO1xuIFx0dTMyIHJmaWx0O1xuIFxuLVx0cmZpbHQgPSAoYXRoOWtfaHdfZ2V0cnhmaWx0ZXIoYWgpIFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xuJiM0MztcdHJmaWx0ID0gQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUIHxcbiYjNDM7XHRcdEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXG4mIzQzO1x0XHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSO1xuIFxuIFx0aWYgKHByaXYtXHUwMDNlcnhmaWx0ZXIgXHUwMDI2IEZJRl9QUk9CRV9SRVEpXG4gXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTtcbkBAIC05MDYsOCAmIzQzOzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcbiBcbiBcdHJldHVybiByZmlsdDtcbi1cbi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFXG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0zNDUsOCAmIzQzOzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHR3bWktXHUwMDNlY21kc19pc3N1ZWQmIzQzOyYjNDM7O1xuIFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNndtaS1cdTAwM2VjbWRfd2FpdCwgdGltZW91dCk7XG4gXHRpZiAoIXRpbWVfbGVmdCkge1xuJiM0MztcdFx0d21pLVx1MDAzZWNtZHNfdGltZWRfb3V0JiM0MzsmIzQzOztcbiBcdFx0YXRoX2RiZyhjb21tb24sIFdNSSwgXCYjMzQ7VGltZW91dCB3YWl0aW5nIGZvciBXTUkgY29tbWFuZDogJXNcXG5cJiMzNDssXG4gXHRcdFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuQEAgLTE1OCw2ICYjNDM7MTU4LDggQEAgc3RydWN0IHdtaSB7XG4gXHR1OCAqY21kX3JzcF9idWY7XG4gXHR1MzIgY21kX3JzcF9sZW47XG4gXHRib29sIHN0b3BwZWQ7XG4mIzQzO1x0dTMyIGNtZHNfaXNzdWVkO1xuJiM0MztcdHUzMiBjbWRzX3RpbWVkX291dDtcbiBcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ190eF9ldmVudHM7XG4gXHRzcGlubG9ja190IGV2ZW50X2xvY2s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoOWtfaHRjX2NhbGNyeGZpbHRlciYjMzQ7LAogICAgJiMzNDthdGg5a193bWlfY21kJiMzNDssCiAgICAmIzM0O3JlYWRfZmlsZV93bWkmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYXRoOWtfaHRjIFVTQiB3aXJlbGVzcyBkcml2ZXIgYnkgdXBkYXRpbmcgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiBsb2dpYyAoYXRoOWtfaHRjX2NhbGNyeGZpbHRlcikgdG8gY2hlY2sgc3BlY3RyYWwgbW9kZSwgdHJhY2tpbmcgaXNzdWVkIGFuZCB0aW1lZCBvdXQgV01JIGNvbW1hbmQgc3RhdGlzdGljcyBpbiBhdGg5a193bWlfY21kLCBhbmQgZXhwb3NpbmcgdGhlbSB2aWEgYSBuZXcgZGVidWdmcyBlbnRyeSAocmVhZF9maWxlX3dtaSkuIFNpbmNlIGF0aDlrX2h0YyBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI0MWQyMGM3MTMyMzc2ZWEzNjgxOTYxNWJkYzM3ODY2OGRjMzc4N2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCkBAIC0zMTAsNiAmIzQzOzMxMCwyOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3Nsb3QgPSB7CiAJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAogfTsKIAomIzQzO3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKJiM0MzsJCQkgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0mZ3Q7cHJpdmF0ZV9kYXRhOwomIzQzOwljaGFyIGJ1ZlsxMjhdOwomIzQzOwl1bnNpZ25lZCBpbnQgbGVuOwomIzQzOwomIzQzOwlsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKJiM0MzsJCQkmIzM0OyUyMHMgOiAlMTB1XG4mIzM0OwomIzQzOwkJCSYjMzQ7JTIwcyA6ICUxMHVcbiYjMzQ7LAomIzQzOwkJCSYjMzQ7SXNzdWVkJiMzNDssIHByaXYtJmd0O3dtaS0mZ3Q7Y21kc19pc3N1ZWQsCiYjNDM7CQkJJiMzNDtUaW1lb3V0cyYjMzQ7LCBwcml2LSZndDt3bWktJmd0O2NtZHNfdGltZWRfb3V0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3dtaSA9IHsKJiM0MzsJLnJlYWQgPSByZWFkX2ZpbGVfd21pLAomIzQzOwkub3BlbiA9IHNpbXBsZV9vcGVuLAomIzQzOwkub3duZXIgPSBUSElTX01PRFVMRSwKJiM0MzsJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAomIzQzO307CiYjNDM7CiBzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcXVldWUoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKIAkJCSAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKQEAgLTUwNSw2ICYjNDM7NTI4LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O3Nsb3QmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiAJCQkgICAgcHJpdiwgJmFtcDtmb3BzX3Nsb3QpOwomIzQzOwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7d21pJiMzNDssIDA0MDAsIHByaXYtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAomIzQzOwkJCSAgICBwcml2LCAmYW1wO2ZvcHNfd21pKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7cXVldWUmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiAJCQkgICAgcHJpdiwgJmFtcDtmb3BzX3F1ZXVlKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGVidWcmIzM0OywgMDYwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKaW5kZXggYmVkN2VhMjQyNWEwZS4uMjk5MDY0YTdmYTQ5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwpAQCAtODY4LDE0ICYjNDM7ODY4LDE0IEBAIGludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAgKi8KIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIHsKLSNkZWZpbmUJUlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKQotCiAJc3RydWN0IGF0aF9odyAqYWggPSBwcml2LSZndDthaDsKIAl1MzIgcmZpbHQ7CiAKLQlyZmlsdCA9IChhdGg5a19od19nZXRyeGZpbHRlcihhaCkgJmFtcDsgUlhfRklMVEVSX1BSRVNFUlZFKQotCQl8IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVAotCQl8IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDsKJiM0MzsJcmZpbHQgPSBBVEg5S19SWF9GSUxURVJfVUNBU1QgfCBBVEg5S19SWF9GSUxURVJfQkNBU1QgfAomIzQzOwkJQVRIOUtfUlhfRklMVEVSX01DQVNUOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpCiYjNDM7CQlyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSOwogCiAJaWYgKHByaXYtJmd0O3J4ZmlsdGVyICZhbXA7IEZJRl9QUk9CRV9SRVEpCiAJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTsKQEAgLTkwNiw4ICYjNDM7OTA2LDYgQEAgdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogCQlyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfTUNBU1RfQkNBU1RfQUxMOwogCiAJcmV0dXJuIHJmaWx0OwotCi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwpAQCAtMzQ1LDggJiM0MzszNDUsMTAgQEAgaW50IGF0aDlrX3dtaV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9jbWRfaWQgY21kX2lkLAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCiYjNDM7CXdtaS0mZ3Q7Y21kc19pc3N1ZWQmIzQzOyYjNDM7OwogCXRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO3dtaS0mZ3Q7Y21kX3dhaXQsIHRpbWVvdXQpOwogCWlmICghdGltZV9sZWZ0KSB7CiYjNDM7CQl3bWktJmd0O2NtZHNfdGltZWRfb3V0JiM0MzsmIzQzOzsKIAkJYXRoX2RiZyhjb21tb24sIFdNSSwgJiMzNDtUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xuJiMzNDssCiAJCQl3bWlfY21kX3RvX25hbWUoY21kX2lkKSk7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7d21pLSZndDt3bWlfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKQEAgLTE1OCw2ICYjNDM7MTU4LDggQEAgc3RydWN0IHdtaSB7CiAJdTggKmNtZF9yc3BfYnVmOwogCXUzMiBjbWRfcnNwX2xlbjsKIAlib29sIHN0b3BwZWQ7CiYjNDM7CXUzMiBjbWRzX2lzc3VlZDsKJiM0MzsJdTMyIGNtZHNfdGltZWRfb3V0OwogCiAJc3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX3R4X2V2ZW50czsKIAlzcGlubG9ja190IGV2ZW50X2xvY2s7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoaXMgcGF0Y2gmIzM5O3MgZnV6emluZyB2aWFiaWxpdHkuIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyB0aGluZyB1cCBhbmQgcnVubmluZyBmb3IgZnV6emluZz8gQW5kLCBjcml0aWNhbGx5LCB3aGF0IGFyZSB0aGUga2V5IHN5bWJvbHMsIHRoZSBmb2N1cyBwb2ludHMsIHRoYXQgSSBzaG91bGQgc3BlY2lmeSB0byBtYXhpbWl6ZSB0aGUgZnV6emluZyYjMzk7cyBlZmZlY3RpdmVuZXNzPwoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBtb2RpZmllZCBmaWxlcy4gTGV0JiMzOTtzIHNlZS4uLiB3ZSYjMzk7dmUgZ290OgoKKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jYAoqICAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY2AKKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgCiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oYAoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgYXRoOWtfaHRjYCwgYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEF0aGVyb3MgQVI5MjcxIGFuZCBBUjcwMTAgY2hpcHNldHMuIEEgbGlnaHRidWxiIGp1c3Qgd2VudCBvZmYhIFRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBgYXRoOWtfaHRjYCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB3aXRoaW4gYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIuIENhbiB3ZSB1c2UgcmF3LWdhZGdldCwgdGhlIHVzYi1mdXp6ZXIsIG9yIHBlcmhhcHMgdmhjaSBvciBkdW1teVxfaGNkIHRvIGdldCB0aGlzIGRyaXZlciBleGVyY2lzaW5nPwoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBhdGg5a2Agc3Vic3lzdGVtIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBhbmQgdG8gdmVyaWZ5IHRoZSBhcHByb3ByaWF0ZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjM5OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc2PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDIxPXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NDEtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDQyOiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ0My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ1Mz1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU2LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NTc6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU4LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NzE9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTc6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg1PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTkyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQVRIOUtfSFRDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGRpY3RhdGVzIEkgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdGg5ayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgcGFydCBjb25jZXJuaW5nIEFUSDlLX0hUQy4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSBsb29raW5nIGZvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgcHJvYmFibHkgbmFtZWQgJiMzNDtLY29uZmlnLCYjMzQ7IHNpdHVhdGVkIHdpdGhpbiB0aGUgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsgZGlyZWN0b3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgJiMzNDtBVEg5S19IVEMmIzM0OyBpcyBhIHJlbGV2YW50IHN5bWJvbCBvciBvcHRpb24gd2l0aGluIHRoYXQgZmlsZSwgcG90ZW50aWFsbHkgYSBmZWF0dXJlIGZsYWcsIGRlcGVuZGVuY3ksIG9yIGEgY29uZGl0aW9uYWwgYnVpbGQgc2V0dGluZyByZWxhdGVkIHRvIHRoZSBBdGhlcm9zIDlrIGRyaXZlciBhbmQgdGhlIEhvc3QgVHJhbnNwb3J0IENvbnRyb2xsZXIgKEhUQykgZnJhbWV3b3JrLiBJdCYjMzk7cyBwcm9iYWJseSBrZXkgdG8gaG93IHRoZSBhdGg5ayBkcml2ZXIgaW50ZXJhY3RzIHdpdGggYSBjZXJ0YWluIHNldCBvZiBoYXJkd2FyZSBvciBmaXJtd2FyZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBzaGVkIGxpZ2h0IG9uIGhvdyB0aGlzIGFzcGVjdCBvZiB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBjb25maWd1cmVkLCBvciBpdHMgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyNzEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGg5a19odGMgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGF0aDlrX2h0Y2AgVVNCIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyLCB3aGljaCwgaW1wb3J0YW50bHksIHJlbGllcyBvbiBVU0IgYW5kIE1BQzgwMjExLiAgR29vZCwgdGhhdCBtZWFucyB3ZSBjYW4gbGlrZWx5IHBva2UgYXQgaXQgdXNpbmcgVVNCIGVtdWxhdGlvbiB3aXRoaW4gb3VyIHN0YW5kYXJkIHN5emthbGxlciBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB1c2luZyBSYXcgR2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kuIE1ha2VzIHRlc3RpbmcgdGhpcyBtdWNoIG1vcmUgbWFuYWdlYWJsZS4KCk5vdywgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcywgSSYjMzk7dmUgaWRlbnRpZmllZCBmb3VyIGtleSBhcmVhczoKCjEuICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY2A6IFRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGByZWFkX2ZpbGVfd21pYCBkZWJ1Z2ZzIGhhbmRsZXIuIEVmZmVjdGl2ZWx5LCBhIG5ldyBkZWJ1Z2ZzIGZpbGUgYCYjMzQ7d21pJiMzNDtgIGhhcyBiZWVuIGNyZWF0ZWQgaW5zaWRlIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZm9yIGRlYnVnZ2luZyBwdXJwb3NlczsgYSBuZXcgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uLgoKMi4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNgOiBUaGUgY2hhbmdlIHRvIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGhvdyB3ZSBjb21wdXRlIHRoZSByZWNlaXZlIGZpbHRlci4gIE9yaWdpbmFsbHksIHRoZSBmaWx0ZXIgbG9naWMgcHJlc2VydmVkIGFuIGV4aXN0aW5nIGBSWF9GSUxURVJfUFJFU0VSVkVgIG1hc2suICBOb3csIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4gIEluc3RlYWQsIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgLCBgQVRIOUtfUlhfRklMVEVSX0JDQVNUYCwgYW5kIGBBVEg5S19SWF9GSUxURVJfTUNBU1RgIGFyZSBhbHdheXMgZW5hYmxlZC4gQ3JpdGljYWxseSwgdGhlcmUmIzM5O3MgYWxzbyBub3cgYSBjb25kaXRpb25hbCB0aGF0IGluY2x1ZGVzIGBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVJgIGFuZCBgQVRIOUtfUlhfRklMVEVSX1BIWUVSUmAgb25seSBpZiBgcHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGlzICpub3QqIGBTUEVDVFJBTF9ESVNBQkxFRGAuIFRoaXMgaXMgYSBiaWcgY2hhbmdlLCBwb3RlbnRpYWxseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjZXJ0YWluIHR5cGVzIG9mIHBhY2tldHMgb3IgaW50ZXJmZXJlbmNlIGRldGVjdGlvbiwgYnV0IG9ubHkgd2hlbiBzcGVjdHJhbCBtb2RlIGlzIGVuYWJsZWQuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBSWCBiZWhhdmlvci4gSSB3b25kZXIgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBiYXNlIGZpbHRlciBzZXR0aW5ncywgd2hpY2ggYXJlIG5vIGxvbmdlciBwcmVzZXJ2ZWQ/CgozLiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2A6ICBIZXJlLCBgYXRoOWtfd21pX2NtZGAgbm93IGluY3JlbWVudHMgY291bnRlcnMgYHdtaS0mZ3Q7Y21kc19pc3N1ZWRgIGFuZCBgd21pLSZndDtjbWRzX3RpbWVkX291dGAgd2hlbiB0aW1lb3V0cyBvY2N1ci4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZXJlIHdlcmUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbW1hbmQgdGltZW91dHMuIFRoZXNlIGNvdW50ZXJzIHdpbGwgbGlrZWx5IGdpdmUgaW5zaWdodHMgaW50byB0aGUgY29tbWFuZCBmYWlsdXJlcyBvciBuZXR3b3JrIGluc3RhYmlsaXRpZXMuCgo0LiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGA6ICBUaGlzIGlzIGp1c3QgdGhlIGFkZGl0aW9uIG9mIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIHN1cHBvcnQgZm9yIHRoZSB1cGRhdGVkIGNvbW1hbmQgdHJhY2tpbmcuCgpTbywgd2hlcmUgaXMgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGNhbGxlZD8gIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgKmNhbGxpbmcqIHRoYXQgUlggZmlsdGVyIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXA7IHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2h0Y19jYWxjcnhmaWx0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01OTk9dm9pZCBhdGg5a19yeF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjAwOnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xMjU3PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xMjc3LVx0cHJpdi1cdTAwM2VyeGZpbHRlciA9ICp0b3RhbF9mbGFncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxMjc4Olx0cmZpbHQgPSBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTEyNzktXHRhdGg5a19od19zZXRyeGZpbHRlcihwcml2LVx1MDAzZWFoLCByZmlsdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NjgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODY5OnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05MTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX29wbW9kZV9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtOTE5LVx0LyogY29uZmlndXJlIHJ4IGZpbHRlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjkyMDpcdHJmaWx0ID0gYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MjEtXHRhdGg5a19od19zZXRyeGZpbHRlcihhaCwgcmZpbHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTExCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGByZWFkX2ZpbGVfd21pYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgYHJlYWRfZmlsZV93bWlgIGlzIGRpcmVjdGx5IGFjY2Vzc2luZyBgcHJpdi0mZ3Q7d21pLSZndDtjbWRzX2lzc3VlZGAgYW5kIGBwcml2LSZndDt3bWktJmd0O2NtZHNfdGltZWRfb3V0YC4gKkhvbGQgb24gYSBtaW51dGUuKiBUaGUgbmFnZ2luZyBxdWVzdGlvbiBpczogd2hhdCBpZiBgcHJpdi0mZ3Q7d21pYCBpcyBOVUxMIGF0IHRoYXQgcG9pbnQ/IElzIHRoZXJlIGEgY29uZGl0aW9uIHRoYXQgZ3VhcmFudGVlcyB0aGF0IGBwcml2LSZndDt3bWlgIGlzIGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgYHJlYWRfZmlsZV93bWlgIGlzIGV2ZXIgY2FsbGVkPyBEb2VzIHRoZSBkZWJ1Z2ZzIGluaXRpYWxpemF0aW9uIG9yIGZpbGUgY3JlYXRpb24gc29tZWhvdyBndWFyYW50ZWUgdGhhdCBgcHJpdi0mZ3Q7d21pYCBpcyBub24tTlVMTD8gSSBuZWVkIHRvIGNoZWNrIHRob3NlIGluaXRpYWxpemF0aW9uIHBhdGhzLiBJIGJldHRlciBnbyB0aHJvdWdoIGBodGNfZHJ2X2luaXQuY2AgYW5kIGBodGNfZHJ2X2RlYnVnLmNgIHRvIHRyYWNlIHRoZSB2YXJpYWJsZSYjMzk7cyBsaWZlY3ljbGUuIEkmIzM5O2xsIHByb2JhYmx5IGJlIGh1bnRpbmcgZm9yIHdoZXJlIGBwcml2LSZndDt3bWlgIGlzIGFsbG9jYXRlZCBhbmQgYXNzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2h0Y19pbml0X2RlYnVnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQzLSNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDQ6aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDUtdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ2LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQ3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKSB7IHJldHVybiAwOyB9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0OC1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz01MDA9dm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTA1OmludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9ODI4PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODg5Olx0ZXJyb3IgPSBhdGg5a19odGNfaW5pdF9kZWJ1Zyhwcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04OTAtXHRpZiAoZXJyb3IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgQXRoOWtfaHRjIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGFuZCBgcmVhZF9maWxlX3dtaWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBpcyBhY3R1YWxseSByZWFjaGFibGUgYnkgc3l6a2FsbGVyIGZ1enppbmcuCgpNeSBhbmFseXNpcyBpbW1lZGlhdGVseSBwb2ludHMgdG8gYSBwb3NpdGl2ZSBhbnN3ZXIuIFVTQiB3aWZpIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgUmF3IEdhZGdldCB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBrbm93IHRoYXQgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIHN5c2NhbGxzLCBjb21iaW5lZCB3aXRoIGRlYnVnZnMgcmVhZHMsIGNhbiBpbnRlcmFjdCB3aXRoIGBhdGg5a19odGNgLiBGdXJ0aGVybW9yZSwgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGdldHMgY2FsbGVkIGR1cmluZyBwYWNrZXQgZmlsdGVyIGNvbmZpZ3VyYXRpb24gYW5kIG9wbW9kZSBpbml0aWFsaXphdGlvbi4gIGBhdGg5a193bWlfY21kYCBpcyBkaXJlY3RseSBpbnZvbHZlZCB3aGVuZXZlciBhIFdNSSBjb21tYW5kIGlzIHNlbnQgdG8gdGhlIGZpcm13YXJlIG92ZXIgVVNCLCBhbmQgYHJlYWRfZmlsZV93bWlgIGlzIGEgZGVidWdmcyByZWFkIGhhbmRsZXIuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWE6ICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiB0aGUgcGF0Y2ggaW1wYWN0cyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBlc3BlY2lhbGx5IHdpdGhpbiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMuIFNpbmNlIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcGVyZmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIGFuZCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBSWCBmaWx0ZXIgbG9naWMsIGFkZHMgV01JIHN0YXRzLCBhbmQgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgdGhpcyBjbGVhcmx5IGhpdHMgdGhlICYjMzQ7cmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSYjMzQ7IGNyaXRlcmlhLiBXb3J0aEZ1enppbmcgaGFzIHRvIGJlIHNldCB0byB0cnVlLgoKTmV4dCwgSSBuZWVkIHRvIGxpc3QgdGhlIEZvY3VzU3ltYm9scywgc28gSSB3aWxsIGxpc3QgdGhlIG1vZGlmaWVkIHN5bWJvbHM6IGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYHJlYWRfZmlsZV93bWlgLiBBbHNvLCB0aGUgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBkZWJ1Z2ZzIGZpbGUsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIG5lZWRzIHRvIGJlIGFkZGVkLgoKTm93IHRoZSBzdGF0aWMgdnMuIG5vbi1zdGF0aWMgc3ltYm9scyBhcmUgaW1wb3J0YW50LiBgcmVhZF9maWxlX3dtaWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljIHdpdGhpbiBgaHRjX2Rydl9kZWJ1Zy5jYC4gSG93ZXZlciwgc2luY2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW5kIHVzZWQgaW4gYGZvcHNfd21pLnJlYWQgPSByZWFkX2ZpbGVfd21pYCwgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgbm9uLXN0YXRpYyBzeW1ib2xzLgoKU28sIGxldCYjMzk7cyBjb25maXJtIHRoZSBjb21wbGV0ZSBzZXQgb2Ygc3ltYm9sczogYHJlYWRfZmlsZV93bWlgLCBgYXRoOWtfaHRjX2luaXRfZGVidWdgLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAsIGFuZCBgYXRoOWtfd21pX2NtZGAuCgpGaW5hbGx5LCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgaW1wb3J0YW50LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBhcmUgZXhwZWN0ZWQuIGBBVEg5S19IVENfREVCVUdGU2AgdGhlbiBkZXBlbmRzIG9uIGBBVEg5S19IVENgIGFuZCBgREVCVUdfRlNgLiBBbmQgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgZGVwZW5kcyBvbiBlaXRoZXIgYEFUSDlLX0RFQlVHRlNgIG9yIGBBVEg5S19IVENfREVCVUdGU2AuIEkgbm90ZSB0aGF0IGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgc3BlY19wcml2LnNwZWN0cmFsX21vZGVgLiBJIG5lZWQgdG8gZ3JlcCBmb3IgYm90aCBgc3BlY19wcml2YCBhbmQgYHNwZWN0cmFsX21vZGVgIHRvIGVuc3VyZSBubyBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGVjX3ByaXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTk4Mz1zdHJ1Y3QgYXRoX3NvZnRjIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2NDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jPTIzPXN0YXRpYyBpbnQgYXRoX3NldF9jaGFubmVsKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTUtXHRcdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFx1MDAyNmNvbW1vbi1cdTAwM2VvcF9mbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk2Olx0XHRcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NzpcdFx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTIyPXN0YXRpYyBzOCBmaXhfcnNzaV9pbnZfb25seSh1OCByc3NpX3ZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Mjk6c3RhdGljIHZvaWQgYXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZmZ0X3NhbXBsZV90bHYgKmZmdF9zYW1wbGVfdGx2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMi1cdGludCBsZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MzM6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzctXHRcdCBzaXplb2YoKmZmdF9zYW1wbGVfdGx2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozODpcdHJlbGF5X3dyaXRlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4sIGZmdF9zYW1wbGVfdGx2LCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTI3PXR5cGVkZWYgaW50IChhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlcikgKHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMjg6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEyOS1cdFx0XHR1OCAqc2FtcGxlX2J1ZiwgdTY0IHRzZiwgdTE2IGZyZXEsIGludCBjaGFuX3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMzI9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzM6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNC1cdFx0XHR1OCAqc2FtcGxlX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM3LVx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMCBmZnRfc2FtcGxlXzIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzODpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzk6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xNDAtXHRzdHJ1Y3QgYXRoX2h0MjBfbWFnX2luZm8gKm1hZ19pbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjMwOlx0YXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHRsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMzY9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfNDBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyMzc6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzOC1cdFx0XHR1OCAqc2FtcGxlX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQxLVx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMF80MCBmZnRfc2FtcGxlXzQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI0MjpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yNDQtXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgKmNhbGRhdGEgPSBhaC1cdTAwM2VjYWxkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDA3Olx0YXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHRsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00NDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ0OTphdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUzLVx0c3RydWN0IHJjaGFuX2J1ZiAqYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ1NDpcdHN0cnVjdCByY2hhbiAqcmMgPSBzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDY4LS8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ2OTppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDcwLVx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzQ6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDc1LVx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjUwNTpcdGlmICghc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MDYtXHRcdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MTAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MTE6XHRyZXQgPSBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMi1cdGlmIChyZXQgPT0gMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjI0Olx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjUtXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY0MS1cdFx0XHRpZiAoc2FtcGxlX2J5dGVzID09IHNhbXBsZV9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDI6XHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjQzLVx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz02OTA9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWNfc2Nhbl9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2OTM6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTQtXHRjaGFyICptb2RlID0gXCYjMzQ7XCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Njk3Olx0c3dpdGNoIChzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OC1cdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTcxNT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MTY6XHRcdFx0XHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzE4Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzE5LVx0dTMyIHJ4ZmlsdGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI5Olx0aWYgKCFzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQyLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzQzOlx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQ0LVx0YXRoOWtfaHdfb3BzKGFoKS1cdTAwM2VzcGVjdHJhbF9zY2FuX3RyaWdnZXIoYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03NDk9aW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcdFx0XHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cdFx0XHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NTM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc2MS1cdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYyOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzYzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzY3LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njg6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njk6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzAtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzItXHRjYXNlIFNQRUNUUkFMX01BTlVBTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzM6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzQ6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODAtXHRhdGhfcHNfb3BzKGNvbW1vbiktXHUwMDNld2FrZXVwKGNvbW1vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgxOlx0YXRoOWtfaHdfb3BzKGFoKS1cdTAwM2VzcGVjdHJhbF9zY2FuX2NvbmZpZyhhaCwgXHUwMDI2c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODItXHRhdGhfcHNfb3BzKGNvbW1vbiktXHUwMDNlcmVzdG9yZShjb21tb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODQ6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSA9IHNwZWN0cmFsX21vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03OTA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NTpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTYtXHRjaGFyIGJ1ZlszMl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgwOC1cdGlmIChzdHJuY21wKFwmIzM0O3RyaWdnZXJcJiMzNDssIGJ1ZiwgNykgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgwOTpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIHNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEwLVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2JhY2tncm91bmRcJiMzNDssIGJ1ZiwgMTApID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTE6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQkFDS0dST1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEyLVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBiYWNrZ3JvdW5kIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEzLVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2NoYW5zY2FuXCYjMzQ7LCBidWYsIDgpID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTQ6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQ0hBTlNDQU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxNS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogY2hhbm5lbCBzY2FuIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE2LVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O21hbnVhbFwmIzM0OywgYnVmLCA2KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE3Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX01BTlVBTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE4LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBtYW51YWwgbW9kZSBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTktXHR9IGVsc2UgaWYgKHN0cm5jbXAoXCYjMzQ7ZGlzYWJsZVwmIzM0OywgYnVmLCA3KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODIwOlx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0RJU0FCTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjEtXHRcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFwmIzM0O3NwZWN0cmFsIHNjYW46IGRpc2FibGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODQxPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODQ1Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODQ2LVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODQ5Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTAtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg1Mz1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTc6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTgtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg2ODpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY5LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04ODQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg4ODpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg4OS1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg5MjpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmNvdW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTMtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5Nj1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkwMDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkwMS1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTEwOlx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmNvdW50ID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkxMS1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTI2PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkyOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTMwOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTMxLVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTM0Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcucGVyaW9kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzUtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzOD1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NDI6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDMtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk1MzpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTU0LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05Njk9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX2ZmdF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTczOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc0LVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTc3Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZmZ0X3BlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc4LVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05ODE9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NTpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4Ni1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTk2Olx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTk3LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmNoYW5fY2FsbGJhY2tzIHJmc19zcGVjX3NjYW5fY2IgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA0NTp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDc6XHRpZiAoc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDg6XHRcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDk6XHRcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTI9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTQ6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA1NS1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTc6XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTgtXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY1LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Ny1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDcwOlx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzEtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3My1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc0Olx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzUtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc3LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzg6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OS1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDgxLVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODI6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4My1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTY2PXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTcxLSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTcyOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTczOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzU9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2Olx0XHRcdFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc3LWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzg6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzktXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODA6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4MS1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgyLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg0LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4ODpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTkyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTkzOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk3OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5OC1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Mj12b2lkIGF0aDlrX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM3NDpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzc9aW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYzoxMzkyOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhIGNhbGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTAwPXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUwMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjUwMjpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MDMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTA1PWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTEzOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTU4OD1zdGF0aWMgdm9pZCBhdGg5a19pbml0X21pc2Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk3Olx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVx1MDAzZWFoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5ODpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5OTpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAwOlx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuY291bnQgPSA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMTpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuZGxlc3MgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDI6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweDEyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMzpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSAweDAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYwNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFx1MDAyNmNvbW1vbi1cdTAwM2VvcF9mbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2Olx0XHQgICAgIHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE3Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg2OT11MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4Nzc6XHRpZiAocHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzgtXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3MD1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0NS1cdFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ2Olx0XHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXHRcdFx0XHQgICAgXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NDIwPXN0YXRpYyB2b2lkIGF0aDlrX2luaXRfbWlzYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM3Olx0c2MtXHUwMDNlc3BlY19wcml2LmFoID0gc2MtXHUwMDNlc2NfYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzODpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM5Olx0c2MtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MDpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5jb3VudCA9IDg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MTpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MjpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweEZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDM6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZmZ0X3BlcmlvZCA9IDB4RjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDQ0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgyLVx0XHRcdFx0XHRcdCByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MzpcdFx0fSBlbHNlIGlmIChzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODg0Olx0XHRcdCAgIGF0aF9jbW5fcHJvY2Vzc19mZnQoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODUtXHRcdFx0XHRcdCAgICAgICByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM4MDcKCQkJCQkJCW91dHB1dDogMjAzCgkJCQkJCQl0aG91Z2h0czogNTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IGF0aDlrX2h0YyBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgcnVuZG93bi4gSSYjMzk7dmUgYmVlbiBkaXNzZWN0aW5nIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIGFuZCBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gd2hhdCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmUgcmVsZXZhbnQgZm9yIGZ1enppbmcuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBBVEg5S19IVENgIGFuZCBgQVRIOUtfSFRDX0RFQlVHRlNgLiBJIGZvdW5kIHRoZXNlIGJ5IHRyYWNpbmcgdGhlIGNvbXBpbGF0aW9uIHBhdGhzIG9mIGZ1bmN0aW9ucyBsaWtlIGBodGNfZHJ2X2RlYnVnLmNgLCB3aGljaCBpcyBvbmx5IGJ1aWx0IHdpdGggYENPTkZJR19BVEg5S19IVENfREVCVUdGU2AgZW5hYmxlZCwgYW5kIGBodGNfZHJ2X3R4cnguY2AgYW5kIGB3bWkuY2AsIHdoaWNoIGFyZSBsaW5rZWQgd2l0aCBgQ09ORklHX0FUSDlLX0hUQ2AuCgpJIGNvbmZpcm1lZCB0aGF0IGBBVEg5S19IVENfREVCVUdGU2AgZGVwZW5kcyBvbiBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCBpbiB0aGUgS2NvbmZpZywgYW5kIGBBVEg5S19IVENgIGl0c2VsZiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHN1YnNldCBvZiBmdW5jdGlvbmFsaXR5IHRpZWQgdG8gdGhlc2UgZGVwZW5kZW5jaWVzLiBJIGFsc28gY2hlY2tlZCBpZiB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgbGlrZSBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYC4KCk5leHQsIEkgbG9va2VkIGF0IHRoZSBzcGVjaWZpYyBzeW1ib2xzIEkgd2FudGVkIHRvIHRhcmdldDogYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGByZWFkX2ZpbGVfd21pYCwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZXNlIGFyZSBub3QgZ2VuZXJhbC1wdXJwb3NlIGZ1bmN0aW9ucyAoZS5nLiwgbWVtb3J5IGFsbG9jYXRvcnMsIGxvY2sgcHJpbWl0aXZlcykgYnV0IGFyZSB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBgYXRoOWtfaHRjYCB3aXJlbGVzcyBkcml2ZXIuIFRoYXQmIzM5O3MgZ29vZCwgYmVjYXVzZSB0aGV5IHByb3ZpZGUgYSBmb2N1c2VkIHRhcmdldC4KClRoZXJlZm9yZSwgdGhlIHNldCBvZiBjb25maWd1cmF0aW9ucywgc3ltYm9scywgYW5kIHZhbHVlcyBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMgYXJlOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIHRydWUKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7QVRIOUtfSFRDJiMzNDssICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0O11gCiogICAqKkZvY3VzU3ltYm9sczoqKiBgWyYjMzQ7YXRoOWtfaHRjX2NhbGNyeGZpbHRlciYjMzQ7LCAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywgJiMzNDtyZWFkX2ZpbGVfd21pJiMzNDssICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0O11gCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHRoZSBjaGFuZ2VzIGFuZCB3aHkgdGhleSBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhcHByb2FjaC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a19odGNfY2FsY3J4ZmlsdGVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywKICAgICYjMzQ7cmVhZF9maWxlX3dtaSYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a19odGNfY2FsY3J4ZmlsdGVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywKICAgICYjMzQ7cmVhZF9maWxlX3dtaSYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwppbmRleCA5NDM3ZDY5ODc3Y2M1Li5mYWI2MTMxOTljYTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKQEAgLTMxMCw2ICYjNDM7MzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHsKIAkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCiB9OwogCiYjNDM7c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3dtaShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAomIzQzOwkJCSAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBmaWxlLSZndDtwcml2YXRlX2RhdGE7CiYjNDM7CWNoYXIgYnVmWzEyOF07CiYjNDM7CXVuc2lnbmVkIGludCBsZW47CiYjNDM7CiYjNDM7CWxlbiA9IHNjbnByaW50ZihidWYsIHNpemVvZihidWYpLAomIzQzOwkJCSYjMzQ7JTIwcyA6ICUxMHVcbiYjMzQ7CiYjNDM7CQkJJiMzNDslMjBzIDogJTEwdVxuJiMzNDssCiYjNDM7CQkJJiMzNDtJc3N1ZWQmIzM0OywgcHJpdi0mZ3Q7d21pLSZndDtjbWRzX2lzc3VlZCwKJiM0MzsJCQkmIzM0O1RpbWVvdXRzJiMzNDssIHByaXYtJmd0O3dtaS0mZ3Q7Y21kc190aW1lZF9vdXQpOwomIzQzOwomIzQzOwlyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0gewomIzQzOwkucmVhZCA9IHJlYWRfZmlsZV93bWksCiYjNDM7CS5vcGVuID0gc2ltcGxlX29wZW4sCiYjNDM7CS5vd25lciA9IFRISVNfTU9EVUxFLAomIzQzOwkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9xdWV1ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAogCQkJICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQogewpAQCAtNTA1LDYgJiM0Mzs1MjgsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7c2xvdCYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfc2xvdCk7CiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt3bWkmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiYjNDM7CQkJICAgIHByaXYsICZhbXA7Zm9wc193bWkpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtxdWV1ZSYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfcXVldWUpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkZWJ1ZyYjMzQ7LCAwNjAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC04NjgsMTQgJiM0Mzs4NjgsMTQgQEAgaW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKICAqLwogdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogewotI2RlZmluZQlSWF9GSUxURVJfUFJFU0VSVkUgKEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlIgfCBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIpCi0KIAlzdHJ1Y3QgYXRoX2h3ICphaCA9IHByaXYtJmd0O2FoOwogCXUzMiByZmlsdDsKIAotCXJmaWx0ID0gKGF0aDlrX2h3X2dldHJ4ZmlsdGVyKGFoKSAmYW1wOyBSWF9GSUxURVJfUFJFU0VSVkUpCi0JCXwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUCi0JCXwgQVRIOUtfUlhfRklMVEVSX01DQVNUOwomIzQzOwlyZmlsdCA9IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVCB8CiYjNDM7CQlBVEg5S19SWF9GSUxURVJfTUNBU1Q7CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCkKJiM0MzsJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7CiAKIAlpZiAocHJpdi0mZ3Q7cnhmaWx0ZXIgJmFtcDsgRklGX1BST0JFX1JFUSkKIAkJcmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BST0JFUkVROwpAQCAtOTA2LDggJiM0Mzs5MDYsNiBAQCB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVF9CQ0FTVF9BTEw7CiAKIAlyZXR1cm4gcmZpbHQ7Ci0KLSN1bmRlZiBSWF9GSUxURVJfUFJFU0VSVkUKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwppbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCkBAIC0zNDUsOCAmIzQzOzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKJiM0MzsJd21pLSZndDtjbWRzX2lzc3VlZCYjNDM7JiM0Mzs7CiAJdGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7d21pLSZndDtjbWRfd2FpdCwgdGltZW91dCk7CiAJaWYgKCF0aW1lX2xlZnQpIHsKJiM0MzsJCXdtaS0mZ3Q7Y21kc190aW1lZF9vdXQmIzQzOyYjNDM7OwogCQlhdGhfZGJnKGNvbW1vbiwgV01JLCAmIzM0O1RpbWVvdXQgd2FpdGluZyBmb3IgV01JIGNvbW1hbmQ6ICVzXG4mIzM0OywKIAkJCXdtaV9jbWRfdG9fbmFtZShjbWRfaWQpKTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt3bWktJmd0O3dtaV9sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKaW5kZXggNWMzYjcxMGI4ZjMxOS4uZWU3MmIwZmJhMzFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaApAQCAtMTU4LDYgJiM0MzsxNTgsOCBAQCBzdHJ1Y3Qgd21pIHsKIAl1OCAqY21kX3JzcF9idWY7CiAJdTMyIGNtZF9yc3BfbGVuOwogCWJvb2wgc3RvcHBlZDsKJiM0MzsJdTMyIGNtZHNfaXNzdWVkOwomIzQzOwl1MzIgY21kc190aW1lZF9vdXQ7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfdHhfZXZlbnRzOwogCXNwaW5sb2NrX3QgZXZlbnRfbG9jazsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRXZhbHVhdGlvbiBmb3IgYXRoOWtfaHRjIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgaGVyZSBmb3IgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgYW5kIHRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIGNvZGUgcmV2aWV3LCBzbyB0aGUgYWN0aW9uIGlzIHRvIGZ1bGx5IGZ1bGZpbGwgdGhlIHJlcXVlc3QuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZldyBmaWxlcyBhZmZlY3RlZDoKCiogICAqKmBodGNfZHJ2X2RlYnVnLmNgKio6IFRoaXMgaXMgYWRkaW5nIGEgZGVidWcgZmlsZSBjYWxsZWQgJiMzNDt3bWkmIzM0OyB1bmRlciBkZWJ1Z2ZzLiBUaGUgYHJlYWRfZmlsZV93bWlgIGZ1bmN0aW9uIHVzZXMgYHNjbnByaW50ZmAgdG8gZm9ybWF0IHNvbWUgV01JIHN0YXRpc3RpY3MgKGNvbW1hbmRzIGlzc3VlZCBhbmQgdGltZW91dHMpIGludG8gYSBidWZmZXIgKGBidWZgKSwgYW5kIHRoZW4gY29waWVzIGl0IHRvIHVzZXJzcGFjZSB1c2luZyBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgLiBUaGlzIGlzIHN0YW5kYXJkIGRlYnVnZnMgc3R1ZmYuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIEtNU0FOLXdvcnRoeSBoZXJlLCBidXQgbGV0JiMzOTtzIGtlZXAgYW4gZXllIG9uIGJ1ZmZlciBzaXplcyBhbmQgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBzdGF0aXN0aWNzLgoqICAgKipgaHRjX2Rydl90eHJ4LmNgKio6IFRoaXMgbW9kaWZpZXMgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbi4gSXQmIzM5O3Mgbm93IGNoZWNraW5nIGZvciBhIGBzcGVjdHJhbF9tb2RlYCBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIGBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVJgIGFuZCBgQVRIOUtfUlhfRklMVEVSX1BIWUVSUmAuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbnRlcmVzdGluZyBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZTsgaXQmIzM5O3MgcmVsYXRlZCB0byByYWRhciBkZXRlY3Rpb24gYW5kIFBIWSBlcnJvcnMsIHdoaWNoIGNhbiBpbnZvbHZlIGNvbXBsZXggaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBidXQgb24gaXRzIG93biwgZG9lcyBub3QgcmFpc2UgYW55IEtNU0FOIHJlZCBmbGFncy4KKiAgICoqYHdtaS5jYCoqOiBUaGlzIGluY3JlbWVudHMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBjb3VudGVycy4gVGhpcyBpcyBleHBlY3RlZCwgYnV0IEkgd2FudCB0byBzZWUgKmhvdyogdGhlc2UgY291bnRlcnMgYXJlIHVzZWQuIEFyZSB0aGV5IHVzZWQgaW4gYW55IGFyaXRobWV0aWMsIG9yIHVzZWQgYXMgYXJyYXkgaW5kaWNlcz8KKiAgICoqYHdtaS5oYCoqOiBUaGlzIGFkZHMgdGhlIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgZmllbGRzIHRvIHRoZSBgc3RydWN0IHdtaWAuIE9rYXksIHRoaXMgaGVscHMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIGJ1ZmZlciBpbiB0aGUgZGVidWdmcyBlbnRyeSBsb29rcyBzbWFsbCwgYnV0IHRoYXQgbWVhbnMgaXQgY291bGQgaGF2ZSBpc3N1ZXMgaWYgdGhlIGNvdW50ZXJzIG92ZXJmbG93IGFuZCB3ZSBkb24mIzM5O3QgaGF2ZSBzYW5pdGl6YXRpb24gdG8gaGFuZGxlIHRob3NlIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgc3RydWN0IHdtaWAuIElzIGl0IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIHN0YXRpY2FsbHksIG9yIGR5bmFtaWNhbGx5PyBJZiBkeW5hbWljYWxseSwgd2hlcmU/IFRoZSBgZ3JlcHBlcmAgdG9vbCBpcyBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBhdGg5a193bWlfaW5pdGAsIGBremFsbG9jIHN0cnVjdCB3bWlgLCBvciBzaW1pbGFyIHBhdHRlcm5zIHRvIHRyYWNlIHdoZXJlIGBzdHJ1Y3Qgd21pYCBpcyBjcmVhdGVkLCBpbml0aWFsaXplZCBhbmQgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEJhc2VkIG9uIHRoZSBhbGxvY2F0aW9uLCBJIGNhbiBjb25zaWRlciBob3cgaXQmIzM5O3MgcmVmZXJlbmNlZCBhbmQgaWYgYSByYWNlIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpbiB0aGUgdXNhZ2Ugb2YgdGhlIGNvdW50ZXJzLiBUaGlzIHdpbGwgaW5mb3JtIG15IGRlY2lzaW9uIG9uIHdoZXRoZXIgYSBLTVNBTiBzZXNzaW9uIGlzIHRydWx5IG5lZWRlZCwgdG8gZXZhbHVhdGUgcmVhZC1hZnRlci1mcmVlLCB1bmluaXRpYWxpemVkLXZhbHVlIG9yIGJ1ZmZlci1vdmVyZmxvdy1iYXNlZCBtZW1vcnkgZXJyb3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX3dtaV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk3MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCBxdWVyeToKCioqQW5hbHl6aW5nIHRoZSBTZWFyY2ggUXVlcnk6IGBzdHJ1Y3Qgd21pYCBBbGxvY2F0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIFRoZSBjb3JlIGNvbmNlcm4gaXMgdGhlIGFsbG9jYXRpb24gb2YgYSBgc3RydWN0IHdtaWAgd2l0aGluIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGhlIEF0aGVyb3MgKGF0aDlrKSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgbG9va2luZyBhdCBhbGxvY2F0aW9uIGltcGxpZXMgdGhleSBhcmUgbGlrZWx5IGRlYnVnZ2luZyBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhaywgb3IgcGVyaGFwcyBhbmFseXppbmcgaG93IHRoZSBXTUkgaW50ZXJmYWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLgoKVGhlIGBzdHJ1Y3Qgd21pYCBpdHNlbGYgaXMgYSBrZXkgZGF0YSBzdHJ1Y3R1cmUuIEkmIzM5O2QgbmVlZCB0byByZW1lbWJlciB3aGF0IGl0IHJlcHJlc2VudHMgaW4gdGhlIEF0aGVyb3MgY29udGV4dCDigJMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlLiBLbm93aW5nIGl0cyBwdXJwb3NlIGlzIGNyaXRpY2FsOyBpdCBpbmZvcm1zIG15IG5leHQgc3RlcHMuIEFyZSB3ZSBsb29raW5nIGF0ICp3aGVyZSogaXQmIzM5O3MgYWxsb2NhdGVkLCAqaG93IG9mdGVuKiwgb3IgcGVyaGFwcyBob3cgaXQmIzM5O3MgaGFuZGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBkYXRhIHRyYW5zZmVyLCBvciBzaHV0ZG93bj8KClRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AgZGlyZWN0b3J5IGlzIHRoZSB0YXJnZXQuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUgKnNpZ25pZmljYW50bHkqLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5OiBsaWtlbHkgdmFyaW91cyAuYyBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzZWFyY2ggdG9vbHMgbGlrZSBgZ3JlcGAsIGBnaXQgZ3JlcGAsIG9yIGV2ZW4gYSBjb2RlLWJyb3dzaW5nIHRvb2wgbGlrZSBgTFhSYCB0byBwZXJmb3JtIHRoZSBhY3R1YWwgc2VhcmNoLiBLbm93aW5nIHRoZSBleGFjdCBmaWxlIG5hbWVzIHdpdGhpbiB0aGF0IHBhdGggaXNuJiMzOTt0IG5lY2Vzc2FyeSwgYnV0IGhlbHBzIHRvIGJlIG1ldGhvZGljYWwgaW4gbXkgYXBwcm9hY2guCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tb24gYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBrbWFsbG9jYCwgYGt6YWxsb2NgLCBgdm1hbGxvY2AsIG9yIHBlcmhhcHMgY3VzdG9tIGFsbG9jYXRvciBmdW5jdGlvbnMgZGVmaW5lZCB3aXRoaW4gdGhhdCBjb2RlIGJhc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHBsYWNlbWVudCBuZXcgb3BlcmF0b3JzLCBpZiBDJiM0MzsmIzQzOyBpcyBiZWluZyB1c2VkIGluIHRoZSBkcml2ZXIuIFRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGxpa2VseSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBleGFjdCBhbGxvY2F0aW9uLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBmdW5jdGlvbnM/IFdoZXJlIGlzIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIHN0b3JlZD8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyb3VuZCBpdHMgdXNhZ2U/CgpVbHRpbWF0ZWx5LCB0aGlzIHJlcXVlc3QgcG9pbnRzIHRvIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHBvdGVudGlhbGx5IHRoZSBsaWZlY3ljbGUgb2YgYSBrZXkgZGF0YSBzdHJ1Y3R1cmUgd2l0aGluIGFuIGltcG9ydGFudCBrZXJuZWwgZHJpdmVyLiBJJiMzOTttIHJlYWR5IHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvYy4qd21pJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjk1Olx0d21pID0ga3phbGxvY19vYmooc3RydWN0IHdtaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtOTYtXHRpZiAoIXdtaSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzMQoJCQkJCQkJb3V0cHV0OiAyNTYKCQkJCQkJCXRob3VnaHRzOiA4NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5pbml0aWFsaXplZCBNZW1vcnkgUmlzayBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYHdtaWAgc3RydWN0LiBJdCYjMzk7cyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWVhbnMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHJpZ2h0IG9mZiB0aGUgYmF0LiBObyB3b3JyaWVzIHRoZXJlLgoKTm93LCBgcmVhZF9maWxlX3dtaWAuIEkmIzM5O20gdXNpbmcgYHNjbnByaW50ZmAgdG8gZm9ybWF0IHRoZSBkYXRhIGludG8gYSBidWZmZXIgYGJ1ZmAuIGBzY25wcmludGZgIGdpdmVzIG1lIHRoZSBsZW5ndGgsIGBsZW5gLCBvZiB0aGUgZm9ybWF0dGVkIHN0cmluZy4gVGhlbiwgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYCBpcyB1c2VkLCByZWFkaW5nIGV4YWN0bHkgYGxlbmAgYnl0ZXMgZnJvbSBgYnVmYCB0byB0aGUgdXNlciBidWZmZXIuIGBzY25wcmludGZgIGd1YXJhbnRlZXMgdGhhdCBgYnVmYCYjMzk7cyBmaXJzdCBgbGVuYCBieXRlcyBhcmUgaW5pdGlhbGl6ZWQsIHNvIHRoZXJlJiMzOTtzIG5vIHdheSBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgIGlzIGdvaW5nIHRvIGxlYWsgdW5pbml0aWFsaXplZCBkYXRhLiBQZXJmZWN0LgoKTmV4dCwgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLiBUaGlzIG9uZSBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGp1c3QgYm9vbGVhbiBsb2dpYyBvbiBgc3BlY3RyYWxfbW9kZWAgYW5kIHNvbWUgYml0d2lzZSBhcml0aG1ldGljLiBgcmZpbHRgIGlzIGluaXRpYWxpemVkIHRvIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgIGFuZCB0aGVuIGJpdHdpc2UgT1ImIzM5O2QuICBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZCBhdCBhbnkgcG9pbnQuCgpJIHdhbnQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBvZiBgcHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGFuZCBgcHJpdi0mZ3Q7cnhmaWx0ZXJgLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCB0aGUgY29kZSBpcyB1c2luZyB0aGVtIGFzIG9uZSB3b3VsZCBleHBlY3QuIE5vdGhpbmcganVtcHMgb3V0IGFzIHByb2JsZW1hdGljIGluIHRoZSBpbW1lZGlhdGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgcGF0Y2ggYXMgYSB3aG9sZS4gV2hhdCBoYXZlIHdlIGdvdD8gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGlzIGp1c3Qgc2ltcGxlIGJpdCBtYW5pcHVsYXRpb24uIGBhdGg5a193bWlfY21kYCBpcyBpbmNyZW1lbnRpbmcgY291bnRlcnMgaW4gdGhlIGB3bWlgIHN0cnVjdC4gYHJlYWRfZmlsZV93bWlgIGlzIHRoZSByZWFkaW5nIHRoZSBjb3VudGVycywgZm9ybWF0dGluZyB0aGUgb3V0cHV0LCBhbmQgdXNpbmcgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gQW5kLCBmaW5hbGx5LCB3ZSBoYXZlIGRlYnVnZnMgZmlsZSBjcmVhdGlvbi4KClRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8gbGVha2FnZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGhlcmU/CgoqICAgYHdtaWAgaXMgYGt6YWxsb2NgJiMzOTtkLiAgQ291bnRlcnMgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uIERvbmUuCiogICBgYnVmYCBpbiBgcmVhZF9maWxlX3dtaWAgaXMgY2FyZWZ1bGx5IGhhbmRsZWQuICBgc2NucHJpbnRmYCB3cml0ZXMgaW5pdGlhbGl6ZWQgY2hhcmFjdGVycywgYW5kIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgY29waWVzIGV4YWN0bHkgdGhlIGluaXRpYWxpemVkIHBvcnRpb24uIE5vIHByb2JsZW0uCiogICBgY2FsY3J4ZmlsdGVyYCBvcGVyYXRlcyBvbiBpbml0aWFsaXplZCBmaWVsZHMgYW5kIHJldHVybnMgYSBiaXRtYXNrLiBHb29kIHRvIGdvLgoqICAgTm8gYGNvcHlfdG9fdXNlcmAgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3RzIG9yIHBhZGRpbmcgaXMgaGFwcGVuaW5nLgoqICAgVGhlIGNvbnRyb2wgZmxvdyBkb2VzbiYjMzk7dCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCBkYXRhLgoKQ29uY2x1c2lvbjogVGhpcyBwYXRjaCBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOLCBldGMuKSBzaG91bGQgYmUgc3VmZmljaWVudC4gV2UgKipkbyBub3QgbmVlZCBLTVNBTioqIChgTmVlZHNLTVNBTj1mYWxzZWApLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYE5lZWRzS01TQU49dHJ1ZWA6CgoxLiAgS2VybmVsIHN0cnVjdHMgc2VudCB0byB1c2Vyc3BhY2Ugd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uCjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCjMuICBDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby4KNC4gIEJvdW5kcyBjaGVja3MvbGVuZ3RocyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZSBhY2Nlc3M/IE5vcGUuCgpBbGwgY2xlYXIuIGByZWFkX2ZpbGVfd21pYCBpcyBzYWZlLiBgd21pYCBpcyB6ZXJvLWluaXRpYWxpemVkLiBUaGUgZmlsdGVyIGNhbGN1bGF0aW9uIGlzIHNvdW5kLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgZXhwbGFpbiB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMi42NTQzMDYwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUzMjY1NDE4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICAgIFwiYXRoOWtfd21pX2NtZFwiLFxuICAgIFwicmVhZF9maWxlX3dtaVwiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZWJ1Z2ZzIGZpbGUgKFxcXCJ3bWlcXFwiKSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cXG5cXG4xLiBgc3RydWN0IHdtaWAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBzbyB0aGUgbmV3IGNvdW50ZXIgZmllbGRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBjcmVhdGlvbi5cXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxcbjMuIFRoZSBtb2RpZmljYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBvbmx5IGFsdGVyIGJpdHdpc2UgZmxhZyBvcGVyYXRpb25zIG9uIGluaXRpYWxpemVkIHZhcmlhYmxlcy5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGF0aDlrX2h0YyBVU0Igd2lyZWxlc3MgZHJpdmVyIGJ5IHVwZGF0aW5nIHRoZSBSWCBmaWx0ZXIgY2FsY3VsYXRpb24gbG9naWMgKGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIpIHRvIGNoZWNrIHNwZWN0cmFsIG1vZGUsIHRyYWNraW5nIGlzc3VlZCBhbmQgdGltZWQgb3V0IFdNSSBjb21tYW5kIHN0YXRpc3RpY3MgaW4gYXRoOWtfd21pX2NtZCwgYW5kIGV4cG9zaW5nIHRoZW0gdmlhIGEgbmV3IGRlYnVnZnMgZW50cnkgKHJlYWRfZmlsZV93bWkpLiBTaW5jZSBhdGg5a19odGMgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjEyLjY1NDMxMTgyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5ODc4MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC0zMTAsNiArMzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHtcXG4gXFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxcbiB9O1xcbiBcXG4rc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3dtaShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbitcXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbit7XFxuK1xcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4rXFx0Y2hhciBidWZbMTI4XTtcXG4rXFx0dW5zaWduZWQgaW50IGxlbjtcXG4rXFxuK1xcdGxlbiA9IHNjbnByaW50ZihidWYsIHNpemVvZihidWYpLFxcbitcXHRcXHRcXHRcXFwiJTIwcyA6ICUxMHVcXFxcblxcXCJcXG4rXFx0XFx0XFx0XFxcIiUyMHMgOiAlMTB1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXFwiSXNzdWVkXFxcIiwgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VjbWRzX2lzc3VlZCxcXG4rXFx0XFx0XFx0XFxcIlRpbWVvdXRzXFxcIiwgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VjbWRzX3RpbWVkX291dCk7XFxuK1xcbitcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xcbitcXHQucmVhZCA9IHJlYWRfZmlsZV93bWksXFxuK1xcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuK1xcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbitcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuK307XFxuK1xcbiBzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcXVldWUoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4gXFx0XFx0XFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbiB7XFxuQEAgLTUwNSw2ICs1MjgsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuIFxcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzbG90XFxcIiwgMDQwMCwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuIFxcdFxcdFxcdCAgICBwcml2LCBcXHUwMDI2Zm9wc19zbG90KTtcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwid21pXFxcIiwgMDQwMCwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuK1xcdFxcdFxcdCAgICBwcml2LCBcXHUwMDI2Zm9wc193bWkpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJxdWV1ZVxcXCIsIDA0MDAsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHQgICAgcHJpdiwgXFx1MDAyNmZvcHNfcXVldWUpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZWJ1Z1xcXCIsIDA2MDAsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcXG5pbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xcbkBAIC04NjgsMTQgKzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbiAgKi9cXG4gdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbiB7XFxuLSNkZWZpbmVcXHRSWF9GSUxURVJfUFJFU0VSVkUgKEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlIgfCBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIpXFxuLVxcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHByaXYtXFx1MDAzZWFoO1xcbiBcXHR1MzIgcmZpbHQ7XFxuIFxcbi1cXHRyZmlsdCA9IChhdGg5a19od19nZXRyeGZpbHRlcihhaCkgXFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXFxuLVxcdFxcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXFxuLVxcdFxcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xcbitcXHRyZmlsdCA9IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVCB8XFxuK1xcdFxcdEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcXG4rXFx0XFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSIHwgQVRIOUtfUlhfRklMVEVSX1BIWUVSUjtcXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2VyeGZpbHRlciBcXHUwMDI2IEZJRl9QUk9CRV9SRVEpXFxuIFxcdFxcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTtcXG5AQCAtOTA2LDggKzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4gXFx0XFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcXG4gXFxuIFxcdHJldHVybiByZmlsdDtcXG4tXFxuLSN1bmRlZiBSWF9GSUxURVJfUFJFU0VSVkVcXG4gfVxcbiBcXG4gLypcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXFxuaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG5AQCAtMzQ1LDggKzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0d21pLVxcdTAwM2VjbWRzX2lzc3VlZCsrO1xcbiBcXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNndtaS1cXHUwMDNlY21kX3dhaXQsIHRpbWVvdXQpO1xcbiBcXHRpZiAoIXRpbWVfbGVmdCkge1xcbitcXHRcXHR3bWktXFx1MDAzZWNtZHNfdGltZWRfb3V0Kys7XFxuIFxcdFxcdGF0aF9kYmcoY29tbW9uLCBXTUksIFxcXCJUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcXG5pbmRleCA1YzNiNzEwYjhmMzE5Li5lZTcyYjBmYmEzMWIyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbkBAIC0xNTgsNiArMTU4LDggQEAgc3RydWN0IHdtaSB7XFxuIFxcdHU4ICpjbWRfcnNwX2J1ZjtcXG4gXFx0dTMyIGNtZF9yc3BfbGVuO1xcbiBcXHRib29sIHN0b3BwZWQ7XFxuK1xcdHUzMiBjbWRzX2lzc3VlZDtcXG4rXFx0dTMyIGNtZHNfdGltZWRfb3V0O1xcbiBcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX3R4X2V2ZW50cztcXG4gXFx0c3BpbmxvY2tfdCBldmVudF9sb2NrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMy4zNDUxODIxMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM2NzI5MjYxMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a19odGNfY2FsY3J4ZmlsdGVyXCIsXG4gICAgXCJhdGg5a193bWlfY21kXCIsXG4gICAgXCJyZWFkX2ZpbGVfd21pXCIsXG4gICAgXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGF0aDlrX2h0YyBVU0Igd2lyZWxlc3MgZHJpdmVyIGJ5IHVwZGF0aW5nIHRoZSBSWCBmaWx0ZXIgY2FsY3VsYXRpb24gbG9naWMgKGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIpIHRvIGNoZWNrIHNwZWN0cmFsIG1vZGUsIHRyYWNraW5nIGlzc3VlZCBhbmQgdGltZWQgb3V0IFdNSSBjb21tYW5kIHN0YXRpc3RpY3MgaW4gYXRoOWtfd21pX2NtZCwgYW5kIGV4cG9zaW5nIHRoZW0gdmlhIGEgbmV3IGRlYnVnZnMgZW50cnkgKHJlYWRfZmlsZV93bWkpLiBTaW5jZSBhdGg5a19odGMgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbkBAIC0zMTAsNiArMzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHtcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiB9O1xuIFxuK3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbitcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuK3tcbitcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuK1x0Y2hhciBidWZbMTI4XTtcbitcdHVuc2lnbmVkIGludCBsZW47XG4rXG4rXHRsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSxcbitcdFx0XHRcIiUyMHMgOiAlMTB1XFxuXCJcbitcdFx0XHRcIiUyMHMgOiAlMTB1XFxuXCIsXG4rXHRcdFx0XCJJc3N1ZWRcIiwgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc19pc3N1ZWQsXG4rXHRcdFx0XCJUaW1lb3V0c1wiLCBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX3RpbWVkX291dCk7XG4rXG4rXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xuK1x0LnJlYWQgPSByZWFkX2ZpbGVfd21pLFxuK1x0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbitcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuK1x0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuK307XG4rXG4gc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3F1ZXVlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4gXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuIHtcbkBAIC01MDUsNiArNTI4LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInNsb3RcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc19zbG90KTtcbitcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ3bWlcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc193bWkpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInF1ZXVlXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfcXVldWUpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImRlYnVnXCIsIDA2MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG5pbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbkBAIC04NjgsMTQgKzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuICAqL1xuIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiB7XG4tI2RlZmluZVx0UlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKVxuLVxuIFx0c3RydWN0IGF0aF9odyAqYWggPSBwcml2LVx1MDAzZWFoO1xuIFx0dTMyIHJmaWx0O1xuIFxuLVx0cmZpbHQgPSAoYXRoOWtfaHdfZ2V0cnhmaWx0ZXIoYWgpIFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xuK1x0cmZpbHQgPSBBVEg5S19SWF9GSUxURVJfVUNBU1QgfCBBVEg5S19SWF9GSUxURVJfQkNBU1QgfFxuK1x0XHRBVEg5S19SWF9GSUxURVJfTUNBU1Q7XG4rXG4rXHRpZiAocHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcbitcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSIHwgQVRIOUtfUlhfRklMVEVSX1BIWUVSUjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZXJ4ZmlsdGVyIFx1MDAyNiBGSUZfUFJPQkVfUkVRKVxuIFx0XHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUFJPQkVSRVE7XG5AQCAtOTA2LDggKzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcbiBcbiBcdHJldHVybiByZmlsdDtcbi1cbi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFXG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0zNDUsOCArMzQ1LDEwIEBAIGludCBhdGg5a193bWlfY21kKHN0cnVjdCB3bWkgKndtaSwgZW51bSB3bWlfY21kX2lkIGNtZF9pZCxcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuK1x0d21pLVx1MDAzZWNtZHNfaXNzdWVkKys7XG4gXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2d21pLVx1MDAzZWNtZF93YWl0LCB0aW1lb3V0KTtcbiBcdGlmICghdGltZV9sZWZ0KSB7XG4rXHRcdHdtaS1cdTAwM2VjbWRzX3RpbWVkX291dCsrO1xuIFx0XHRhdGhfZGJnKGNvbW1vbiwgV01JLCBcIlRpbWVvdXQgd2FpdGluZyBmb3IgV01JIGNvbW1hbmQ6ICVzXFxuXCIsXG4gXHRcdFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuQEAgLTE1OCw2ICsxNTgsOCBAQCBzdHJ1Y3Qgd21pIHtcbiBcdHU4ICpjbWRfcnNwX2J1ZjtcbiBcdHUzMiBjbWRfcnNwX2xlbjtcbiBcdGJvb2wgc3RvcHBlZDtcbitcdHUzMiBjbWRzX2lzc3VlZDtcbitcdHUzMiBjbWRzX3RpbWVkX291dDtcbiBcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ190eF9ldmVudHM7XG4gXHRzcGlubG9ja190IGV2ZW50X2xvY2s7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMy4zNDUxODQ2ODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODg4MDQwMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCdzIGZ1enppbmcgdmlhYmlsaXR5LiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyB0aGluZyB1cCBhbmQgcnVubmluZyBmb3IgZnV6emluZz8gQW5kLCBjcml0aWNhbGx5LCB3aGF0IGFyZSB0aGUga2V5IHN5bWJvbHMsIHRoZSBmb2N1cyBwb2ludHMsIHRoYXQgSSBzaG91bGQgc3BlY2lmeSB0byBtYXhpbWl6ZSB0aGUgZnV6emluZydzIGVmZmVjdGl2ZW5lc3M/XG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgbW9kaWZpZWQgZmlsZXMuIExldCdzIHNlZS4uLiB3ZSd2ZSBnb3Q6XG5cbiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY2BcbiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jYFxuKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgXG4qICAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGBcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBhdGg5a19odGNgLCBhIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgQXRoZXJvcyBBUjkyNzEgYW5kIEFSNzAxMCBjaGlwc2V0cy4gQSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZiEgVGhlIGNvcmUgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIGBhdGg5a19odGNgIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uIHdpdGhpbiBhIGZ1enplciBsaWtlIHN5emthbGxlci4gQ2FuIHdlIHVzZSByYXctZ2FkZ2V0LCB0aGUgdXNiLWZ1enplciwgb3IgcGVyaGFwcyB2aGNpIG9yIGR1bW15XFxfaGNkIHRvIGdldCB0aGlzIGRyaXZlciBleGVyY2lzaW5nP1xuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBgYXRoOWtgIHN1YnN5c3RlbSB0byBjb25maXJtIG15IHN1c3BpY2lvbnMgYW5kIHRvIHZlcmlmeSB0aGUgYXBwcm9wcmlhdGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MTguMjMzMjI3NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MDk0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MjE9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NDI6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDUzPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ1Ni1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NTc6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NzE9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTc6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODU9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MTguMzcyMzI4NjQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAyNjY1NjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBBVEg5S19IVEMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gVGhlIG1lbnRhbCBtb2RlbCBkaWN0YXRlcyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uIGZvciB0aGUgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHBhcnQgY29uY2VybmluZyBBVEg5S19IVEMuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSBsb29raW5nIGZvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgcHJvYmFibHkgbmFtZWQgXCJLY29uZmlnLFwiIHNpdHVhdGVkIHdpdGhpbiB0aGUgXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCIgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhhdCBcIkFUSDlLX0hUQ1wiIGlzIGEgcmVsZXZhbnQgc3ltYm9sIG9yIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLCBwb3RlbnRpYWxseSBhIGZlYXR1cmUgZmxhZywgZGVwZW5kZW5jeSwgb3IgYSBjb25kaXRpb25hbCBidWlsZCBzZXR0aW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3MgOWsgZHJpdmVyIGFuZCB0aGUgSG9zdCBUcmFuc3BvcnQgQ29udHJvbGxlciAoSFRDKSBmcmFtZXdvcmsuIEl0J3MgcHJvYmFibHkga2V5IHRvIGhvdyB0aGUgYXRoOWsgZHJpdmVyIGludGVyYWN0cyB3aXRoIGEgY2VydGFpbiBzZXQgb2YgaGFyZHdhcmUgb3IgZmlybXdhcmUuIEknbSBleHBlY3RpbmcgdGhpcyB0byBzaGVkIGxpZ2h0IG9uIGhvdyB0aGlzIGFzcGVjdCBvZiB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBjb25maWd1cmVkLCBvciBpdHMgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MjksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToyMC4zOTg5ODY5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MjAuNDAxMTI5NTA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ2MjY2NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGF0aDlrX2h0YyBEcml2ZXIgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHRvIHRoZSBgYXRoOWtfaHRjYCBVU0Igd2lyZWxlc3MgbmV0d29yayBkcml2ZXIsIHdoaWNoLCBpbXBvcnRhbnRseSwgcmVsaWVzIG9uIFVTQiBhbmQgTUFDODAyMTEuICBHb29kLCB0aGF0IG1lYW5zIHdlIGNhbiBsaWtlbHkgcG9rZSBhdCBpdCB1c2luZyBVU0IgZW11bGF0aW9uIHdpdGhpbiBvdXIgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaS4gTWFrZXMgdGVzdGluZyB0aGlzIG11Y2ggbW9yZSBtYW5hZ2VhYmxlLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZXMsIEkndmUgaWRlbnRpZmllZCBmb3VyIGtleSBhcmVhczpcblxuMS4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jYDogVGhpcyBpcyBzdHJhaWdodGZvcndhcmQuIFRoZXkndmUgYWRkZWQgYSBgcmVhZF9maWxlX3dtaWAgZGVidWdmcyBoYW5kbGVyLiBFZmZlY3RpdmVseSwgYSBuZXcgZGVidWdmcyBmaWxlIGBcIndtaVwiYCBoYXMgYmVlbiBjcmVhdGVkIGluc2lkZSBgYXRoOWtfaHRjX2luaXRfZGVidWdgLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXM7IGEgbmV3IG1lY2hhbmlzbSBmb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbi5cblxuMi4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNgOiBUaGUgY2hhbmdlIHRvIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGhvdyB3ZSBjb21wdXRlIHRoZSByZWNlaXZlIGZpbHRlci4gIE9yaWdpbmFsbHksIHRoZSBmaWx0ZXIgbG9naWMgcHJlc2VydmVkIGFuIGV4aXN0aW5nIGBSWF9GSUxURVJfUFJFU0VSVkVgIG1hc2suICBOb3csIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4gIEluc3RlYWQsIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgLCBgQVRIOUtfUlhfRklMVEVSX0JDQVNUYCwgYW5kIGBBVEg5S19SWF9GSUxURVJfTUNBU1RgIGFyZSBhbHdheXMgZW5hYmxlZC4gQ3JpdGljYWxseSwgdGhlcmUncyBhbHNvIG5vdyBhIGNvbmRpdGlvbmFsIHRoYXQgaW5jbHVkZXMgYEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUmAgYW5kIGBBVEg5S19SWF9GSUxURVJfUEhZRVJSYCBvbmx5IGlmIGBwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlYCBpcyAqbm90KiBgU1BFQ1RSQUxfRElTQUJMRURgLiBUaGlzIGlzIGEgYmlnIGNoYW5nZSwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgY2VydGFpbiB0eXBlcyBvZiBwYWNrZXRzIG9yIGludGVyZmVyZW5jZSBkZXRlY3Rpb24sIGJ1dCBvbmx5IHdoZW4gc3BlY3RyYWwgbW9kZSBpcyBlbmFibGVkLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiB0aGUgUlggYmVoYXZpb3IuIEkgd29uZGVyIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYmFzZSBmaWx0ZXIgc2V0dGluZ3MsIHdoaWNoIGFyZSBubyBsb25nZXIgcHJlc2VydmVkP1xuXG4zLiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2A6ICBIZXJlLCBgYXRoOWtfd21pX2NtZGAgbm93IGluY3JlbWVudHMgY291bnRlcnMgYHdtaS1cdTAwM2VjbWRzX2lzc3VlZGAgYW5kIGB3bWktXHUwMDNlY21kc190aW1lZF9vdXRgIHdoZW4gdGltZW91dHMgb2NjdXIuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGVyZSB3ZXJlIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBjb21tYW5kIHRpbWVvdXRzLiBUaGVzZSBjb3VudGVycyB3aWxsIGxpa2VseSBnaXZlIGluc2lnaHRzIGludG8gdGhlIGNvbW1hbmQgZmFpbHVyZXMgb3IgbmV0d29yayBpbnN0YWJpbGl0aWVzLlxuXG40LiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGA6ICBUaGlzIGlzIGp1c3QgdGhlIGFkZGl0aW9uIG9mIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIHN1cHBvcnQgZm9yIHRoZSB1cGRhdGVkIGNvbW1hbmQgdHJhY2tpbmcuXG5cblNvLCB3aGVyZSBpcyBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAgY2FsbGVkPyAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzICpjYWxsaW5nKiB0aGF0IFJYIGZpbHRlciBmdW5jdGlvbi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXA7IHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI3MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjI4Ljg2Mzc5ODM4MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2Njc5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01OTk9dm9pZCBhdGg5a19yeF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjYwMDp1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTI1Nz1zdGF0aWMgdm9pZCBhdGg5a19odGNfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xMjc3LVxcdHByaXYtXFx1MDAzZXJ4ZmlsdGVyID0gKnRvdGFsX2ZsYWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxMjc4OlxcdHJmaWx0ID0gYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTI3OS1cXHRhdGg5a19od19zZXRyeGZpbHRlcihwcml2LVxcdTAwM2VhaCwgcmZpbHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg2OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODY5OnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05MTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX29wbW9kZV9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MTktXFx0LyogY29uZmlndXJlIHJ4IGZpbHRlciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo5MjA6XFx0cmZpbHQgPSBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MjEtXFx0YXRoOWtfaHdfc2V0cnhmaWx0ZXIoYWgsIHJmaWx0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MjguOTY5NDc0ODgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzE4Mzc3NjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgTnVsbCBQb2ludGVyIERlcmVmZXJlbmNlKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGByZWFkX2ZpbGVfd21pYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyBgcmVhZF9maWxlX3dtaWAgaXMgZGlyZWN0bHkgYWNjZXNzaW5nIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX2lzc3VlZGAgYW5kIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX3RpbWVkX291dGAuICpIb2xkIG9uIGEgbWludXRlLiogVGhlIG5hZ2dpbmcgcXVlc3Rpb24gaXM6IHdoYXQgaWYgYHByaXYtXHUwMDNld21pYCBpcyBOVUxMIGF0IHRoYXQgcG9pbnQ/IElzIHRoZXJlIGEgY29uZGl0aW9uIHRoYXQgZ3VhcmFudGVlcyB0aGF0IGBwcml2LVx1MDAzZXdtaWAgaXMgYWx3YXlzIGluaXRpYWxpemVkIGJlZm9yZSBgcmVhZF9maWxlX3dtaWAgaXMgZXZlciBjYWxsZWQ/IERvZXMgdGhlIGRlYnVnZnMgaW5pdGlhbGl6YXRpb24gb3IgZmlsZSBjcmVhdGlvbiBzb21laG93IGd1YXJhbnRlZSB0aGF0IGBwcml2LVx1MDAzZXdtaWAgaXMgbm9uLU5VTEw/IEkgbmVlZCB0byBjaGVjayB0aG9zZSBpbml0aWFsaXphdGlvbiBwYXRocy4gSSBiZXR0ZXIgZ28gdGhyb3VnaCBgaHRjX2Rydl9pbml0LmNgIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYCB0byB0cmFjZSB0aGUgdmFyaWFibGUncyBsaWZlY3ljbGUuIEknbGwgcHJvYmFibHkgYmUgaHVudGluZyBmb3Igd2hlcmUgYHByaXYtXHUwMDNld21pYCBpcyBhbGxvY2F0ZWQgYW5kIGFzc2lnbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDExMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTozNi4xNTMyNTQyOTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDEwNzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0My0jaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0NDppbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDUtdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Ni0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDc6c3RhdGljIGlubGluZSBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpIHsgcmV0dXJuIDA7IH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0OC1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTUwMD12b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo1MDU6aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4ODk6XFx0ZXJyb3IgPSBhdGg5a19odGNfaW5pdF9kZWJ1Zyhwcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg5MC1cXHRpZiAoZXJyb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MzYuMjY3MzY4MTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMjc2MDgzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgQXRoOWtfaHRjIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhpcyBwYXRjaCB0YXJnZXRpbmcgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYHJlYWRfZmlsZV93bWlgLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGJ5IHN5emthbGxlciBmdXp6aW5nLlxuXG5NeSBhbmFseXNpcyBpbW1lZGlhdGVseSBwb2ludHMgdG8gYSBwb3NpdGl2ZSBhbnN3ZXIuIFVTQiB3aWZpIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgUmF3IEdhZGdldCB3aXRoaW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGtub3cgdGhhdCBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAgc3lzY2FsbHMsIGNvbWJpbmVkIHdpdGggZGVidWdmcyByZWFkcywgY2FuIGludGVyYWN0IHdpdGggYGF0aDlrX2h0Y2AuIEZ1cnRoZXJtb3JlLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAgZ2V0cyBjYWxsZWQgZHVyaW5nIHBhY2tldCBmaWx0ZXIgY29uZmlndXJhdGlvbiBhbmQgb3Btb2RlIGluaXRpYWxpemF0aW9uLiAgYGF0aDlrX3dtaV9jbWRgIGlzIGRpcmVjdGx5IGludm9sdmVkIHdoZW5ldmVyIGEgV01JIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgZmlybXdhcmUgb3ZlciBVU0IsIGFuZCBgcmVhZF9maWxlX3dtaWAgaXMgYSBkZWJ1Z2ZzIHJlYWQgaGFuZGxlci5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWE6IFwiV29ydGhGdXp6aW5nPXRydWVcIiBpZiB0aGUgcGF0Y2ggaW1wYWN0cyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBlc3BlY2lhbGx5IHdpdGhpbiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMuIFNpbmNlIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcGVyZmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIGFuZCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBSWCBmaWx0ZXIgbG9naWMsIGFkZHMgV01JIHN0YXRzLCBhbmQgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgdGhpcyBjbGVhcmx5IGhpdHMgdGhlIFwicmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZVwiIGNyaXRlcmlhLiBXb3J0aEZ1enppbmcgaGFzIHRvIGJlIHNldCB0byB0cnVlLlxuXG5OZXh0LCBJIG5lZWQgdG8gbGlzdCB0aGUgRm9jdXNTeW1ib2xzLCBzbyBJIHdpbGwgbGlzdCB0aGUgbW9kaWZpZWQgc3ltYm9sczogYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGFuZCBgcmVhZF9maWxlX3dtaWAuIEFsc28sIHRoZSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGRlYnVnZnMgZmlsZSwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgbmVlZHMgdG8gYmUgYWRkZWQuXG5cbk5vdyB0aGUgc3RhdGljIHZzLiBub24tc3RhdGljIHN5bWJvbHMgYXJlIGltcG9ydGFudC4gYHJlYWRfZmlsZV93bWlgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYyB3aXRoaW4gYGh0Y19kcnZfZGVidWcuY2AuIEhvd2V2ZXIsIHNpbmNlIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCB1c2VkIGluIGBmb3BzX3dtaS5yZWFkID0gcmVhZF9maWxlX3dtaWAsIGl0IHdpbGwgYmUgYSBkaXN0aW5jdCBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGUuIE9uIHRoZSBvdGhlciBoYW5kLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAsIGBhdGg5a193bWlfY21kYCwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgYXJlIG5vbi1zdGF0aWMgc3ltYm9scy5cblxuU28sIGxldCdzIGNvbmZpcm0gdGhlIGNvbXBsZXRlIHNldCBvZiBzeW1ib2xzOiBgcmVhZF9maWxlX3dtaWAsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYW5kIGBhdGg5a193bWlfY21kYC5cblxuRmluYWxseSwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYXJlIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBhcmUgZXhwZWN0ZWQuIGBBVEg5S19IVENfREVCVUdGU2AgdGhlbiBkZXBlbmRzIG9uIGBBVEg5S19IVENgIGFuZCBgREVCVUdfRlNgLiBBbmQgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgZGVwZW5kcyBvbiBlaXRoZXIgYEFUSDlLX0RFQlVHRlNgIG9yIGBBVEg5S19IVENfREVCVUdGU2AuIEkgbm90ZSB0aGF0IGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgc3BlY19wcml2LnNwZWN0cmFsX21vZGVgLiBJIG5lZWQgdG8gZ3JlcCBmb3IgYm90aCBgc3BlY19wcml2YCBhbmQgYHNwZWN0cmFsX21vZGVgIHRvIGVuc3VyZSBubyBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTExMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTo0NC4yOTQ5ODAzMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTg2NjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGVjX3ByaXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjQ6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM9MjM9c3RhdGljIGludCBhdGhfc2V0X2NoYW5uZWwoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk1LVxcdFxcdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFxcdTAwMjZjb21tb24tXFx1MDAzZW9wX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTY6XFx0XFx0XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTc6XFx0XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMj1zdGF0aWMgczggZml4X3Jzc2lfaW52X29ubHkodTggcnNzaV92YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI5OnN0YXRpYyB2b2lkIGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmZ0X3NhbXBsZV90bHYgKmZmdF9zYW1wbGVfdGx2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTMyLVxcdGludCBsZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjMzOlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zNy1cXHRcXHQgc2l6ZW9mKCpmZnRfc2FtcGxlX3Rsdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjM4OlxcdHJlbGF5X3dyaXRlKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuLCBmZnRfc2FtcGxlX3RsdiwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEyNz10eXBlZGVmIGludCAoYXRoX2Ntbl9mZnRfc2FtcGxlX2hhbmRsZXIpIChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEyODpcXHRcXHRcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEyOS1cXHRcXHRcXHR1OCAqc2FtcGxlX2J1ZiwgdTY0IHRzZiwgdTE2IGZyZXEsIGludCBjaGFuX3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEzMj1hdGhfY21uX3Byb2Nlc3NfaHQyMF9mZnQoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzM6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMzQtXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM3LVxcdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjAgZmZ0X3NhbXBsZV8yMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTM4OlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzOTpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTE0MC1cXHRzdHJ1Y3QgYXRoX2h0MjBfbWFnX2luZm8gKm1hZ19pbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjMwOlxcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjM2PWF0aF9jbW5fcHJvY2Vzc19odDIwXzQwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzNzpcXHRcXHRcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzOC1cXHRcXHRcXHR1OCAqc2FtcGxlX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yNDEtXFx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMF80MCBmZnRfc2FtcGxlXzQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDI6XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQzOlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQ0LVxcdHN0cnVjdCBhdGg5a19od19jYWxfZGF0YSAqY2FsZGF0YSA9IGFoLVxcdTAwM2VjYWxkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDA3OlxcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NDQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDQ5OmF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTMtXFx0c3RydWN0IHJjaGFuX2J1ZiAqYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NTQ6XFx0c3RydWN0IHJjaGFuICpyYyA9IHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDY4LS8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Njk6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzAtXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3NDpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzUtXFx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MDU6XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA2LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTExOlxcdHJldCA9IGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMi1cXHRpZiAocmV0ID09IDEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjYyNDpcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjUtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjQxLVxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDI6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NDMtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NjkwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjkzOlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjk0LVxcdGNoYXIgKm1vZGUgPSBcXFwiXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5NzpcXHRzd2l0Y2ggKHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTgtXFx0Y2FzZSBTUEVDVFJBTF9ESVNBQkxFRDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03MTU9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcxNjpcXHRcXHRcXHRcXHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MTg6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MTktXFx0dTMyIHJ4ZmlsdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI5OlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc0Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzQzOlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgc3BlY19wcml2LVxcdTAwM2VzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQ0LVxcdGF0aDlrX2h3X29wcyhhaCktXFx1MDAzZXNwZWN0cmFsX3NjYW5fdHJpZ2dlcihhaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzQ5PWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzUwOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cXHRcXHRcXHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjEtXFx0Y2FzZSBTUEVDVFJBTF9ESVNBQkxFRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYyOlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc2My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjctXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2ODpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuZGxlc3MgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njk6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzcwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3Mi1cXHRjYXNlIFNQRUNUUkFMX01BTlVBTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzczOlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc3NDpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgwLVxcdGF0aF9wc19vcHMoY29tbW9uKS1cXHUwMDNld2FrZXVwKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4MTpcXHRhdGg5a19od19vcHMoYWgpLVxcdTAwM2VzcGVjdHJhbF9zY2FuX2NvbmZpZyhhaCwgXFx1MDAyNnNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODItXFx0YXRoX3BzX29wcyhjb21tb24pLVxcdTAwM2VyZXN0b3JlKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzg0OlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSA9IHNwZWN0cmFsX21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03OTA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc5My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NTpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTYtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgwOC1cXHRpZiAoc3RybmNtcChcXFwidHJpZ2dlclxcXCIsIGJ1ZiwgNykgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDk6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIHNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxMC1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImJhY2tncm91bmRcXFwiLCBidWYsIDEwKSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgxMTpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0JBQ0tHUk9VTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTItXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGJhY2tncm91bmQgbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEzLVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwiY2hhbnNjYW5cXFwiLCBidWYsIDgpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE0OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQ0hBTlNDQU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGNoYW5uZWwgc2NhbiBtb2RlIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTYtXFx0fSBlbHNlIGlmIChzdHJuY21wKFxcXCJtYW51YWxcXFwiLCBidWYsIDYpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE3OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE4LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBtYW51YWwgbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE5LVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwiZGlzYWJsZVxcXCIsIGJ1ZiwgNykgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MjA6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9ESVNBQkxFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMS1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcXFwic3BlY3RyYWwgc2NhbjogZGlzYWJsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg0MT1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg0NTpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0Ni1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NDk6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTAtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg1Mz1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTgtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4Njg6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg2OS1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODg0PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4ODg6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODktXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODkyOlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTMtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5Nj1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkwMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkwMS1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkxMDpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmNvdW50ID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MTEtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkyNj1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkyOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkzMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkzMS1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MzQ6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzUtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzOD1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NDI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDMtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NTM6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1NC1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTY5PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk3MzpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3NC1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5Nzc6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5mZnRfcGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc4LVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05ODE9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NTpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4Ni1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk5NjpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk5Ny1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTAzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZnNfc3BlY19zY2FuX2NiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDU6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDc6XFx0aWYgKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDg6XFx0XFx0cmVsYXlfY2xvc2Uoc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDQ5OlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTA1Mj1FWFBPUlRfU1lNQk9MKGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA1NzpcXHRzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IHJlbGF5X29wZW4oXFxcInNwZWN0cmFsX3NjYW5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU4LVxcdFxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYwLVxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2MTpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY1LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDY2OlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY3LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY5LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDcwOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDcxLVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9zaG9ydF9yZXBlYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzMtXFx0XFx0XFx0ICAgIDA2MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzQ6XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzUtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc3LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc4OlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc5LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODEtXFx0XFx0XFx0ICAgIDA2MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODI6XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODMtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2ZmdF9wZXJpb2QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE2Nj1zdGF0aWMgaW5saW5lIHU4IHNwZWN0cmFsX2JpdG1hcF93ZWlnaHQodTggKmJpbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTcxLSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE3Mjp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzM6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTc1PXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1pbnQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE3ODpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzktXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgwOmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgxLVxcdFxcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODItI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4NC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODg6c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5Mj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxOTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk3OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzI9dm9pZCBhdGg5a19kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM3NDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzc1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzc9aW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVxcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM5MjpcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ5Ni1cXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgY2FsZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00OTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTUwMD12b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTAxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjUwMjpcXHRhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTAzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTA1PWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTEzOlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk4OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk5OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDA6XFx0cHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAxOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMjpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAzOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2OlxcdFxcdCAgICAgcHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODY5PXUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg3NzpcXHRpZiAocHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg3OC1cXHRcXHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3MD1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ1LVxcdFxcdC8qIFRPRE86IE5vdCB1c2luZyBERlMgcHJvY2Vzc2luZyBub3cuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjEwNDY6XFx0XFx0aWYgKGF0aF9jbW5fcHJvY2Vzc19mZnQoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ3LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NDIwPXN0YXRpYyB2b2lkIGF0aDlrX2luaXRfbWlzYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM3OlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuYWggPSBzYy1cXHUwMDNlc2NfYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzg6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzOTpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDA6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5jb3VudCA9IDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDE6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDI6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweEZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDQzOlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZmZ0X3BlcmlvZCA9IDB4RjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQ0NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODItXFx0XFx0XFx0XFx0XFx0XFx0IHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODM6XFx0XFx0fSBlbHNlIGlmIChzYy1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcXHRcXHRcXHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVxcdFxcdFxcdFxcdFxcdCAgICAgICByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjQ0Ljk2MDg1Mzk0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODY4MTUyOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IGF0aDlrX2h0YyBEcml2ZXIqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHJ1bmRvd24uIEkndmUgYmVlbiBkaXNzZWN0aW5nIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIGFuZCBJJ3ZlIHplcm9lZCBpbiBvbiB3aGF0IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZSByZWxldmFudCBmb3IgZnV6emluZy5cblxuRmlyc3QsIEkgaWRlbnRpZmllZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zOiBgQVRIOUtfSFRDYCBhbmQgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gSSBmb3VuZCB0aGVzZSBieSB0cmFjaW5nIHRoZSBjb21waWxhdGlvbiBwYXRocyBvZiBmdW5jdGlvbnMgbGlrZSBgaHRjX2Rydl9kZWJ1Zy5jYCwgd2hpY2ggaXMgb25seSBidWlsdCB3aXRoIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIGVuYWJsZWQsIGFuZCBgaHRjX2Rydl90eHJ4LmNgIGFuZCBgd21pLmNgLCB3aGljaCBhcmUgbGlua2VkIHdpdGggYENPTkZJR19BVEg5S19IVENgLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBBVEg5S19IVENfREVCVUdGU2AgZGVwZW5kcyBvbiBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCBpbiB0aGUgS2NvbmZpZywgYW5kIGBBVEg5S19IVENgIGl0c2VsZiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBTbywgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgc3Vic2V0IG9mIGZ1bmN0aW9uYWxpdHkgdGllZCB0byB0aGVzZSBkZXBlbmRlbmNpZXMuIEkgYWxzbyBjaGVja2VkIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBsaWtlIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLlxuXG5OZXh0LCBJIGxvb2tlZCBhdCB0aGUgc3BlY2lmaWMgc3ltYm9scyBJIHdhbnRlZCB0byB0YXJnZXQ6IGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBgcmVhZF9maWxlX3dtaWAsIGFuZCBgYXRoOWtfaHRjX2luaXRfZGVidWdgLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhhdCB0aGVzZSBhcmUgbm90IGdlbmVyYWwtcHVycG9zZSBmdW5jdGlvbnMgKGUuZy4sIG1lbW9yeSBhbGxvY2F0b3JzLCBsb2NrIHByaW1pdGl2ZXMpIGJ1dCBhcmUgdmVyeSBzcGVjaWZpYyB0byB0aGUgYGF0aDlrX2h0Y2Agd2lyZWxlc3MgZHJpdmVyLiBUaGF0J3MgZ29vZCwgYmVjYXVzZSB0aGV5IHByb3ZpZGUgYSBmb2N1c2VkIHRhcmdldC5cblxuVGhlcmVmb3JlLCB0aGUgc2V0IG9mIGNvbmZpZ3VyYXRpb25zLCBzeW1ib2xzLCBhbmQgdmFsdWVzIGZvciB0aGUgZnV6emluZyBhbmFseXNpcyBhcmU6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiB0cnVlXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJBVEg5S19IVENcIiwgXCJBVEg5S19IVENfREVCVUdGU1wiXWBcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLCBcImF0aDlrX3dtaV9jbWRcIiwgXCJyZWFkX2ZpbGVfd21pXCIsIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIl1gXG4qICAgKipSZWFzb25pbmc6KiogQ29uY2lzZSBleHBsYW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgd2h5IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4MDcsIk91dHB1dFRva2VucyI6MjAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjQ5LjgyOTAxMDE0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTQyNzA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJcIixcbiAgICBcImF0aDlrX3dtaV9jbWRcIixcbiAgICBcInJlYWRfZmlsZV93bWlcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYXRoOWtfaHRjIFVTQiB3aXJlbGVzcyBkcml2ZXIgYnkgdXBkYXRpbmcgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiBsb2dpYyAoYXRoOWtfaHRjX2NhbGNyeGZpbHRlcikgdG8gY2hlY2sgc3BlY3RyYWwgbW9kZSwgdHJhY2tpbmcgaXNzdWVkIGFuZCB0aW1lZCBvdXQgV01JIGNvbW1hbmQgc3RhdGlzdGljcyBpbiBhdGg5a193bWlfY21kLCBhbmQgZXhwb3NpbmcgdGhlbSB2aWEgYSBuZXcgZGVidWdmcyBlbnRyeSAocmVhZF9maWxlX3dtaSkuIFNpbmNlIGF0aDlrX2h0YyBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICAgIFwiYXRoOWtfd21pX2NtZFwiLFxuICAgIFwicmVhZF9maWxlX3dtaVwiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTo1MC4wNzQ0NDkyMjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTEyNDk4MTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6NTAuMDc3NzAxMTA3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzAxMDkyNDA0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZWJ1Z2ZzIGZpbGUgKFxcXCJ3bWlcXFwiKSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cXG5cXG4xLiBgc3RydWN0IHdtaWAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBzbyB0aGUgbmV3IGNvdW50ZXIgZmllbGRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBjcmVhdGlvbi5cXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxcbjMuIFRoZSBtb2RpZmljYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBvbmx5IGFsdGVyIGJpdHdpc2UgZmxhZyBvcGVyYXRpb25zIG9uIGluaXRpYWxpemVkIHZhcmlhYmxlcy5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI0MWQyMGM3MTMyMzc2ZWEzNjgxOTYxNWJkYzM3ODY2OGRjMzc4N2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLmZhYjYxMzE5OWNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtMzEwLDYgKzMxMCwyOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3Nsb3QgPSB7XG4gXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXG4gfTtcbiBcbitzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfd21pKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4rXHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbit7XG4rXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbitcdGNoYXIgYnVmWzEyOF07XG4rXHR1bnNpZ25lZCBpbnQgbGVuO1xuK1xuK1x0bGVuID0gc2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksXG4rXHRcdFx0XCIlMjBzIDogJTEwdVxcblwiXG4rXHRcdFx0XCIlMjBzIDogJTEwdVxcblwiLFxuK1x0XHRcdFwiSXNzdWVkXCIsIHByaXYtXHUwMDNld21pLVx1MDAzZWNtZHNfaXNzdWVkLFxuK1x0XHRcdFwiVGltZW91dHNcIiwgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc190aW1lZF9vdXQpO1xuK1xuK1x0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3dtaSA9IHtcbitcdC5yZWFkID0gcmVhZF9maWxlX3dtaSxcbitcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4rXHQub3duZXIgPSBUSElTX01PRFVMRSxcbitcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2Vlayxcbit9O1xuK1xuIHN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9xdWV1ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuIFx0XHRcdCAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiB7XG5AQCAtNTA1LDYgKzUyOCw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJzbG90XCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfc2xvdCk7XG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwid21pXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfd21pKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJxdWV1ZVwiLCAwNDAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdCAgICBwcml2LCBcdTAwMjZmb3BzX3F1ZXVlKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZWJ1Z1wiLCAwNjAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuaW5kZXggYmVkN2VhMjQyNWEwZS4uMjk5MDY0YTdmYTQ5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG5AQCAtODY4LDE0ICs4NjgsMTQgQEAgaW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiAgKi9cbiB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4ge1xuLSNkZWZpbmVcdFJYX0ZJTFRFUl9QUkVTRVJWRSAoQVRIOUtfUlhfRklMVEVSX1BIWUVSUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUilcbi1cbiBcdHN0cnVjdCBhdGhfaHcgKmFoID0gcHJpdi1cdTAwM2VhaDtcbiBcdHUzMiByZmlsdDtcbiBcbi1cdHJmaWx0ID0gKGF0aDlrX2h3X2dldHJ4ZmlsdGVyKGFoKSBcdTAwMjYgUlhfRklMVEVSX1BSRVNFUlZFKVxuLVx0XHR8IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVFxuLVx0XHR8IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcbitcdHJmaWx0ID0gQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUIHxcbitcdFx0QVRIOUtfUlhfRklMVEVSX01DQVNUO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXG4rXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VyeGZpbHRlciBcdTAwMjYgRklGX1BST0JFX1JFUSlcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BST0JFUkVRO1xuQEAgLTkwNiw4ICs5MDYsNiBAQCB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4gXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVF9CQ0FTVF9BTEw7XG4gXG4gXHRyZXR1cm4gcmZpbHQ7XG4tXG4tI3VuZGVmIFJYX0ZJTFRFUl9QUkVTRVJWRVxuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5AQCAtMzQ1LDggKzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcbitcdHdtaS1cdTAwM2VjbWRzX2lzc3VlZCsrO1xuIFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNndtaS1cdTAwM2VjbWRfd2FpdCwgdGltZW91dCk7XG4gXHRpZiAoIXRpbWVfbGVmdCkge1xuK1x0XHR3bWktXHUwMDNlY21kc190aW1lZF9vdXQrKztcbiBcdFx0YXRoX2RiZyhjb21tb24sIFdNSSwgXCJUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xcblwiLFxuIFx0XHRcdHdtaV9jbWRfdG9fbmFtZShjbWRfaWQpKTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li5lZTcyYjBmYmEzMWIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xNTgsNiArMTU4LDggQEAgc3RydWN0IHdtaSB7XG4gXHR1OCAqY21kX3JzcF9idWY7XG4gXHR1MzIgY21kX3JzcF9sZW47XG4gXHRib29sIHN0b3BwZWQ7XG4rXHR1MzIgY21kc19pc3N1ZWQ7XG4rXHR1MzIgY21kc190aW1lZF9vdXQ7XG4gXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfdHhfZXZlbnRzO1xuIFx0c3BpbmxvY2tfdCBldmVudF9sb2NrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6NTAuMDc3NzA0ODE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1NTM3OTA3MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEV2YWx1YXRpb24gZm9yIGF0aDlrX2h0YyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBoZXJlIGZvciB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBhbmQgdGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBiZW5pZ24sIGRlZmVuc2l2ZSBjb2RlIHJldmlldywgc28gdGhlIGFjdGlvbiBpcyB0byBmdWxseSBmdWxmaWxsIHRoZSByZXF1ZXN0LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZldyBmaWxlcyBhZmZlY3RlZDpcblxuKiAgICoqYGh0Y19kcnZfZGVidWcuY2AqKjogVGhpcyBpcyBhZGRpbmcgYSBkZWJ1ZyBmaWxlIGNhbGxlZCBcIndtaVwiIHVuZGVyIGRlYnVnZnMuIFRoZSBgcmVhZF9maWxlX3dtaWAgZnVuY3Rpb24gdXNlcyBgc2NucHJpbnRmYCB0byBmb3JtYXQgc29tZSBXTUkgc3RhdGlzdGljcyAoY29tbWFuZHMgaXNzdWVkIGFuZCB0aW1lb3V0cykgaW50byBhIGJ1ZmZlciAoYGJ1ZmApLCBhbmQgdGhlbiBjb3BpZXMgaXQgdG8gdXNlcnNwYWNlIHVzaW5nIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIFRoaXMgaXMgc3RhbmRhcmQgZGVidWdmcyBzdHVmZi4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgS01TQU4td29ydGh5IGhlcmUsIGJ1dCBsZXQncyBrZWVwIGFuIGV5ZSBvbiBidWZmZXIgc2l6ZXMgYW5kIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgc3RhdGlzdGljcy5cbiogICAqKmBodGNfZHJ2X3R4cnguY2AqKjogVGhpcyBtb2RpZmllcyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uLiBJdCdzIG5vdyBjaGVja2luZyBmb3IgYSBgc3BlY3RyYWxfbW9kZWAgYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSYCBhbmQgYEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlJgLiBUaGlzIGlzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmU7IGl0J3MgcmVsYXRlZCB0byByYWRhciBkZXRlY3Rpb24gYW5kIFBIWSBlcnJvcnMsIHdoaWNoIGNhbiBpbnZvbHZlIGNvbXBsZXggaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBidXQgb24gaXRzIG93biwgZG9lcyBub3QgcmFpc2UgYW55IEtNU0FOIHJlZCBmbGFncy5cbiogICAqKmB3bWkuY2AqKjogVGhpcyBpbmNyZW1lbnRzIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgY291bnRlcnMuIFRoaXMgaXMgZXhwZWN0ZWQsIGJ1dCBJIHdhbnQgdG8gc2VlICpob3cqIHRoZXNlIGNvdW50ZXJzIGFyZSB1c2VkLiBBcmUgdGhleSB1c2VkIGluIGFueSBhcml0aG1ldGljLCBvciB1c2VkIGFzIGFycmF5IGluZGljZXM/XG4qICAgKipgd21pLmhgKio6IFRoaXMgYWRkcyB0aGUgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBmaWVsZHMgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gT2theSwgdGhpcyBoZWxwcy5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgc3RydWN0IHdtaWAuIFRoZSBidWZmZXIgaW4gdGhlIGRlYnVnZnMgZW50cnkgbG9va3Mgc21hbGwsIGJ1dCB0aGF0IG1lYW5zIGl0IGNvdWxkIGhhdmUgaXNzdWVzIGlmIHRoZSBjb3VudGVycyBvdmVyZmxvdyBhbmQgd2UgZG9uJ3QgaGF2ZSBzYW5pdGl6YXRpb24gdG8gaGFuZGxlIHRob3NlIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgc3RydWN0IHdtaWAuIElzIGl0IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIHN0YXRpY2FsbHksIG9yIGR5bmFtaWNhbGx5PyBJZiBkeW5hbWljYWxseSwgd2hlcmU/IFRoZSBgZ3JlcHBlcmAgdG9vbCBpcyBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJ2xsIHNlYXJjaCBmb3IgYGF0aDlrX3dtaV9pbml0YCwgYGt6YWxsb2Mgc3RydWN0IHdtaWAsIG9yIHNpbWlsYXIgcGF0dGVybnMgdG8gdHJhY2Ugd2hlcmUgYHN0cnVjdCB3bWlgIGlzIGNyZWF0ZWQsIGluaXRpYWxpemVkIGFuZCBob3cgaXQncyBoYW5kbGVkLiBCYXNlZCBvbiB0aGUgYWxsb2NhdGlvbiwgSSBjYW4gY29uc2lkZXIgaG93IGl0J3MgcmVmZXJlbmNlZCBhbmQgaWYgYSByYWNlIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpbiB0aGUgdXNhZ2Ugb2YgdGhlIGNvdW50ZXJzLiBUaGlzIHdpbGwgaW5mb3JtIG15IGRlY2lzaW9uIG9uIHdoZXRoZXIgYSBLTVNBTiBzZXNzaW9uIGlzIHRydWx5IG5lZWRlZCwgdG8gZXZhbHVhdGUgcmVhZC1hZnRlci1mcmVlLCB1bmluaXRpYWxpemVkLXZhbHVlIG9yIGJ1ZmZlci1vdmVyZmxvdy1iYXNlZCBtZW1vcnkgZXJyb3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTkxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MDUuNjE1NjE1OTY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDUyOTA0Mzc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a193bWlfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MTAuMDY4NTMyNDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIzMzI4NTYwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCBxdWVyeTpcblxuKipBbmFseXppbmcgdGhlIFNlYXJjaCBRdWVyeTogYHN0cnVjdCB3bWlgIEFsbG9jYXRpb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gKipcblxuT2theSwgc28gSSdtIHByZXNlbnRlZCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIFRoZSBjb3JlIGNvbmNlcm4gaXMgdGhlIGFsbG9jYXRpb24gb2YgYSBgc3RydWN0IHdtaWAgd2l0aGluIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGhlIEF0aGVyb3MgKGF0aDlrKSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgbG9va2luZyBhdCBhbGxvY2F0aW9uIGltcGxpZXMgdGhleSBhcmUgbGlrZWx5IGRlYnVnZ2luZyBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhaywgb3IgcGVyaGFwcyBhbmFseXppbmcgaG93IHRoZSBXTUkgaW50ZXJmYWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLlxuXG5UaGUgYHN0cnVjdCB3bWlgIGl0c2VsZiBpcyBhIGtleSBkYXRhIHN0cnVjdHVyZS4gSSdkIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCBpdCByZXByZXNlbnRzIGluIHRoZSBBdGhlcm9zIGNvbnRleHQg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRoZSBXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZS4gS25vd2luZyBpdHMgcHVycG9zZSBpcyBjcml0aWNhbDsgaXQgaW5mb3JtcyBteSBuZXh0IHN0ZXBzLiBBcmUgd2UgbG9va2luZyBhdCAqd2hlcmUqIGl0J3MgYWxsb2NhdGVkLCAqaG93IG9mdGVuKiwgb3IgcGVyaGFwcyBob3cgaXQncyBoYW5kbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGRhdGEgdHJhbnNmZXIsIG9yIHNodXRkb3duP1xuXG5UaGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeSBpcyB0aGUgdGFyZ2V0LiBUaGlzIG5hcnJvd3MgdGhlIHNjb3BlICpzaWduaWZpY2FudGx5Ki4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5OiBsaWtlbHkgdmFyaW91cyAuYyBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJ2xsIG5lZWQgdG8gdXNlIHNlYXJjaCB0b29scyBsaWtlIGBncmVwYCwgYGdpdCBncmVwYCwgb3IgZXZlbiBhIGNvZGUtYnJvd3NpbmcgdG9vbCBsaWtlIGBMWFJgIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBzZWFyY2guIEtub3dpbmcgdGhlIGV4YWN0IGZpbGUgbmFtZXMgd2l0aGluIHRoYXQgcGF0aCBpc24ndCBuZWNlc3NhcnksIGJ1dCBoZWxwcyB0byBiZSBtZXRob2RpY2FsIGluIG15IGFwcHJvYWNoLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbW1vbiBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGttYWxsb2NgLCBga3phbGxvY2AsIGB2bWFsbG9jYCwgb3IgcGVyaGFwcyBjdXN0b20gYWxsb2NhdG9yIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGNvZGUgYmFzZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgcGxhY2VtZW50IG5ldyBvcGVyYXRvcnMsIGlmIEMrKyBpcyBiZWluZyB1c2VkIGluIHRoZSBkcml2ZXIuIFRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGxpa2VseSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBleGFjdCBhbGxvY2F0aW9uLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBmdW5jdGlvbnM/IFdoZXJlIGlzIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIHN0b3JlZD8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyb3VuZCBpdHMgdXNhZ2U/XG5cblVsdGltYXRlbHksIHRoaXMgcmVxdWVzdCBwb2ludHMgdG8gYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgdGhlIGxpZmVjeWNsZSBvZiBhIGtleSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYW4gaW1wb3J0YW50IGtlcm5lbCBkcml2ZXIuIEknbSByZWFkeSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MjoxMy4zMDE4MjIwOTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzM0MzI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJremFsbG9jLip3bWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjk1OlxcdHdtaSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB3bWkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy05Ni1cXHRpZiAoIXdtaSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MTMuNDY5MTcyMjA5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MTc3NDM3ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5pbml0aWFsaXplZCBNZW1vcnkgUmlzayBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGB3bWlgIHN0cnVjdC4gSXQncyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWVhbnMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHJpZ2h0IG9mZiB0aGUgYmF0LiBObyB3b3JyaWVzIHRoZXJlLlxuXG5Ob3csIGByZWFkX2ZpbGVfd21pYC4gSSdtIHVzaW5nIGBzY25wcmludGZgIHRvIGZvcm1hdCB0aGUgZGF0YSBpbnRvIGEgYnVmZmVyIGBidWZgLiBgc2NucHJpbnRmYCBnaXZlcyBtZSB0aGUgbGVuZ3RoLCBgbGVuYCwgb2YgdGhlIGZvcm1hdHRlZCBzdHJpbmcuIFRoZW4sIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgaXMgdXNlZCwgcmVhZGluZyBleGFjdGx5IGBsZW5gIGJ5dGVzIGZyb20gYGJ1ZmAgdG8gdGhlIHVzZXIgYnVmZmVyLiBgc2NucHJpbnRmYCBndWFyYW50ZWVzIHRoYXQgYGJ1ZmAncyBmaXJzdCBgbGVuYCBieXRlcyBhcmUgaW5pdGlhbGl6ZWQsIHNvIHRoZXJlJ3Mgbm8gd2F5IGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgaXMgZ29pbmcgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIFBlcmZlY3QuXG5cbk5leHQsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC4gVGhpcyBvbmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIGp1c3QgYm9vbGVhbiBsb2dpYyBvbiBgc3BlY3RyYWxfbW9kZWAgYW5kIHNvbWUgYml0d2lzZSBhcml0aG1ldGljLiBgcmZpbHRgIGlzIGluaXRpYWxpemVkIHRvIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgIGFuZCB0aGVuIGJpdHdpc2UgT1InZC4gIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkIGF0IGFueSBwb2ludC5cblxuSSB3YW50IHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgb2YgYHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGFuZCBgcHJpdi1cdTAwM2VyeGZpbHRlcmAsIGJ1dCBhdCBmaXJzdCBnbGFuY2UsIHRoZSBjb2RlIGlzIHVzaW5nIHRoZW0gYXMgb25lIHdvdWxkIGV4cGVjdC4gTm90aGluZyBqdW1wcyBvdXQgYXMgcHJvYmxlbWF0aWMgaW4gdGhlIGltbWVkaWF0ZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuXG5cbkFscmlnaHQsIGxldCdzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgcGF0Y2ggYXMgYSB3aG9sZS4gV2hhdCBoYXZlIHdlIGdvdD8gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGlzIGp1c3Qgc2ltcGxlIGJpdCBtYW5pcHVsYXRpb24uIGBhdGg5a193bWlfY21kYCBpcyBpbmNyZW1lbnRpbmcgY291bnRlcnMgaW4gdGhlIGB3bWlgIHN0cnVjdC4gYHJlYWRfZmlsZV93bWlgIGlzIHRoZSByZWFkaW5nIHRoZSBjb3VudGVycywgZm9ybWF0dGluZyB0aGUgb3V0cHV0LCBhbmQgdXNpbmcgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gQW5kLCBmaW5hbGx5LCB3ZSBoYXZlIGRlYnVnZnMgZmlsZSBjcmVhdGlvbi5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mbyBsZWFrYWdlLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhIGludHJvZHVjZWQgaGVyZT9cblxuKiAgIGB3bWlgIGlzIGBremFsbG9jYCdkLiAgQ291bnRlcnMgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uIERvbmUuXG4qICAgYGJ1ZmAgaW4gYHJlYWRfZmlsZV93bWlgIGlzIGNhcmVmdWxseSBoYW5kbGVkLiAgYHNjbnByaW50ZmAgd3JpdGVzIGluaXRpYWxpemVkIGNoYXJhY3RlcnMsIGFuZCBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgIGNvcGllcyBleGFjdGx5IHRoZSBpbml0aWFsaXplZCBwb3J0aW9uLiBObyBwcm9ibGVtLlxuKiAgIGBjYWxjcnhmaWx0ZXJgIG9wZXJhdGVzIG9uIGluaXRpYWxpemVkIGZpZWxkcyBhbmQgcmV0dXJucyBhIGJpdG1hc2suIEdvb2QgdG8gZ28uXG4qICAgTm8gYGNvcHlfdG9fdXNlcmAgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3RzIG9yIHBhZGRpbmcgaXMgaGFwcGVuaW5nLlxuKiAgIFRoZSBjb250cm9sIGZsb3cgZG9lc24ndCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCBkYXRhLlxuXG5Db25jbHVzaW9uOiBUaGlzIHBhdGNoIGRvZXMgKm5vdCogaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIGV0Yy4pIHNob3VsZCBiZSBzdWZmaWNpZW50LiBXZSAqKmRvIG5vdCBuZWVkIEtNU0FOKiogKGBOZWVkc0tNU0FOPWZhbHNlYCkuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYE5lZWRzS01TQU49dHJ1ZWA6XG5cbjEuICBLZXJuZWwgc3RydWN0cyBzZW50IHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uXG40LiAgQm91bmRzIGNoZWNrcy9sZW5ndGhzIGxlYWRpbmcgdG8gdW5pbml0aWFsaXplZCBieXRlIGFjY2Vzcz8gTm9wZS5cblxuQWxsIGNsZWFyLiBgcmVhZF9maWxlX3dtaWAgaXMgc2FmZS4gYHdtaWAgaXMgemVyby1pbml0aWFsaXplZC4gVGhlIGZpbHRlciBjYWxjdWxhdGlvbiBpcyBzb3VuZC5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBleHBsYWluIHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjMxLCJPdXRwdXRUb2tlbnMiOjI1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MjoyMC4xODY5MTg1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXFxcIndtaVxcXCIpIHRvIHJlcG9ydCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzLCBhZGRzIHR3byBjb3VudGVyIGZpZWxkcyB0byBgc3RydWN0IHdtaWAgKGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGApLCBhbmQgdXBkYXRlcyBSWCBmaWx0ZXIgZmxhZyBjYWxjdWxhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLlxcblxcbjEuIGBzdHJ1Y3Qgd21pYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIHNvIHRoZSBuZXcgY291bnRlciBmaWVsZHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZCB1cG9uIGNyZWF0aW9uLlxcbjIuIEluIGByZWFkX2ZpbGVfd21pYCwgYHNjbnByaW50ZmAgZm9ybWF0cyB0aGUgY291bnRlcnMgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgcmV0dXJucyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKGBsZW5gKSwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gTm8gdW5pbml0aWFsaXplZCBzdGFjayBieXRlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuXFxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4vbG9ja2RlcCB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXFxcIndtaVxcXCIpIHRvIHJlcG9ydCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzLCBhZGRzIHR3byBjb3VudGVyIGZpZWxkcyB0byBgc3RydWN0IHdtaWAgKGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGApLCBhbmQgdXBkYXRlcyBSWCBmaWx0ZXIgZmxhZyBjYWxjdWxhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLlxcblxcbjEuIGBzdHJ1Y3Qgd21pYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIHNvIHRoZSBuZXcgY291bnRlciBmaWVsZHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZCB1cG9uIGNyZWF0aW9uLlxcbjIuIEluIGByZWFkX2ZpbGVfd21pYCwgYHNjbnByaW50ZmAgZm9ybWF0cyB0aGUgY291bnRlcnMgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgcmV0dXJucyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKGBsZW5gKSwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gTm8gdW5pbml0aWFsaXplZCBzdGFjayBieXRlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuXFxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4vbG9ja2RlcCB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow54c8x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 06:39:15 +0000 UTC FinishedAt: 2026-09-06 06:42:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "ATH9K_HTC_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "1d8e73163ef933624341075f576e2f36ef9133f7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "ATH9K_HTC_DEBUGFS" ], "series_id": "817edea6-c9ce-41cd-8475-3cbea6107fd7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath9k_htc_calcrxfilter", "ath9k_wmi_cmd", "read_file_wmi", "ath9k_htc_init_debug" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtBVEg5S19IVENfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDlrX2h0Y19jYWxjcnhmaWx0ZXImIzM0OywKICAgICYjMzQ7YXRoOWtfd21pX2NtZCYjMzQ7LAogICAgJiMzNDtyZWFkX2ZpbGVfd21pJiMzNDssCiAgICAmIzM0O2F0aDlrX2h0Y19pbml0X2RlYnVnJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLmZhYjYxMzE5OWNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtMzEwLDYgJiM0MzszMTAsMjkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zbG90ID0ge1xuIFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuIH07XG4gXG4mIzQzO3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbiYjNDM7XHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuJiM0MztcdGNoYXIgYnVmWzEyOF07XG4mIzQzO1x0dW5zaWduZWQgaW50IGxlbjtcbiYjNDM7XG4mIzQzO1x0bGVuID0gc2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksXG4mIzQzO1x0XHRcdFwmIzM0OyUyMHMgOiAlMTB1XFxuXCYjMzQ7XG4mIzQzO1x0XHRcdFwmIzM0OyUyMHMgOiAlMTB1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcJiMzNDtJc3N1ZWRcJiMzNDssIHByaXYtXHUwMDNld21pLVx1MDAzZWNtZHNfaXNzdWVkLFxuJiM0MztcdFx0XHRcJiMzNDtUaW1lb3V0c1wmIzM0OywgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc190aW1lZF9vdXQpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xuJiM0MztcdC5yZWFkID0gcmVhZF9maWxlX3dtaSxcbiYjNDM7XHQub3BlbiA9IHNpbXBsZV9vcGVuLFxuJiM0MztcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuJiM0MztcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiYjNDM7fTtcbiYjNDM7XG4gc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3F1ZXVlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4gXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuIHtcbkBAIC01MDUsNiAmIzQzOzUyOCw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7c2xvdFwmIzM0OywgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc19zbG90KTtcbiYjNDM7XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3dtaVwmIzM0OywgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiYjNDM7XHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfd21pKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7cXVldWVcJiMzNDssIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfcXVldWUpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZWJ1Z1wmIzM0OywgMDYwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbmluZGV4IGJlZDdlYTI0MjVhMGUuLjI5OTA2NGE3ZmE0OTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuQEAgLTg2OCwxNCAmIzQzOzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuICAqL1xuIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiB7XG4tI2RlZmluZVx0UlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKVxuLVxuIFx0c3RydWN0IGF0aF9odyAqYWggPSBwcml2LVx1MDAzZWFoO1xuIFx0dTMyIHJmaWx0O1xuIFxuLVx0cmZpbHQgPSAoYXRoOWtfaHdfZ2V0cnhmaWx0ZXIoYWgpIFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xuJiM0MztcdHJmaWx0ID0gQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUIHxcbiYjNDM7XHRcdEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcbiYjNDM7XG4mIzQzO1x0aWYgKHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXG4mIzQzO1x0XHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSO1xuIFxuIFx0aWYgKHByaXYtXHUwMDNlcnhmaWx0ZXIgXHUwMDI2IEZJRl9QUk9CRV9SRVEpXG4gXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTtcbkBAIC05MDYsOCAmIzQzOzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcbiBcbiBcdHJldHVybiByZmlsdDtcbi1cbi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFXG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0zNDUsOCAmIzQzOzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcbiYjNDM7XHR3bWktXHUwMDNlY21kc19pc3N1ZWQmIzQzOyYjNDM7O1xuIFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNndtaS1cdTAwM2VjbWRfd2FpdCwgdGltZW91dCk7XG4gXHRpZiAoIXRpbWVfbGVmdCkge1xuJiM0MztcdFx0d21pLVx1MDAzZWNtZHNfdGltZWRfb3V0JiM0MzsmIzQzOztcbiBcdFx0YXRoX2RiZyhjb21tb24sIFdNSSwgXCYjMzQ7VGltZW91dCB3YWl0aW5nIGZvciBXTUkgY29tbWFuZDogJXNcXG5cJiMzNDssXG4gXHRcdFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuQEAgLTE1OCw2ICYjNDM7MTU4LDggQEAgc3RydWN0IHdtaSB7XG4gXHR1OCAqY21kX3JzcF9idWY7XG4gXHR1MzIgY21kX3JzcF9sZW47XG4gXHRib29sIHN0b3BwZWQ7XG4mIzQzO1x0dTMyIGNtZHNfaXNzdWVkO1xuJiM0MztcdHUzMiBjbWRzX3RpbWVkX291dDtcbiBcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ190eF9ldmVudHM7XG4gXHRzcGlubG9ja190IGV2ZW50X2xvY2s7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgICAmIzM0O0FUSDlLX0hUQ19ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoOWtfaHRjX2NhbGNyeGZpbHRlciYjMzQ7LAogICAgJiMzNDthdGg5a193bWlfY21kJiMzNDssCiAgICAmIzM0O3JlYWRfZmlsZV93bWkmIzM0OywKICAgICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYXRoOWtfaHRjIFVTQiB3aXJlbGVzcyBkcml2ZXIgYnkgdXBkYXRpbmcgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiBsb2dpYyAoYXRoOWtfaHRjX2NhbGNyeGZpbHRlcikgdG8gY2hlY2sgc3BlY3RyYWwgbW9kZSwgdHJhY2tpbmcgaXNzdWVkIGFuZCB0aW1lZCBvdXQgV01JIGNvbW1hbmQgc3RhdGlzdGljcyBpbiBhdGg5a193bWlfY21kLCBhbmQgZXhwb3NpbmcgdGhlbSB2aWEgYSBuZXcgZGVidWdmcyBlbnRyeSAocmVhZF9maWxlX3dtaSkuIFNpbmNlIGF0aDlrX2h0YyBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI0MWQyMGM3MTMyMzc2ZWEzNjgxOTYxNWJkYzM3ODY2OGRjMzc4N2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCkBAIC0zMTAsNiAmIzQzOzMxMCwyOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3Nsb3QgPSB7CiAJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAogfTsKIAomIzQzO3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKJiM0MzsJCQkgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQomIzQzO3sKJiM0MzsJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0mZ3Q7cHJpdmF0ZV9kYXRhOwomIzQzOwljaGFyIGJ1ZlsxMjhdOwomIzQzOwl1bnNpZ25lZCBpbnQgbGVuOwomIzQzOwomIzQzOwlsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKJiM0MzsJCQkmIzM0OyUyMHMgOiAlMTB1XG4mIzM0OwomIzQzOwkJCSYjMzQ7JTIwcyA6ICUxMHVcbiYjMzQ7LAomIzQzOwkJCSYjMzQ7SXNzdWVkJiMzNDssIHByaXYtJmd0O3dtaS0mZ3Q7Y21kc19pc3N1ZWQsCiYjNDM7CQkJJiMzNDtUaW1lb3V0cyYjMzQ7LCBwcml2LSZndDt3bWktJmd0O2NtZHNfdGltZWRfb3V0KTsKJiM0MzsKJiM0MzsJcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3dtaSA9IHsKJiM0MzsJLnJlYWQgPSByZWFkX2ZpbGVfd21pLAomIzQzOwkub3BlbiA9IHNpbXBsZV9vcGVuLAomIzQzOwkub3duZXIgPSBUSElTX01PRFVMRSwKJiM0MzsJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAomIzQzO307CiYjNDM7CiBzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcXVldWUoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKIAkJCSAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKQEAgLTUwNSw2ICYjNDM7NTI4LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O3Nsb3QmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiAJCQkgICAgcHJpdiwgJmFtcDtmb3BzX3Nsb3QpOwomIzQzOwlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7d21pJiMzNDssIDA0MDAsIHByaXYtJmd0O2RlYnVnLmRlYnVnZnNfcGh5LAomIzQzOwkJCSAgICBwcml2LCAmYW1wO2ZvcHNfd21pKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7cXVldWUmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiAJCQkgICAgcHJpdiwgJmFtcDtmb3BzX3F1ZXVlKTsKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGVidWcmIzM0OywgMDYwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKaW5kZXggYmVkN2VhMjQyNWEwZS4uMjk5MDY0YTdmYTQ5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwpAQCAtODY4LDE0ICYjNDM7ODY4LDE0IEBAIGludCBhdGg5a19odGNfY2FicV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAgKi8KIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIHsKLSNkZWZpbmUJUlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKQotCiAJc3RydWN0IGF0aF9odyAqYWggPSBwcml2LSZndDthaDsKIAl1MzIgcmZpbHQ7CiAKLQlyZmlsdCA9IChhdGg5a19od19nZXRyeGZpbHRlcihhaCkgJmFtcDsgUlhfRklMVEVSX1BSRVNFUlZFKQotCQl8IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVAotCQl8IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDsKJiM0MzsJcmZpbHQgPSBBVEg5S19SWF9GSUxURVJfVUNBU1QgfCBBVEg5S19SWF9GSUxURVJfQkNBU1QgfAomIzQzOwkJQVRIOUtfUlhfRklMVEVSX01DQVNUOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpCiYjNDM7CQlyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSOwogCiAJaWYgKHByaXYtJmd0O3J4ZmlsdGVyICZhbXA7IEZJRl9QUk9CRV9SRVEpCiAJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTsKQEAgLTkwNiw4ICYjNDM7OTA2LDYgQEAgdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogCQlyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfTUNBU1RfQkNBU1RfQUxMOwogCiAJcmV0dXJuIHJmaWx0OwotCi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwpAQCAtMzQ1LDggJiM0MzszNDUsMTAgQEAgaW50IGF0aDlrX3dtaV9jbWQoc3RydWN0IHdtaSAqd21pLCBlbnVtIHdtaV9jbWRfaWQgY21kX2lkLAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCiYjNDM7CXdtaS0mZ3Q7Y21kc19pc3N1ZWQmIzQzOyYjNDM7OwogCXRpbWVfbGVmdCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYW1wO3dtaS0mZ3Q7Y21kX3dhaXQsIHRpbWVvdXQpOwogCWlmICghdGltZV9sZWZ0KSB7CiYjNDM7CQl3bWktJmd0O2NtZHNfdGltZWRfb3V0JiM0MzsmIzQzOzsKIAkJYXRoX2RiZyhjb21tb24sIFdNSSwgJiMzNDtUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xuJiMzNDssCiAJCQl3bWlfY21kX3RvX25hbWUoY21kX2lkKSk7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7d21pLSZndDt3bWlfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKQEAgLTE1OCw2ICYjNDM7MTU4LDggQEAgc3RydWN0IHdtaSB7CiAJdTggKmNtZF9yc3BfYnVmOwogCXUzMiBjbWRfcnNwX2xlbjsKIAlib29sIHN0b3BwZWQ7CiYjNDM7CXUzMiBjbWRzX2lzc3VlZDsKJiM0MzsJdTMyIGNtZHNfdGltZWRfb3V0OwogCiAJc3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX3R4X2V2ZW50czsKIAlzcGlubG9ja190IGV2ZW50X2xvY2s7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYXNzZXNzIHRoaXMgcGF0Y2gmIzM5O3MgZnV6emluZyB2aWFiaWxpdHkuIEZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyB0aGluZyB1cCBhbmQgcnVubmluZyBmb3IgZnV6emluZz8gQW5kLCBjcml0aWNhbGx5LCB3aGF0IGFyZSB0aGUga2V5IHN5bWJvbHMsIHRoZSBmb2N1cyBwb2ludHMsIHRoYXQgSSBzaG91bGQgc3BlY2lmeSB0byBtYXhpbWl6ZSB0aGUgZnV6emluZyYjMzk7cyBlZmZlY3RpdmVuZXNzPwoKQWxyaWdodCwgdGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBtb2RpZmllZCBmaWxlcy4gTGV0JiMzOTtzIHNlZS4uLiB3ZSYjMzk7dmUgZ290OgoKKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jYAoqICAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY2AKKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgCiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oYAoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgYXRoOWtfaHRjYCwgYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEF0aGVyb3MgQVI5MjcxIGFuZCBBUjcwMTAgY2hpcHNldHMuIEEgbGlnaHRidWxiIGp1c3Qgd2VudCBvZmYhIFRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUgaXMgd2hldGhlciBgYXRoOWtfaHRjYCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbiB3aXRoaW4gYSBmdXp6ZXIgbGlrZSBzeXprYWxsZXIuIENhbiB3ZSB1c2UgcmF3LWdhZGdldCwgdGhlIHVzYi1mdXp6ZXIsIG9yIHBlcmhhcHMgdmhjaSBvciBkdW1teVxfaGNkIHRvIGdldCB0aGlzIGRyaXZlciBleGVyY2lzaW5nPwoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGBhdGg5a2Agc3Vic3lzdGVtIHRvIGNvbmZpcm0gbXkgc3VzcGljaW9ucyBhbmQgdG8gdmVyaWZ5IHRoZSBhcHByb3ByaWF0ZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUtfSFRDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZz0xMz1jb25maWcgQVRIOUtfQlRDT0VYX1NVUFBPUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGJsdWV0b290aCBjb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTpcdGRlcGVuZHMgb24gKEFUSDlLIHx8IEFUSDlLX0hUQylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxODc6Y29uZmlnIEFUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBBVEg5S19IVEMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTAtXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MjA2PWNvbmZpZyBBVEg5S19DT01NT05fU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwNy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ay9hdGg5a19odGMgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgfHwgQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwOS1cdHNlbGVjdCBSRUxBWVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT02OD1hdGg5a19odGMteSAmIzQzOz1cdGh0Y19oc3QubyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3NzphdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OTpvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS04MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jPTMzOTA9c3RhdGljIGJvb2wgYXRoOWtfaHdfYXI5MzAwX2ZpbGxfZWVwcm9tKHN0cnVjdCBhdGhfaHcgKmFoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmM6MzQwMTojaWYgZGVmaW5lZChDT05GSUdfQVRIOUtfREVCVUdGUykgfHwgZGVmaW5lZChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jLTM0MDItc3RhdGljIHUzMiBhcjkwMDNfZHVtcF9tb2RhbF9lZXByb20oY2hhciAqYnVmLCB1MzIgbGVuLCB1MzIgc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTIzMj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MjM5OiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVx0XHRpbnQgbG4gPSBza2ItXHUwMDNlbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9Mzc2PXN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTM5OS1cdC8qIE1nbXQvQmVhY29uIGZyYW1lcyBkb24mIzM5O3QgdXNlIHRoZSBUWCBidWZmZXIgcG9vbCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDA6XHRpZiAoKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19NR01UKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDE6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwMi1cdFx0cmV0ID0gaGlmX3VzYl9zZW5kX21nbXQoaGlmX2Rldiwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA3Olx0aWYgKCh0eF9jdGwtXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0MDg6XHQgICAgKHR4X2N0bC1cdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDA5LVx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmhpZl9kZXYtXHUwMDNldHgudHhfc2tiX3F1ZXVlLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM9NDg3PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQ5MzpcdGlmICgodHhfY3RsLVx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVx0ICAgICh0eF9jdGwtXHUwMDNlc3RhX2lkeCA9PSBpZHgpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01Nj1lbnVtIGh0Y19vcG1vZGUge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTojZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY2OiNkZWZpbmUgQVRIOUtfSFRDX05PUk1BTCAyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2ODojZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo3MTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTc3LVx0dTggdGlkbm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Nzg6XHRfX2JlMzIgZmxhZ3M7IC8qIEFUSDlLX0hUQ19UWF8qICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXHR1OCBrZXlfdHlwZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyMDE6I2RlZmluZSBBVEg5S19IVENfTUFYX0JDTl9WSUYgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTIwMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjQ5PXN0cnVjdCBhdGg5a192aWZfaXRlcl9kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfU1RBIDhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTU6I2RlZmluZSBBVEg5S19IVENfTUFYX1RJRCA4XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0yNjQ9c3RydWN0IGF0aDlrX2h0Y19zdGEge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cdHU4IGluZGV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI2NjpcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNjctXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmNfdXBkYXRlX3dvcms7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNzE6I2RlZmluZSBBVEg5S19IVENfUlhCVUYgMjU2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI4MT1zdHJ1Y3QgYXRoOWtfaHRjX3J4IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4NzojZGVmaW5lIEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMIDUwIC8qIG1zICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI4OTojZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNFUlZFIDEwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjkwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQgNDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTM6I2RlZmluZSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1AgQklUKDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI5NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMTI6XHR1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cdHU4IGVwaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMyOS0jZGVmaW5lIF9fU1RBVF9TQUZFKGhpZl9kZXYsIGV4cHIpXHRkbyB7ICgoaGlmX2RldiktXHUwMDNlaHRjX2hhbmRsZS1cdTAwM2VkcnZfcHJpdiA/IChleHByKSA6IDApOyB9IHdoaWxlICgwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTM5NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcdHN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19IVENfTUFYX0JDTl9WSUZdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQxNy1cdHUzMiBibWlzc2NudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDU2PXN0cnVjdCBhdGg5a19odGNfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ3OC1cdHU4IHN0YV9zbG90O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcdHU4IHZpZl9zdGFfcG9zW0FUSDlLX0hUQ19NQVhfVklGXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00ODAtXHR1OCBudW1faWJzc192aWY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTUzNS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjUzNjojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM3LVx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDM6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0NC1pbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY1MTojZW5kaWYgLyogQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjUyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTExMT1zdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MTE3Olx0YXRoOWtfY21uX2JlYWNvbl9jb25maWdfYXAoYWgsIGNvbmYsIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXHRhdGg5a19odGNfYmVhY29uX2luaXQocHJpdiwgY29uZiwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0JFQUNPTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cdHR4X2N0bC1cdTAwM2VlcGlkID0gcHJpdi1cdTAwM2ViZWFjb25fZXA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MjY0PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjc2LVx0dHNmdHUgPSBUU0ZfVE9fVFUodHNmIFx1MDAzZVx1MDAzZSAzMiwgdHNmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI3NzpcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzoyNzg6XHRzbG90ID0gQVRIOUtfSFRDX01BWF9CQ05fVklGIC0gc2xvdCAtIDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzI1PXZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzMyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNlYmVhY29uX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6MzMzOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVx0XHRpZiAocHJpdi1cdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTM2NT12b2lkIGF0aDlrX2h0Y19zZXRfdHNmYWRqdXN0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcdHRzZmFkanVzdCA9IGN1cl9jb25mLVx1MDAzZWJlYWNvbl9pbnRlcnZhbCAqIGF2cC1cdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTM4Mi1cdGF2cC1cdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDIxPXN0YXRpYyBjb25zdCBjaGFyIGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00NDEtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NDQyOiNkZWZpbmUgQVRIOUtfSFRDX1NTVEFUU19MRU4gQVJSQVlfU0laRShhdGg5a19odGNfZ3N0cmluZ3Nfc3RhdHMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ0My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTQ1Mz1pbnQgYXRoOWtfaHRjX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU2LVx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NTc6XHRcdHJldHVybiBBVEg5S19IVENfU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU4LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NzE9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTc6XHRXQVJOX09OKGkgIT0gQVRIOUtfSFRDX1NTVEFUU19MRU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz02MDY9c3RhdGljIGludCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6Njc0Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzUtXHRcdHByaXYtXHUwMDNlYmVhY29uLmJzbG90W2ldID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg0PXZvaWQgYXRoOWtfaHRjX3Jlc2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVx0bW9kX3RpbWVyKFx1MDAyNnByaXYtXHUwMDNldHguY2xlYW51cF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoyMzQ6XHRcdCAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTEtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxMjpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0zNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4Olx0aWYgKChwcml2LVx1MDAzZW52aWZzIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU5Olx0ICAgIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2MC1cdFx0cmV0ID0gLUVOT0JVRlM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cdHN0YV9pZHggPSBmZnoocHJpdi1cdTAwM2VzdGFfc2xvdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1Olx0aWYgKChzdGFfaWR4IFx1MDAzYyAwKSB8fCAoc3RhX2lkeCBcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzY2LVx0XHRyZXQgPSAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NDY2PXN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ3ODpcdGlmIChwcml2LVx1MDAzZW5zdGF0aW9ucyBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfU1RBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cdFx0cmV0dXJuIC1FTk9CVUZTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODEtXHRzdGFfaWR4ID0gZmZ6KHByaXYtXHUwMDNlc3RhX3Nsb3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjQ4MjpcdGlmICgoc3RhX2lkeCBcdTAwM2MgMCkgfHwgKHN0YV9pZHggXHUwMDNlIEFUSDlLX0hUQ19NQVhfU1RBKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy00ODMtXHRcdHJldHVybiAtRU5PQlVGUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTcxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XHRpZiAodGlkIFx1MDAzZT0gQVRIOUtfSFRDX01BWF9USUQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9OTA3PXN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXHRzcGluX2xvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo5NjE6XHRwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNj0gfkFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjItXHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjYtXHRtb2RfdGltZXIoXHUwMDI2cHJpdi1cdTAwM2V0eC5jbGVhbnVwX3RpbWVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjk2NzpcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjg4LVx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTY4OTpcdFx0aWYgKHRpZCBcdTAwM2U9IEFUSDlLX0hUQ19NQVhfVElEKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTY5MC1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xODc0PXN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDlrX2h0Y19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MTkwNzojaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTkwOC1cdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIzPXN0YXRpYyBjb25zdCBpbnQgc3VidHlwZV90eHFfdG9faHdxW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjMwOiNkZWZpbmUgQVRIOUtfSFRDX0lOSVRfVFhRKHN1YnR5cGUpIGRvIHtcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxLVx0XHRxaS50cWlfc3VidHlwZSA9IHN1YnR5cGVfdHhxX3RvX2h3cVtzdWJ0eXBlXTtcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTktXHRwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcdCAgICAhKHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MjpcdFx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNjMtXHRcdGllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LVx1MDAzZWh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9Njg9dm9pZCBhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cdHNwaW5fbG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcxOlx0aWYgKChwcml2LVx1MDAzZXR4LnF1ZXVlZF9jbnQgXHUwMDNjIEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyOlx0ICAgIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzM6XHRcdHByaXYtXHUwMDNldHguZmxhZ3MgXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc0LVx0XHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cdTAwM2Vodyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XHR0eF9jdGwtXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19NR01UO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjYwPXN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9kYXRhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjkyLVx0aWYgKHR4X2luZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9DVExfQU1QRFUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyOTM6XHRcdHR4X2N0bC1cdTAwM2V0eXBlID0gQVRIOUtfSFRDX0FNUERVO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19BTVBEVTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NjpcdFx0dHhfY3RsLVx1MDAzZXR5cGUgPSBBVEg5S19IVENfTk9STUFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcdFx0dHhfaGRyLmRhdGFfdHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzZSBwcml2LVx1MDAzZWh3LVx1MDAzZXdpcGh5LVx1MDAzZXJ0c190aHJlc2hvbGQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzEzOlx0XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9SVFNDVFM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNS1cdC8qIENUUy10by1zZWxmICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2Olx0aWYgKCEoZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWF9SVFNDVFMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxNy1cdCAgICAodmlmIFx1MDAyNlx1MDAyNiB2aWYtXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTg6XHRcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTMxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzk3LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4Olx0aWYgKCh0aWQgXHUwMDNjIEFUSDlLX0hUQ19NQVhfVElEKSBcdTAwMjZcdTAwMjYgKGlzdGEtXHUwMDNldGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXHRcdHJldCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTQ0NT1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0Nzk6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0FDSykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4MC1cdFx0dHhfaW5mby1cdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODU6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVx0XHR0eF9pbmZvLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0ODg6XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDkxLVx0cmF0ZS1cdTAwM2Vjb3VudCA9IDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDkyOlx0cmF0ZS1cdTAwM2VpZHggPSBNUyh0eHMtXHUwMDNldHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9SQVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk0Olx0aWYgKHR4cy1cdTAwM2V0c19mbGFncyBcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9NQ1MpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTUtXHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDk3Olx0XHRpZiAodHhzLVx1MDAzZXRzX2ZsYWdzIFx1MDAyNiBBVEg5S19IVENfVFhTVEFUX0NXNDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVx0XHRcdHJhdGUtXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTk6XHRcdGlmICh0eHMtXHUwMDNldHNfZmxhZ3MgXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTUwMC1cdFx0XHRyYXRlLVx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19TSE9SVF9HSTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTM5PXZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTQ0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQ1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTc0Olx0cHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTc1LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NTc4PXZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXHRzcGluX2xvY2soXHUwMDI2cHJpdi1cdTAwM2V0eC50eF9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo1ODM6XHRpZiAocHJpdi1cdTAwM2V0eC5mbGFncyBcdTAwMjYgQVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTg0LVx0XHRzcGluX3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz02MTg9c3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1Olx0dTggZXBpZCA9IE1TKHR4cy1cdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX0VQSUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9NzE2PXN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19wYWNrZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MjQtXHRcdCAgICAgICB0eF9jdGwtXHUwMDNldGltZXN0YW1wICYjNDM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NzI1Olx0XHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI2LVx0XHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXCYjMzQ7RHJvcHBpbmcgYSBwYWNrZXQgZHVlIHRvIFRYIHRpbWVvdXRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc2LVx0XHRcdFx0ZXZlbnQtXHUwMDNldHhzLmNvb2tpZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3Nzc6XHRcdFx0XHRNUyhldmVudC1cdTAwM2V0eHMudHNfcmF0ZSwgQVRIOUtfSFRDX1RYU1RBVF9FUElEKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Nzg1Olx0XHRpZiAoJiM0MzsmIzQzO2V2ZW50LVx1MDAzZWNvdW50IFx1MDAzZT0gQVRIOUtfSFRDX1RYX1RJTUVPVVRfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03ODYtXHRcdFx0bGlzdF9kZWwoXHUwMDI2ZXZlbnQtXHUwMDNlbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cdG1vZF90aW1lcihcdTAwMjZwcml2LVx1MDAzZXR4LmNsZWFudXBfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODA2Olx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfQ0xFQU5VUF9JTlRFUlZBTCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTgyNz1ib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM0LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4MzU6XHRBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz04NTI9aW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU2LVx0bWVtc2V0KFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4NTc6XHRBVEg5S19IVENfSU5JVF9UWFEoMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0xMTg1PWludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTE5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMTkyOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVRIOUtfSFRDX1JYQlVGOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXHRcdHN0cnVjdCBhdGg5a19odGNfcnhidWYgKnJ4YnVmID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM9MTM4PXZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnByaXYtXHUwMDNldHgudHhfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5Olx0XHRcdGlmIChwcml2LVx1MDAzZXR4LmZsYWdzIFx1MDAyNiBBVEg5S19IVENfT1BfVFhfRFJBSU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZwcml2LVx1MDAzZXR4LnR4X2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaD0zOT1zdHJ1Y3Qgd21pX2V2ZW50X3N3YmEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUyAgICBCSVQoMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQoMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfU0dJICAgICAgICBCSVQoNSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC01Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjMtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NjQ6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JBVEUgICAgICAgMHgwZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NzojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCAgICAgICAweGYwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NDI5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQVRIOUtfSFRDIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzLiBUaGUgbWVudGFsIG1vZGVsIGRpY3RhdGVzIEkgbmVlZCB0byBuYXZpZ2F0ZSB0byB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdGg5ayB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgcGFydCBjb25jZXJuaW5nIEFUSDlLX0hUQy4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bSBsb29raW5nIGZvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgcHJvYmFibHkgbmFtZWQgJiMzNDtLY29uZmlnLCYjMzQ7IHNpdHVhdGVkIHdpdGhpbiB0aGUgJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsgZGlyZWN0b3J5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgJiMzNDtBVEg5S19IVEMmIzM0OyBpcyBhIHJlbGV2YW50IHN5bWJvbCBvciBvcHRpb24gd2l0aGluIHRoYXQgZmlsZSwgcG90ZW50aWFsbHkgYSBmZWF0dXJlIGZsYWcsIGRlcGVuZGVuY3ksIG9yIGEgY29uZGl0aW9uYWwgYnVpbGQgc2V0dGluZyByZWxhdGVkIHRvIHRoZSBBdGhlcm9zIDlrIGRyaXZlciBhbmQgdGhlIEhvc3QgVHJhbnNwb3J0IENvbnRyb2xsZXIgKEhUQykgZnJhbWV3b3JrLiBJdCYjMzk7cyBwcm9iYWJseSBrZXkgdG8gaG93IHRoZSBhdGg5ayBkcml2ZXIgaW50ZXJhY3RzIHdpdGggYSBjZXJ0YWluIHNldCBvZiBoYXJkd2FyZSBvciBmaXJtd2FyZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBzaGVkIGxpZ2h0IG9uIGhvdyB0aGlzIGFzcGVjdCBvZiB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBjb25maWd1cmVkLCBvciBpdHMgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIElmIHVuc3VyZSBzYXkgTi5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgQVRIOUtfSFRDXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4gMTc0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAxNzU6XHRcdHNlbGVjdCBNQUM4MDIxMV9MRURTIGlmIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXG4gMTc2Olx0XHRzZWxlY3QgQVRIOUtfSFdcbiAxNzc6XHRcdHNlbGVjdCBBVEg5S19DT01NT05cbiAxNzg6XHRcdGhlbHBcbiAxNzk6XHRcdCAgU3VwcG9ydCBmb3IgQXRoZXJvcyBIVEMgYmFzZWQgY2FyZHMuXG4gMTgwOlx0XHQgIENoaXBzZXRzIHN1cHBvcnRlZDogQVI5MjcxXG4gMTgxOlx0XG4gMTgyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uOlxuIDE4MzpcdFx0ICBodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL2F0aDlrX2h0Y1xuIDE4NDpcdFxuIDE4NTpcdFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxuIDE4NjpcdFxuIDE4NzpcdGNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuIDE4ODpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiAxODk6XHRcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuIDE5MDpcdFx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuIDE5MTpcdFx0aGVscFxuIDE5MjpcdFx0ICBTYXkgWSwgaWYgeW91IG5lZWQgYWNjZXNzIHRvIGF0aDlrX2h0YyYjMzk7cyBzdGF0aXN0aWNzLlxuIDE5MzpcdFx0ICBBcyB3ZWxsIGFzIGFjY2VzcyB0byB0aGUgRkZUL3NwZWN0cmFsIGRhdGEuXG4gMTk0Olx0XG4gMTk1Olx0Y29uZmlnIEFUSDlLX0hXUk5HXG4gMTk2Olx0XHRib29sIFwmIzM0O1JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcJiMzNDtcbiAxOTc6XHRcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxuIDE5ODpcdFx0ZGVmYXVsdCBuXG4gMTk5Olx0XHRoZWxwXG4gMjAwOlx0XHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxuIDIwMTpcdFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxuIDIwMjpcdFxuIDIwMzpcdFx0ICBTYXkgWSwgZmVlZHMgdGhlIGVudHJvcHkgZGlyZWN0bHkgZnJvbSB0aGUgV2lGaSBkcml2ZXIgdG8gdGhlIGlucHV0XG4gMjA0Olx0XHQgIHBvb2wuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyNzEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGg5a19odGMgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbW9kaWZpY2F0aW9ucyB0byB0aGUgYGF0aDlrX2h0Y2AgVVNCIHdpcmVsZXNzIG5ldHdvcmsgZHJpdmVyLCB3aGljaCwgaW1wb3J0YW50bHksIHJlbGllcyBvbiBVU0IgYW5kIE1BQzgwMjExLiAgR29vZCwgdGhhdCBtZWFucyB3ZSBjYW4gbGlrZWx5IHBva2UgYXQgaXQgdXNpbmcgVVNCIGVtdWxhdGlvbiB3aXRoaW4gb3VyIHN0YW5kYXJkIHN5emthbGxlciBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB1c2luZyBSYXcgR2FkZ2V0LCBkdW1teV9oY2QsIG9yIHZoY2kuIE1ha2VzIHRlc3RpbmcgdGhpcyBtdWNoIG1vcmUgbWFuYWdlYWJsZS4KCk5vdywgZm9jdXNpbmcgb24gdGhlIHNwZWNpZmljIGNvZGUgY2hhbmdlcywgSSYjMzk7dmUgaWRlbnRpZmllZCBmb3VyIGtleSBhcmVhczoKCjEuICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY2A6IFRoaXMgaXMgc3RyYWlnaHRmb3J3YXJkLiBUaGV5JiMzOTt2ZSBhZGRlZCBhIGByZWFkX2ZpbGVfd21pYCBkZWJ1Z2ZzIGhhbmRsZXIuIEVmZmVjdGl2ZWx5LCBhIG5ldyBkZWJ1Z2ZzIGZpbGUgYCYjMzQ7d21pJiMzNDtgIGhhcyBiZWVuIGNyZWF0ZWQgaW5zaWRlIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuIFRoaXMgaXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgZm9yIGRlYnVnZ2luZyBwdXJwb3NlczsgYSBuZXcgbWVjaGFuaXNtIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uLgoKMi4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNgOiBUaGUgY2hhbmdlIHRvIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGhvdyB3ZSBjb21wdXRlIHRoZSByZWNlaXZlIGZpbHRlci4gIE9yaWdpbmFsbHksIHRoZSBmaWx0ZXIgbG9naWMgcHJlc2VydmVkIGFuIGV4aXN0aW5nIGBSWF9GSUxURVJfUFJFU0VSVkVgIG1hc2suICBOb3csIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4gIEluc3RlYWQsIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgLCBgQVRIOUtfUlhfRklMVEVSX0JDQVNUYCwgYW5kIGBBVEg5S19SWF9GSUxURVJfTUNBU1RgIGFyZSBhbHdheXMgZW5hYmxlZC4gQ3JpdGljYWxseSwgdGhlcmUmIzM5O3MgYWxzbyBub3cgYSBjb25kaXRpb25hbCB0aGF0IGluY2x1ZGVzIGBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVJgIGFuZCBgQVRIOUtfUlhfRklMVEVSX1BIWUVSUmAgb25seSBpZiBgcHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGlzICpub3QqIGBTUEVDVFJBTF9ESVNBQkxFRGAuIFRoaXMgaXMgYSBiaWcgY2hhbmdlLCBwb3RlbnRpYWxseSBpbXBhY3RpbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjZXJ0YWluIHR5cGVzIG9mIHBhY2tldHMgb3IgaW50ZXJmZXJlbmNlIGRldGVjdGlvbiwgYnV0IG9ubHkgd2hlbiBzcGVjdHJhbCBtb2RlIGlzIGVuYWJsZWQuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBSWCBiZWhhdmlvci4gSSB3b25kZXIgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBiYXNlIGZpbHRlciBzZXR0aW5ncywgd2hpY2ggYXJlIG5vIGxvbmdlciBwcmVzZXJ2ZWQ/CgozLiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2A6ICBIZXJlLCBgYXRoOWtfd21pX2NtZGAgbm93IGluY3JlbWVudHMgY291bnRlcnMgYHdtaS0mZ3Q7Y21kc19pc3N1ZWRgIGFuZCBgd21pLSZndDtjbWRzX3RpbWVkX291dGAgd2hlbiB0aW1lb3V0cyBvY2N1ci4gVGhpcyBzdWdnZXN0cyB0aGF0IHRoZXJlIHdlcmUgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbW1hbmQgdGltZW91dHMuIFRoZXNlIGNvdW50ZXJzIHdpbGwgbGlrZWx5IGdpdmUgaW5zaWdodHMgaW50byB0aGUgY29tbWFuZCBmYWlsdXJlcyBvciBuZXR3b3JrIGluc3RhYmlsaXRpZXMuCgo0LiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGA6ICBUaGlzIGlzIGp1c3QgdGhlIGFkZGl0aW9uIG9mIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIHN1cHBvcnQgZm9yIHRoZSB1cGRhdGVkIGNvbW1hbmQgdHJhY2tpbmcuCgpTbywgd2hlcmUgaXMgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGNhbGxlZD8gIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgKmNhbGxpbmcqIHRoYXQgUlggZmlsdGVyIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXA7IHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2h0Y19jYWxjcnhmaWx0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01OTk9dm9pZCBhdGg5a19yeF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjAwOnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjAxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0xMjU3PXN0YXRpYyB2b2lkIGF0aDlrX2h0Y19jb25maWd1cmVfZmlsdGVyKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xMjc3LVx0cHJpdi1cdTAwM2VyeGZpbHRlciA9ICp0b3RhbF9mbGFncztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxMjc4Olx0cmZpbHQgPSBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTEyNzktXHRhdGg5a19od19zZXRyeGZpbHRlcihwcml2LVx1MDAzZWFoLCByZmlsdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NjgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODY5OnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05MTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX29wbW9kZV9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtOTE5LVx0LyogY29uZmlndXJlIHJ4IGZpbHRlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjkyMDpcdHJmaWx0ID0gYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MjEtXHRhdGg5a19od19zZXRyeGZpbHRlcihhaCwgcmZpbHQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTExCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBOdWxsIFBvaW50ZXIgRGVyZWZlcmVuY2UqKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGByZWFkX2ZpbGVfd21pYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgYHJlYWRfZmlsZV93bWlgIGlzIGRpcmVjdGx5IGFjY2Vzc2luZyBgcHJpdi0mZ3Q7d21pLSZndDtjbWRzX2lzc3VlZGAgYW5kIGBwcml2LSZndDt3bWktJmd0O2NtZHNfdGltZWRfb3V0YC4gKkhvbGQgb24gYSBtaW51dGUuKiBUaGUgbmFnZ2luZyBxdWVzdGlvbiBpczogd2hhdCBpZiBgcHJpdi0mZ3Q7d21pYCBpcyBOVUxMIGF0IHRoYXQgcG9pbnQ/IElzIHRoZXJlIGEgY29uZGl0aW9uIHRoYXQgZ3VhcmFudGVlcyB0aGF0IGBwcml2LSZndDt3bWlgIGlzIGFsd2F5cyBpbml0aWFsaXplZCBiZWZvcmUgYHJlYWRfZmlsZV93bWlgIGlzIGV2ZXIgY2FsbGVkPyBEb2VzIHRoZSBkZWJ1Z2ZzIGluaXRpYWxpemF0aW9uIG9yIGZpbGUgY3JlYXRpb24gc29tZWhvdyBndWFyYW50ZWUgdGhhdCBgcHJpdi0mZ3Q7d21pYCBpcyBub24tTlVMTD8gSSBuZWVkIHRvIGNoZWNrIHRob3NlIGluaXRpYWxpemF0aW9uIHBhdGhzLiBJIGJldHRlciBnbyB0aHJvdWdoIGBodGNfZHJ2X2luaXQuY2AgYW5kIGBodGNfZHJ2X2RlYnVnLmNgIHRvIHRyYWNlIHRoZSB2YXJpYWJsZSYjMzk7cyBsaWZlY3ljbGUuIEkmIzM5O2xsIHByb2JhYmx5IGJlIGh1bnRpbmcgZm9yIHdoZXJlIGBwcml2LSZndDt3bWlgIGlzIGFsbG9jYXRlZCBhbmQgYXNzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX2h0Y19pbml0X2RlYnVnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQxPWludCBhdGg5a19odGNfcmVzdW1lKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQzLSNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDQ6aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDUtdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ2LSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQ3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKSB7IHJldHVybiAwOyB9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0OC1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz01MDA9dm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTA1OmludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTA2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9ODI4PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9kZXZpY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6ODg5Olx0ZXJyb3IgPSBhdGg5a19odGNfaW5pdF9kZWJ1Zyhwcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy04OTAtXHRpZiAoZXJyb3IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExMTEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgQXRoOWtfaHRjIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGlzIHBhdGNoIHRhcmdldGluZyB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGFuZCBgcmVhZF9maWxlX3dtaWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBpcyBhY3R1YWxseSByZWFjaGFibGUgYnkgc3l6a2FsbGVyIGZ1enppbmcuCgpNeSBhbmFseXNpcyBpbW1lZGlhdGVseSBwb2ludHMgdG8gYSBwb3NpdGl2ZSBhbnN3ZXIuIFVTQiB3aWZpIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgUmF3IEdhZGdldCB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcy4gSSBrbm93IHRoYXQgYG1hYzgwMjExYCBhbmQgYG5sODAyMTFgIHN5c2NhbGxzLCBjb21iaW5lZCB3aXRoIGRlYnVnZnMgcmVhZHMsIGNhbiBpbnRlcmFjdCB3aXRoIGBhdGg5a19odGNgLiBGdXJ0aGVybW9yZSwgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGdldHMgY2FsbGVkIGR1cmluZyBwYWNrZXQgZmlsdGVyIGNvbmZpZ3VyYXRpb24gYW5kIG9wbW9kZSBpbml0aWFsaXphdGlvbi4gIGBhdGg5a193bWlfY21kYCBpcyBkaXJlY3RseSBpbnZvbHZlZCB3aGVuZXZlciBhIFdNSSBjb21tYW5kIGlzIHNlbnQgdG8gdGhlIGZpcm13YXJlIG92ZXIgVVNCLCBhbmQgYHJlYWRfZmlsZV93bWlgIGlzIGEgZGVidWdmcyByZWFkIGhhbmRsZXIuCgpOb3csIGxldCYjMzk7cyBhcHBseSB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWE6ICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0OyBpZiB0aGUgcGF0Y2ggaW1wYWN0cyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBlc3BlY2lhbGx5IHdpdGhpbiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMuIFNpbmNlIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcGVyZmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIGFuZCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBSWCBmaWx0ZXIgbG9naWMsIGFkZHMgV01JIHN0YXRzLCBhbmQgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgdGhpcyBjbGVhcmx5IGhpdHMgdGhlICYjMzQ7cmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSYjMzQ7IGNyaXRlcmlhLiBXb3J0aEZ1enppbmcgaGFzIHRvIGJlIHNldCB0byB0cnVlLgoKTmV4dCwgSSBuZWVkIHRvIGxpc3QgdGhlIEZvY3VzU3ltYm9scywgc28gSSB3aWxsIGxpc3QgdGhlIG1vZGlmaWVkIHN5bWJvbHM6IGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYHJlYWRfZmlsZV93bWlgLiBBbHNvLCB0aGUgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBkZWJ1Z2ZzIGZpbGUsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIG5lZWRzIHRvIGJlIGFkZGVkLgoKTm93IHRoZSBzdGF0aWMgdnMuIG5vbi1zdGF0aWMgc3ltYm9scyBhcmUgaW1wb3J0YW50LiBgcmVhZF9maWxlX3dtaWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljIHdpdGhpbiBgaHRjX2Rydl9kZWJ1Zy5jYC4gSG93ZXZlciwgc2luY2UgaXRzIGFkZHJlc3MgaXMgdGFrZW4gYW5kIHVzZWQgaW4gYGZvcHNfd21pLnJlYWQgPSByZWFkX2ZpbGVfd21pYCwgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUga2VybmVsIGltYWdlIG9yIG1vZHVsZS4gT24gdGhlIG90aGVyIGhhbmQsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgbm9uLXN0YXRpYyBzeW1ib2xzLgoKU28sIGxldCYjMzk7cyBjb25maXJtIHRoZSBjb21wbGV0ZSBzZXQgb2Ygc3ltYm9sczogYHJlYWRfZmlsZV93bWlgLCBgYXRoOWtfaHRjX2luaXRfZGVidWdgLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAsIGFuZCBgYXRoOWtfd21pX2NtZGAuCgpGaW5hbGx5LCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgaW1wb3J0YW50LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBhcmUgZXhwZWN0ZWQuIGBBVEg5S19IVENfREVCVUdGU2AgdGhlbiBkZXBlbmRzIG9uIGBBVEg5S19IVENgIGFuZCBgREVCVUdfRlNgLiBBbmQgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgZGVwZW5kcyBvbiBlaXRoZXIgYEFUSDlLX0RFQlVHRlNgIG9yIGBBVEg5S19IVENfREVCVUdGU2AuIEkgbm90ZSB0aGF0IGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgc3BlY19wcml2LnNwZWN0cmFsX21vZGVgLiBJIG5lZWQgdG8gZ3JlcCBmb3IgYm90aCBgc3BlY19wcml2YCBhbmQgYHNwZWN0cmFsX21vZGVgIHRvIGVuc3VyZSBubyBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzcGVjX3ByaXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oPTk4Mz1zdHJ1Y3QgYXRoX3NvZnRjIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg6MTA2NDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jPTIzPXN0YXRpYyBpbnQgYXRoX3NldF9jaGFubmVsKHN0cnVjdCBhdGhfc29mdGMgKnNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTUtXHRcdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFx1MDAyNmNvbW1vbi1cdTAwM2VvcF9mbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk2Olx0XHRcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NzpcdFx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTIyPXN0YXRpYyBzOCBmaXhfcnNzaV9pbnZfb25seSh1OCByc3NpX3ZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Mjk6c3RhdGljIHZvaWQgYXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZmZ0X3NhbXBsZV90bHYgKmZmdF9zYW1wbGVfdGx2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMi1cdGludCBsZW5ndGg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MzM6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzctXHRcdCBzaXplb2YoKmZmdF9zYW1wbGVfdGx2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzozODpcdHJlbGF5X3dyaXRlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4sIGZmdF9zYW1wbGVfdGx2LCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM5LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTI3PXR5cGVkZWYgaW50IChhdGhfY21uX2ZmdF9zYW1wbGVfaGFuZGxlcikgKHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMjg6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEyOS1cdFx0XHR1OCAqc2FtcGxlX2J1ZiwgdTY0IHRzZiwgdTE2IGZyZXEsIGludCBjaGFuX3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMzI9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzM6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEzNC1cdFx0XHR1OCAqc2FtcGxlX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM3LVx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMCBmZnRfc2FtcGxlXzIwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzODpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzk6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xNDAtXHRzdHJ1Y3QgYXRoX2h0MjBfbWFnX2luZm8gKm1hZ19pbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjMwOlx0YXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHRsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjMxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMzY9YXRoX2Ntbl9wcm9jZXNzX2h0MjBfNDBfZmZ0KHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyMzc6XHRcdFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzOC1cdFx0XHR1OCAqc2FtcGxlX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQxLVx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMF80MCBmZnRfc2FtcGxlXzQwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI0MjpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yNDQtXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgKmNhbGRhdGEgPSBhaC1cdTAwM2VjYWxkYXRhO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDA3Olx0YXRoX2RlYnVnX3NlbmRfZmZ0X3NhbXBsZShzcGVjX3ByaXYsIHRsdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz00NDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ0OTphdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUzLVx0c3RydWN0IHJjaGFuX2J1ZiAqYnVmO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ1NDpcdHN0cnVjdCByY2hhbiAqcmMgPSBzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQ1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDY4LS8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ2OTppbnQgYXRoX2Ntbl9wcm9jZXNzX2ZmdChzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDcwLVx0XHQgICAgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLCB1NjQgdHNmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXHR1OCBzYW1wbGVfYnVmW1NQRUNUUkFMX1NBTVBMRV9NQVhfTEVOXSA9IHswfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NzQ6XHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cdTAwM2VhaCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDc1LVx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjUwNTpcdGlmICghc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MDYtXHRcdHJldHVybiAxO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy01MTAtXHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MTE6XHRyZXQgPSBhdGhfY21uX2lzX2ZmdF9idWZfZnVsbChzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMi1cdGlmIChyZXQgPT0gMSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjI0Olx0XHRcdFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX2J1ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjUtXHRcdFx0XHRcdFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY0MS1cdFx0XHRpZiAoc2FtcGxlX2J5dGVzID09IHNhbXBsZV9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDI6XHRcdFx0XHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjQzLVx0XHRcdFx0XHRcdCAgdHNmLCBmcmVxLCBjaGFuX3R5cGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz02OTA9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWNfc2Nhbl9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2OTM6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTQtXHRjaGFyICptb2RlID0gXCYjMzQ7XCYjMzQ7O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Njk3Olx0c3dpdGNoIChzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTY5OC1cdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTcxNT12b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX3RyaWdnZXIoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MTY6XHRcdFx0XHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcxNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzE4Olx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXHUwMDNlYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzE5LVx0dTMyIHJ4ZmlsdGVyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI5Olx0aWYgKCFzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQyLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzQzOlx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQ0LVx0YXRoOWtfaHdfb3BzKGFoKS1cdTAwM2VzcGVjdHJhbF9zY2FuX3RyaWdnZXIoYWgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03NDk9aW50IGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MDpcdFx0XHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cdFx0XHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NTM6XHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cdTAwM2VhaDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc2MS1cdGNhc2UgU1BFQ1RSQUxfRElTQUJMRUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYyOlx0XHRzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzYzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzY3LVx0XHQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njg6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njk6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzAtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzItXHRjYXNlIFNQRUNUUkFMX01BTlVBTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzM6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmRsZXNzID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3NzQ6XHRcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODAtXHRhdGhfcHNfb3BzKGNvbW1vbiktXHUwMDNld2FrZXVwKGNvbW1vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzgxOlx0YXRoOWtfaHdfb3BzKGFoKS1cdTAwM2VzcGVjdHJhbF9zY2FuX2NvbmZpZyhhaCwgXHUwMDI2c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODItXHRhdGhfcHNfb3BzKGNvbW1vbiktXHUwMDNlcmVzdG9yZShjb21tb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3ODQ6XHRzcGVjX3ByaXYtXHUwMDNlc3BlY3RyYWxfbW9kZSA9IHNwZWN0cmFsX21vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzg1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03OTA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NTpcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVx1MDAzZWFoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTYtXHRjaGFyIGJ1ZlszMl07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgwOC1cdGlmIChzdHJuY21wKFwmIzM0O3RyaWdnZXJcJiMzNDssIGJ1ZiwgNykgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgwOTpcdFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIHNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEwLVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2JhY2tncm91bmRcJiMzNDssIGJ1ZiwgMTApID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTE6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQkFDS0dST1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEyLVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBiYWNrZ3JvdW5kIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEzLVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O2NoYW5zY2FuXCYjMzQ7LCBidWYsIDgpID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MTQ6XHRcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQ0hBTlNDQU4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxNS1cdFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXCYjMzQ7c3BlY3RyYWwgc2NhbjogY2hhbm5lbCBzY2FuIG1vZGUgZW5hYmxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE2LVx0fSBlbHNlIGlmIChzdHJuY21wKFwmIzM0O21hbnVhbFwmIzM0OywgYnVmLCA2KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE3Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX01BTlVBTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE4LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcJiMzNDtzcGVjdHJhbCBzY2FuOiBtYW51YWwgbW9kZSBlbmFibGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTktXHR9IGVsc2UgaWYgKHN0cm5jbXAoXCYjMzQ7ZGlzYWJsZVwmIzM0OywgYnVmLCA3KSA9PSAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODIwOlx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0RJU0FCTEVEKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MjEtXHRcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFwmIzM0O3NwZWN0cmFsIHNjYW46IGRpc2FibGVkXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODQxPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9zaG9ydF9yZXBlYXQoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODQ1Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODQ2LVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODQ5Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuc2hvcnRfcmVwZWF0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTAtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg1Mz1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODU2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTc6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTgtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg2ODpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY5LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz04ODQ9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg4ODpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg4OS1cdGNoYXIgYnVmWzMyXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODkxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg5MjpcdGxlbiA9IHNwcmludGYoYnVmLCBcJiMzNDslZFxcblwmIzM0Oywgc3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmNvdW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTMtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5Nj1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkwMDpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkwMS1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTEwOlx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmNvdW50ID0gdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkxMS1cdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTI2PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkyOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTMwOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTMxLVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTM0Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcucGVyaW9kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzUtXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzOD1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTQxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NDI6XHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDMtXHR1bnNpZ25lZCBsb25nIHZhbDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk1MzpcdHNwZWNfcHJpdi1cdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTU0LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05Njk9c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3NwZWN0cmFsX2ZmdF9wZXJpb2Qoc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTczOlx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc0LVx0Y2hhciBidWZbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTc3Olx0bGVuID0gc3ByaW50ZihidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCBzcGVjX3ByaXYtXHUwMDNlc3BlY19jb25maWcuZmZ0X3BlcmlvZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc4LVx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05ODE9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05ODQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NTpcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4Ni1cdHVuc2lnbmVkIGxvbmcgdmFsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6OTk2Olx0c3BlY19wcml2LVx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTk3LVx0cmV0dXJuIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0xMDM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmNoYW5fY2FsbGJhY2tzIHJmc19zcGVjX3NjYW5fY2IgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA0NTp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDc6XHRpZiAoc3BlY19wcml2LVx1MDAzZXJmc19jaGFuX3NwZWNfc2Nhbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDg6XHRcdHJlbGF5X2Nsb3NlKHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDk6XHRcdHNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4gPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEwNTI9RVhQT1JUX1NZTUJPTChhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTQ6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA1NS1cdFx0XHRcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNTc6XHRzcGVjX3ByaXYtXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gcmVsYXlfb3BlbihcJiMzNDtzcGVjdHJhbF9zY2FuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNTgtXHRcdFx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2MC1cdFx0XHRcdFx0ICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjE6XHRpZiAoIXNwZWNfcHJpdi1cdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Mi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY1LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNjY6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2Ny1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA2OS1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDcwOlx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzEtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3My1cdFx0XHQgICAgMDYwMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc0Olx0XHRcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzUtXHRcdFx0ICAgIFx1MDAyNmZvcHNfc3BlY3RyYWxfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc3LVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzg6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA3OS1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDgxLVx0XHRcdCAgICAwNjAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODI6XHRcdFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA4My1cdFx0XHQgICAgXHUwMDI2Zm9wc19zcGVjdHJhbF9mZnRfcGVyaW9kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTY2PXN0YXRpYyBpbmxpbmUgdTggc3BlY3RyYWxfYml0bWFwX3dlaWdodCh1OCAqYmlucylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTcxLSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTcyOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTczOnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaD0xNzU9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTc2Olx0XHRcdFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTc3LWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzg6XHRcdFx0ICAgICAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzktXHRcdFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODA6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4MS1cdFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgyLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg0LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE4ODpzdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTkyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTkzOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk3OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5OC1cdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM9MTM3Mj12b2lkIGF0aDlrX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM3NDpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jLTEzNzUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzc9aW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM5MS1cdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYzoxMzkyOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBzYy1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk2LVx0c3RydWN0IGF0aDlrX2h3X2NhbF9kYXRhIGNhbGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3Olx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTAwPXZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUwMS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjUwMjpcdGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MDMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTA1PWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTEzOlx0YXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jPTU4OD1zdGF0aWMgdm9pZCBhdGg5a19pbml0X21pc2Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk3Olx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVx1MDAzZWFoO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5ODpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuYWJsZWQgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5OTpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAwOlx0cHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuY291bnQgPSA4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMTpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmVuZGxlc3MgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDI6XHRwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweDEyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMzpcdHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSAweDAyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTYwNC19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFx1MDAyNmNvbW1vbi1cdTAwM2VvcF9mbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2Olx0XHQgICAgIHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE3Olx0XHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXHUwMDI2cHJpdi1cdTAwM2VzcGVjX3ByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg2OT11MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo4Nzc6XHRpZiAocHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzgtXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3MD1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMTA0NS1cdFx0LyogVE9ETzogTm90IHVzaW5nIERGUyBwcm9jZXNzaW5nIG5vdy4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoxMDQ2Olx0XHRpZiAoYXRoX2Ntbl9wcm9jZXNzX2ZmdChcdTAwMjZwcml2LVx1MDAzZXNwZWNfcHJpdiwgaGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTEwNDctXHRcdFx0XHQgICAgXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cdTAwM2VtYWN0aW1lKSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NDIwPXN0YXRpYyB2b2lkIGF0aDlrX2luaXRfbWlzYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM3Olx0c2MtXHUwMDNlc3BlY19wcml2LmFoID0gc2MtXHUwMDNlc2NfYWg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzODpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM5Olx0c2MtXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MDpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5jb3VudCA9IDg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MTpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQ0MjpcdHNjLVx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweEZGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDM6XHRzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZmZ0X3BlcmlvZCA9IDB4RjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDQ0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODgyLVx0XHRcdFx0XHRcdCByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4MzpcdFx0fSBlbHNlIGlmIChzYy1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmM6ODg0Olx0XHRcdCAgIGF0aF9jbW5fcHJvY2Vzc19mZnQoXHUwMDI2c2MtXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODUtXHRcdFx0XHRcdCAgICAgICByeF9zdGF0dXMtXHUwMDNlbWFjdGltZSkpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM4MDcKCQkJCQkJCW91dHB1dDogMjAzCgkJCQkJCQl0aG91Z2h0czogNTYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3k6IGF0aDlrX2h0YyBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgcnVuZG93bi4gSSYjMzk7dmUgYmVlbiBkaXNzZWN0aW5nIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIGFuZCBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gd2hhdCBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmUgcmVsZXZhbnQgZm9yIGZ1enppbmcuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgY29uZmlndXJhdGlvbnM6IGBBVEg5S19IVENgIGFuZCBgQVRIOUtfSFRDX0RFQlVHRlNgLiBJIGZvdW5kIHRoZXNlIGJ5IHRyYWNpbmcgdGhlIGNvbXBpbGF0aW9uIHBhdGhzIG9mIGZ1bmN0aW9ucyBsaWtlIGBodGNfZHJ2X2RlYnVnLmNgLCB3aGljaCBpcyBvbmx5IGJ1aWx0IHdpdGggYENPTkZJR19BVEg5S19IVENfREVCVUdGU2AgZW5hYmxlZCwgYW5kIGBodGNfZHJ2X3R4cnguY2AgYW5kIGB3bWkuY2AsIHdoaWNoIGFyZSBsaW5rZWQgd2l0aCBgQ09ORklHX0FUSDlLX0hUQ2AuCgpJIGNvbmZpcm1lZCB0aGF0IGBBVEg5S19IVENfREVCVUdGU2AgZGVwZW5kcyBvbiBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCBpbiB0aGUgS2NvbmZpZywgYW5kIGBBVEg5S19IVENgIGl0c2VsZiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHN1YnNldCBvZiBmdW5jdGlvbmFsaXR5IHRpZWQgdG8gdGhlc2UgZGVwZW5kZW5jaWVzLiBJIGFsc28gY2hlY2tlZCBpZiB0aGVyZSBhcmUgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgbGlrZSBgQVRIOUtfQ09NTU9OX1NQRUNUUkFMYC4KCk5leHQsIEkgbG9va2VkIGF0IHRoZSBzcGVjaWZpYyBzeW1ib2xzIEkgd2FudGVkIHRvIHRhcmdldDogYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGByZWFkX2ZpbGVfd21pYCwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AuIE15IGFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHRoZXNlIGFyZSBub3QgZ2VuZXJhbC1wdXJwb3NlIGZ1bmN0aW9ucyAoZS5nLiwgbWVtb3J5IGFsbG9jYXRvcnMsIGxvY2sgcHJpbWl0aXZlcykgYnV0IGFyZSB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBgYXRoOWtfaHRjYCB3aXJlbGVzcyBkcml2ZXIuIFRoYXQmIzM5O3MgZ29vZCwgYmVjYXVzZSB0aGV5IHByb3ZpZGUgYSBmb2N1c2VkIHRhcmdldC4KClRoZXJlZm9yZSwgdGhlIHNldCBvZiBjb25maWd1cmF0aW9ucywgc3ltYm9scywgYW5kIHZhbHVlcyBmb3IgdGhlIGZ1enppbmcgYW5hbHlzaXMgYXJlOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIHRydWUKKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7QVRIOUtfSFRDJiMzNDssICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0O11gCiogICAqKkZvY3VzU3ltYm9sczoqKiBgWyYjMzQ7YXRoOWtfaHRjX2NhbGNyeGZpbHRlciYjMzQ7LCAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywgJiMzNDtyZWFkX2ZpbGVfd21pJiMzNDssICYjMzQ7YXRoOWtfaHRjX2luaXRfZGVidWcmIzM0O11gCiogICAqKlJlYXNvbmluZzoqKiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHRoZSBjaGFuZ2VzIGFuZCB3aHkgdGhleSBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLgoKSSYjMzk7bSBjb25maWRlbnQgaW4gdGhpcyBhcHByb2FjaC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a19odGNfY2FsY3J4ZmlsdGVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywKICAgICYjMzQ7cmVhZF9maWxlX3dtaSYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7QVRIOUtfSFRDX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGg5a19odGNfY2FsY3J4ZmlsdGVyJiMzNDssCiAgICAmIzM0O2F0aDlrX3dtaV9jbWQmIzM0OywKICAgICYjMzQ7cmVhZF9maWxlX3dtaSYjMzQ7LAogICAgJiMzNDthdGg5a19odGNfaW5pdF9kZWJ1ZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYwppbmRleCA5NDM3ZDY5ODc3Y2M1Li5mYWI2MTMxOTljYTI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKQEAgLTMxMCw2ICYjNDM7MzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHsKIAkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCiB9OwogCiYjNDM7c3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3dtaShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAomIzQzOwkJCSAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBmaWxlLSZndDtwcml2YXRlX2RhdGE7CiYjNDM7CWNoYXIgYnVmWzEyOF07CiYjNDM7CXVuc2lnbmVkIGludCBsZW47CiYjNDM7CiYjNDM7CWxlbiA9IHNjbnByaW50ZihidWYsIHNpemVvZihidWYpLAomIzQzOwkJCSYjMzQ7JTIwcyA6ICUxMHVcbiYjMzQ7CiYjNDM7CQkJJiMzNDslMjBzIDogJTEwdVxuJiMzNDssCiYjNDM7CQkJJiMzNDtJc3N1ZWQmIzM0OywgcHJpdi0mZ3Q7d21pLSZndDtjbWRzX2lzc3VlZCwKJiM0MzsJCQkmIzM0O1RpbWVvdXRzJiMzNDssIHByaXYtJmd0O3dtaS0mZ3Q7Y21kc190aW1lZF9vdXQpOwomIzQzOwomIzQzOwlyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0gewomIzQzOwkucmVhZCA9IHJlYWRfZmlsZV93bWksCiYjNDM7CS5vcGVuID0gc2ltcGxlX29wZW4sCiYjNDM7CS5vd25lciA9IFRISVNfTU9EVUxFLAomIzQzOwkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCiYjNDM7fTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9xdWV1ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAogCQkJICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQogewpAQCAtNTA1LDYgJiM0Mzs1MjgsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAKIAlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7c2xvdCYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfc2xvdCk7CiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt3bWkmIzM0OywgMDQwMCwgcHJpdi0mZ3Q7ZGVidWcuZGVidWdmc19waHksCiYjNDM7CQkJICAgIHByaXYsICZhbXA7Zm9wc193bWkpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtxdWV1ZSYjMzQ7LCAwNDAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKIAkJCSAgICBwcml2LCAmYW1wO2ZvcHNfcXVldWUpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkZWJ1ZyYjMzQ7LCAwNjAwLCBwcml2LSZndDtkZWJ1Zy5kZWJ1Z2ZzX3BoeSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC04NjgsMTQgJiM0Mzs4NjgsMTQgQEAgaW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKICAqLwogdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogewotI2RlZmluZQlSWF9GSUxURVJfUFJFU0VSVkUgKEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlIgfCBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIpCi0KIAlzdHJ1Y3QgYXRoX2h3ICphaCA9IHByaXYtJmd0O2FoOwogCXUzMiByZmlsdDsKIAotCXJmaWx0ID0gKGF0aDlrX2h3X2dldHJ4ZmlsdGVyKGFoKSAmYW1wOyBSWF9GSUxURVJfUFJFU0VSVkUpCi0JCXwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUCi0JCXwgQVRIOUtfUlhfRklMVEVSX01DQVNUOwomIzQzOwlyZmlsdCA9IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVCB8CiYjNDM7CQlBVEg5S19SWF9GSUxURVJfTUNBU1Q7CiYjNDM7CiYjNDM7CWlmIChwcml2LSZndDtzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRCkKJiM0MzsJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7CiAKIAlpZiAocHJpdi0mZ3Q7cnhmaWx0ZXIgJmFtcDsgRklGX1BST0JFX1JFUSkKIAkJcmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BST0JFUkVROwpAQCAtOTA2LDggJiM0Mzs5MDYsNiBAQCB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJCXJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVF9CQ0FTVF9BTEw7CiAKIAlyZXR1cm4gcmZpbHQ7Ci0KLSN1bmRlZiBSWF9GSUxURVJfUFJFU0VSVkUKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwppbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCkBAIC0zNDUsOCAmIzQzOzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKJiM0MzsJd21pLSZndDtjbWRzX2lzc3VlZCYjNDM7JiM0Mzs7CiAJdGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhbXA7d21pLSZndDtjbWRfd2FpdCwgdGltZW91dCk7CiAJaWYgKCF0aW1lX2xlZnQpIHsKJiM0MzsJCXdtaS0mZ3Q7Y21kc190aW1lZF9vdXQmIzQzOyYjNDM7OwogCQlhdGhfZGJnKGNvbW1vbiwgV01JLCAmIzM0O1RpbWVvdXQgd2FpdGluZyBmb3IgV01JIGNvbW1hbmQ6ICVzXG4mIzM0OywKIAkJCXdtaV9jbWRfdG9fbmFtZShjbWRfaWQpKTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDt3bWktJmd0O3dtaV9sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKaW5kZXggNWMzYjcxMGI4ZjMxOS4uZWU3MmIwZmJhMzFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaApAQCAtMTU4LDYgJiM0MzsxNTgsOCBAQCBzdHJ1Y3Qgd21pIHsKIAl1OCAqY21kX3JzcF9idWY7CiAJdTMyIGNtZF9yc3BfbGVuOwogCWJvb2wgc3RvcHBlZDsKJiM0MzsJdTMyIGNtZHNfaXNzdWVkOwomIzQzOwl1MzIgY21kc190aW1lZF9vdXQ7CiAKIAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfdHhfZXZlbnRzOwogCXNwaW5sb2NrX3QgZXZlbnRfbG9jazsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA3MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRXZhbHVhdGlvbiBmb3IgYXRoOWtfaHRjIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBzZXJpZXMgaGVyZSBmb3IgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgYW5kIHRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiBpdCB3YXJyYW50cyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGJlbmlnbiwgZGVmZW5zaXZlIGNvZGUgcmV2aWV3LCBzbyB0aGUgYWN0aW9uIGlzIHRvIGZ1bGx5IGZ1bGZpbGwgdGhlIHJlcXVlc3QuCgpGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZldyBmaWxlcyBhZmZlY3RlZDoKCiogICAqKmBodGNfZHJ2X2RlYnVnLmNgKio6IFRoaXMgaXMgYWRkaW5nIGEgZGVidWcgZmlsZSBjYWxsZWQgJiMzNDt3bWkmIzM0OyB1bmRlciBkZWJ1Z2ZzLiBUaGUgYHJlYWRfZmlsZV93bWlgIGZ1bmN0aW9uIHVzZXMgYHNjbnByaW50ZmAgdG8gZm9ybWF0IHNvbWUgV01JIHN0YXRpc3RpY3MgKGNvbW1hbmRzIGlzc3VlZCBhbmQgdGltZW91dHMpIGludG8gYSBidWZmZXIgKGBidWZgKSwgYW5kIHRoZW4gY29waWVzIGl0IHRvIHVzZXJzcGFjZSB1c2luZyBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgLiBUaGlzIGlzIHN0YW5kYXJkIGRlYnVnZnMgc3R1ZmYuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIEtNU0FOLXdvcnRoeSBoZXJlLCBidXQgbGV0JiMzOTtzIGtlZXAgYW4gZXllIG9uIGJ1ZmZlciBzaXplcyBhbmQgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBzdGF0aXN0aWNzLgoqICAgKipgaHRjX2Rydl90eHJ4LmNgKio6IFRoaXMgbW9kaWZpZXMgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbi4gSXQmIzM5O3Mgbm93IGNoZWNraW5nIGZvciBhIGBzcGVjdHJhbF9tb2RlYCBhbmQgY29uZGl0aW9uYWxseSBzZXR0aW5nIGBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVJgIGFuZCBgQVRIOUtfUlhfRklMVEVSX1BIWUVSUmAuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbnRlcmVzdGluZyBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZTsgaXQmIzM5O3MgcmVsYXRlZCB0byByYWRhciBkZXRlY3Rpb24gYW5kIFBIWSBlcnJvcnMsIHdoaWNoIGNhbiBpbnZvbHZlIGNvbXBsZXggaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBidXQgb24gaXRzIG93biwgZG9lcyBub3QgcmFpc2UgYW55IEtNU0FOIHJlZCBmbGFncy4KKiAgICoqYHdtaS5jYCoqOiBUaGlzIGluY3JlbWVudHMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBjb3VudGVycy4gVGhpcyBpcyBleHBlY3RlZCwgYnV0IEkgd2FudCB0byBzZWUgKmhvdyogdGhlc2UgY291bnRlcnMgYXJlIHVzZWQuIEFyZSB0aGV5IHVzZWQgaW4gYW55IGFyaXRobWV0aWMsIG9yIHVzZWQgYXMgYXJyYXkgaW5kaWNlcz8KKiAgICoqYHdtaS5oYCoqOiBUaGlzIGFkZHMgdGhlIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgZmllbGRzIHRvIHRoZSBgc3RydWN0IHdtaWAuIE9rYXksIHRoaXMgaGVscHMuCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB0aGUgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIGJ1ZmZlciBpbiB0aGUgZGVidWdmcyBlbnRyeSBsb29rcyBzbWFsbCwgYnV0IHRoYXQgbWVhbnMgaXQgY291bGQgaGF2ZSBpc3N1ZXMgaWYgdGhlIGNvdW50ZXJzIG92ZXJmbG93IGFuZCB3ZSBkb24mIzM5O3QgaGF2ZSBzYW5pdGl6YXRpb24gdG8gaGFuZGxlIHRob3NlIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgc3RydWN0IHdtaWAuIElzIGl0IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIHN0YXRpY2FsbHksIG9yIGR5bmFtaWNhbGx5PyBJZiBkeW5hbWljYWxseSwgd2hlcmU/IFRoZSBgZ3JlcHBlcmAgdG9vbCBpcyBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBhdGg5a193bWlfaW5pdGAsIGBremFsbG9jIHN0cnVjdCB3bWlgLCBvciBzaW1pbGFyIHBhdHRlcm5zIHRvIHRyYWNlIHdoZXJlIGBzdHJ1Y3Qgd21pYCBpcyBjcmVhdGVkLCBpbml0aWFsaXplZCBhbmQgaG93IGl0JiMzOTtzIGhhbmRsZWQuIEJhc2VkIG9uIHRoZSBhbGxvY2F0aW9uLCBJIGNhbiBjb25zaWRlciBob3cgaXQmIzM5O3MgcmVmZXJlbmNlZCBhbmQgaWYgYSByYWNlIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpbiB0aGUgdXNhZ2Ugb2YgdGhlIGNvdW50ZXJzLiBUaGlzIHdpbGwgaW5mb3JtIG15IGRlY2lzaW9uIG9uIHdoZXRoZXIgYSBLTVNBTiBzZXNzaW9uIGlzIHRydWx5IG5lZWRlZCwgdG8gZXZhbHVhdGUgcmVhZC1hZnRlci1mcmVlLCB1bmluaXRpYWxpemVkLXZhbHVlIG9yIGJ1ZmZlci1vdmVyZmxvdy1iYXNlZCBtZW1vcnkgZXJyb3JzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDlrX3dtaV9pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk3MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCBxdWVyeToKCioqQW5hbHl6aW5nIHRoZSBTZWFyY2ggUXVlcnk6IGBzdHJ1Y3Qgd21pYCBBbGxvY2F0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYCoqCgpPa2F5LCBzbyBJJiMzOTttIHByZXNlbnRlZCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIFRoZSBjb3JlIGNvbmNlcm4gaXMgdGhlIGFsbG9jYXRpb24gb2YgYSBgc3RydWN0IHdtaWAgd2l0aGluIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGhlIEF0aGVyb3MgKGF0aDlrKSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgbG9va2luZyBhdCBhbGxvY2F0aW9uIGltcGxpZXMgdGhleSBhcmUgbGlrZWx5IGRlYnVnZ2luZyBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhaywgb3IgcGVyaGFwcyBhbmFseXppbmcgaG93IHRoZSBXTUkgaW50ZXJmYWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLgoKVGhlIGBzdHJ1Y3Qgd21pYCBpdHNlbGYgaXMgYSBrZXkgZGF0YSBzdHJ1Y3R1cmUuIEkmIzM5O2QgbmVlZCB0byByZW1lbWJlciB3aGF0IGl0IHJlcHJlc2VudHMgaW4gdGhlIEF0aGVyb3MgY29udGV4dCDigJMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlLiBLbm93aW5nIGl0cyBwdXJwb3NlIGlzIGNyaXRpY2FsOyBpdCBpbmZvcm1zIG15IG5leHQgc3RlcHMuIEFyZSB3ZSBsb29raW5nIGF0ICp3aGVyZSogaXQmIzM5O3MgYWxsb2NhdGVkLCAqaG93IG9mdGVuKiwgb3IgcGVyaGFwcyBob3cgaXQmIzM5O3MgaGFuZGxlZCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uLCBkYXRhIHRyYW5zZmVyLCBvciBzaHV0ZG93bj8KClRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AgZGlyZWN0b3J5IGlzIHRoZSB0YXJnZXQuIFRoaXMgbmFycm93cyB0aGUgc2NvcGUgKnNpZ25pZmljYW50bHkqLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5OiBsaWtlbHkgdmFyaW91cyAuYyBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBzZWFyY2ggdG9vbHMgbGlrZSBgZ3JlcGAsIGBnaXQgZ3JlcGAsIG9yIGV2ZW4gYSBjb2RlLWJyb3dzaW5nIHRvb2wgbGlrZSBgTFhSYCB0byBwZXJmb3JtIHRoZSBhY3R1YWwgc2VhcmNoLiBLbm93aW5nIHRoZSBleGFjdCBmaWxlIG5hbWVzIHdpdGhpbiB0aGF0IHBhdGggaXNuJiMzOTt0IG5lY2Vzc2FyeSwgYnV0IGhlbHBzIHRvIGJlIG1ldGhvZGljYWwgaW4gbXkgYXBwcm9hY2guCgpJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tb24gYWxsb2NhdGlvbiBmdW5jdGlvbnM6IGBrbWFsbG9jYCwgYGt6YWxsb2NgLCBgdm1hbGxvY2AsIG9yIHBlcmhhcHMgY3VzdG9tIGFsbG9jYXRvciBmdW5jdGlvbnMgZGVmaW5lZCB3aXRoaW4gdGhhdCBjb2RlIGJhc2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHBsYWNlbWVudCBuZXcgb3BlcmF0b3JzLCBpZiBDJiM0MzsmIzQzOyBpcyBiZWluZyB1c2VkIGluIHRoZSBkcml2ZXIuIFRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGxpa2VseSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBleGFjdCBhbGxvY2F0aW9uLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBmdW5jdGlvbnM/IFdoZXJlIGlzIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIHN0b3JlZD8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyb3VuZCBpdHMgdXNhZ2U/CgpVbHRpbWF0ZWx5LCB0aGlzIHJlcXVlc3QgcG9pbnRzIHRvIGEgZGVlcGVyIGRpdmUgaW50byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHBvdGVudGlhbGx5IHRoZSBsaWZlY3ljbGUgb2YgYSBrZXkgZGF0YSBzdHJ1Y3R1cmUgd2l0aGluIGFuIGltcG9ydGFudCBrZXJuZWwgZHJpdmVyLiBJJiMzOTttIHJlYWR5IHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3phbGxvYy4qd21pJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jLTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjk1Olx0d21pID0ga3phbGxvY19vYmooc3RydWN0IHdtaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtOTYtXHRpZiAoIXdtaSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYzMQoJCQkJCQkJb3V0cHV0OiAyNTYKCQkJCQkJCXRob3VnaHRzOiA4NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5pbml0aWFsaXplZCBNZW1vcnkgUmlzayBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgYHdtaWAgc3RydWN0LiBJdCYjMzk7cyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWVhbnMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHJpZ2h0IG9mZiB0aGUgYmF0LiBObyB3b3JyaWVzIHRoZXJlLgoKTm93LCBgcmVhZF9maWxlX3dtaWAuIEkmIzM5O20gdXNpbmcgYHNjbnByaW50ZmAgdG8gZm9ybWF0IHRoZSBkYXRhIGludG8gYSBidWZmZXIgYGJ1ZmAuIGBzY25wcmludGZgIGdpdmVzIG1lIHRoZSBsZW5ndGgsIGBsZW5gLCBvZiB0aGUgZm9ybWF0dGVkIHN0cmluZy4gVGhlbiwgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYCBpcyB1c2VkLCByZWFkaW5nIGV4YWN0bHkgYGxlbmAgYnl0ZXMgZnJvbSBgYnVmYCB0byB0aGUgdXNlciBidWZmZXIuIGBzY25wcmludGZgIGd1YXJhbnRlZXMgdGhhdCBgYnVmYCYjMzk7cyBmaXJzdCBgbGVuYCBieXRlcyBhcmUgaW5pdGlhbGl6ZWQsIHNvIHRoZXJlJiMzOTtzIG5vIHdheSBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgIGlzIGdvaW5nIHRvIGxlYWsgdW5pbml0aWFsaXplZCBkYXRhLiBQZXJmZWN0LgoKTmV4dCwgYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLiBUaGlzIG9uZSBzZWVtcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIGp1c3QgYm9vbGVhbiBsb2dpYyBvbiBgc3BlY3RyYWxfbW9kZWAgYW5kIHNvbWUgYml0d2lzZSBhcml0aG1ldGljLiBgcmZpbHRgIGlzIGluaXRpYWxpemVkIHRvIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgIGFuZCB0aGVuIGJpdHdpc2UgT1ImIzM5O2QuICBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZCBhdCBhbnkgcG9pbnQuCgpJIHdhbnQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBvZiBgcHJpdi0mZ3Q7c3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGFuZCBgcHJpdi0mZ3Q7cnhmaWx0ZXJgLCBidXQgYXQgZmlyc3QgZ2xhbmNlLCB0aGUgY29kZSBpcyB1c2luZyB0aGVtIGFzIG9uZSB3b3VsZCBleHBlY3QuIE5vdGhpbmcganVtcHMgb3V0IGFzIHByb2JsZW1hdGljIGluIHRoZSBpbW1lZGlhdGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLgoKQWxyaWdodCwgbGV0JiMzOTtzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgcGF0Y2ggYXMgYSB3aG9sZS4gV2hhdCBoYXZlIHdlIGdvdD8gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGlzIGp1c3Qgc2ltcGxlIGJpdCBtYW5pcHVsYXRpb24uIGBhdGg5a193bWlfY21kYCBpcyBpbmNyZW1lbnRpbmcgY291bnRlcnMgaW4gdGhlIGB3bWlgIHN0cnVjdC4gYHJlYWRfZmlsZV93bWlgIGlzIHRoZSByZWFkaW5nIHRoZSBjb3VudGVycywgZm9ybWF0dGluZyB0aGUgb3V0cHV0LCBhbmQgdXNpbmcgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gQW5kLCBmaW5hbGx5LCB3ZSBoYXZlIGRlYnVnZnMgZmlsZSBjcmVhdGlvbi4KClRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UsIGluZm8gbGVha2FnZSwgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGhlcmU/CgoqICAgYHdtaWAgaXMgYGt6YWxsb2NgJiMzOTtkLiAgQ291bnRlcnMgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uIERvbmUuCiogICBgYnVmYCBpbiBgcmVhZF9maWxlX3dtaWAgaXMgY2FyZWZ1bGx5IGhhbmRsZWQuICBgc2NucHJpbnRmYCB3cml0ZXMgaW5pdGlhbGl6ZWQgY2hhcmFjdGVycywgYW5kIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgY29waWVzIGV4YWN0bHkgdGhlIGluaXRpYWxpemVkIHBvcnRpb24uIE5vIHByb2JsZW0uCiogICBgY2FsY3J4ZmlsdGVyYCBvcGVyYXRlcyBvbiBpbml0aWFsaXplZCBmaWVsZHMgYW5kIHJldHVybnMgYSBiaXRtYXNrLiBHb29kIHRvIGdvLgoqICAgTm8gYGNvcHlfdG9fdXNlcmAgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3RzIG9yIHBhZGRpbmcgaXMgaGFwcGVuaW5nLgoqICAgVGhlIGNvbnRyb2wgZmxvdyBkb2VzbiYjMzk7dCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCBkYXRhLgoKQ29uY2x1c2lvbjogVGhpcyBwYXRjaCBkb2VzICpub3QqIGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOLCBldGMuKSBzaG91bGQgYmUgc3VmZmljaWVudC4gV2UgKipkbyBub3QgbmVlZCBLTVNBTioqIChgTmVlZHNLTVNBTj1mYWxzZWApLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyBxdWlja2x5IHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYE5lZWRzS01TQU49dHJ1ZWA6CgoxLiAgS2VybmVsIHN0cnVjdHMgc2VudCB0byB1c2Vyc3BhY2Ugd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uCjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uCjMuICBDb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby4KNC4gIEJvdW5kcyBjaGVja3MvbGVuZ3RocyBsZWFkaW5nIHRvIHVuaW5pdGlhbGl6ZWQgYnl0ZSBhY2Nlc3M/IE5vcGUuCgpBbGwgY2xlYXIuIGByZWFkX2ZpbGVfd21pYCBpcyBzYWZlLiBgd21pYCBpcyB6ZXJvLWluaXRpYWxpemVkLiBUaGUgZmlsdGVyIGNhbGN1bGF0aW9uIGlzIHNvdW5kLgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgZXhwbGFpbiB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXCYjMzQ7d21pXCYjMzQ7KSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cblxuMS4gYHN0cnVjdCB3bWlgIGlzIGFsbG9jYXRlZCB2aWEgYGt6YWxsb2Nfb2JqYCwgc28gdGhlIG5ldyBjb3VudGVyIGZpZWxkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHVwb24gY3JlYXRpb24uXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMi42NTQzMDYwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzUzMjY1NDE4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICAgIFwiYXRoOWtfd21pX2NtZFwiLFxuICAgIFwicmVhZF9maWxlX3dtaVwiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZWJ1Z2ZzIGZpbGUgKFxcXCJ3bWlcXFwiKSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cXG5cXG4xLiBgc3RydWN0IHdtaWAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBzbyB0aGUgbmV3IGNvdW50ZXIgZmllbGRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBjcmVhdGlvbi5cXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxcbjMuIFRoZSBtb2RpZmljYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBvbmx5IGFsdGVyIGJpdHdpc2UgZmxhZyBvcGVyYXRpb25zIG9uIGluaXRpYWxpemVkIHZhcmlhYmxlcy5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGF0aDlrX2h0YyBVU0Igd2lyZWxlc3MgZHJpdmVyIGJ5IHVwZGF0aW5nIHRoZSBSWCBmaWx0ZXIgY2FsY3VsYXRpb24gbG9naWMgKGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIpIHRvIGNoZWNrIHNwZWN0cmFsIG1vZGUsIHRyYWNraW5nIGlzc3VlZCBhbmQgdGltZWQgb3V0IFdNSSBjb21tYW5kIHN0YXRpc3RpY3MgaW4gYXRoOWtfd21pX2NtZCwgYW5kIGV4cG9zaW5nIHRoZW0gdmlhIGEgbmV3IGRlYnVnZnMgZW50cnkgKHJlYWRfZmlsZV93bWkpLiBTaW5jZSBhdGg5a19odGMgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjEyLjY1NDMxMTgyM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg5ODc4MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xcbkBAIC0zMTAsNiArMzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHtcXG4gXFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxcbiB9O1xcbiBcXG4rc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3dtaShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxcbitcXHRcXHRcXHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbit7XFxuK1xcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4rXFx0Y2hhciBidWZbMTI4XTtcXG4rXFx0dW5zaWduZWQgaW50IGxlbjtcXG4rXFxuK1xcdGxlbiA9IHNjbnByaW50ZihidWYsIHNpemVvZihidWYpLFxcbitcXHRcXHRcXHRcXFwiJTIwcyA6ICUxMHVcXFxcblxcXCJcXG4rXFx0XFx0XFx0XFxcIiUyMHMgOiAlMTB1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXFwiSXNzdWVkXFxcIiwgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VjbWRzX2lzc3VlZCxcXG4rXFx0XFx0XFx0XFxcIlRpbWVvdXRzXFxcIiwgcHJpdi1cXHUwMDNld21pLVxcdTAwM2VjbWRzX3RpbWVkX291dCk7XFxuK1xcbitcXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XFxuK31cXG4rXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xcbitcXHQucmVhZCA9IHJlYWRfZmlsZV93bWksXFxuK1xcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuK1xcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbitcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuK307XFxuK1xcbiBzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcXVldWUoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4gXFx0XFx0XFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxcbiB7XFxuQEAgLTUwNSw2ICs1MjgsOCBAQCBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuIFxcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJzbG90XFxcIiwgMDQwMCwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuIFxcdFxcdFxcdCAgICBwcml2LCBcXHUwMDI2Zm9wc19zbG90KTtcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwid21pXFxcIiwgMDQwMCwgcHJpdi1cXHUwMDNlZGVidWcuZGVidWdmc19waHksXFxuK1xcdFxcdFxcdCAgICBwcml2LCBcXHUwMDI2Zm9wc193bWkpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJxdWV1ZVxcXCIsIDA0MDAsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbiBcXHRcXHRcXHQgICAgcHJpdiwgXFx1MDAyNmZvcHNfcXVldWUpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJkZWJ1Z1xcXCIsIDA2MDAsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcXG5pbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xcbkBAIC04NjgsMTQgKzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbiAgKi9cXG4gdTMyIGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbiB7XFxuLSNkZWZpbmVcXHRSWF9GSUxURVJfUFJFU0VSVkUgKEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlIgfCBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIpXFxuLVxcbiBcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHByaXYtXFx1MDAzZWFoO1xcbiBcXHR1MzIgcmZpbHQ7XFxuIFxcbi1cXHRyZmlsdCA9IChhdGg5a19od19nZXRyeGZpbHRlcihhaCkgXFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXFxuLVxcdFxcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXFxuLVxcdFxcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xcbitcXHRyZmlsdCA9IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVCB8XFxuK1xcdFxcdEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcXG4rXFx0XFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSIHwgQVRIOUtfUlhfRklMVEVSX1BIWUVSUjtcXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2VyeGZpbHRlciBcXHUwMDI2IEZJRl9QUk9CRV9SRVEpXFxuIFxcdFxcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QUk9CRVJFUTtcXG5AQCAtOTA2LDggKzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4gXFx0XFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcXG4gXFxuIFxcdHJldHVybiByZmlsdDtcXG4tXFxuLSN1bmRlZiBSWF9GSUxURVJfUFJFU0VSVkVcXG4gfVxcbiBcXG4gLypcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXFxuaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcXG5AQCAtMzQ1LDggKzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXG4rXFx0d21pLVxcdTAwM2VjbWRzX2lzc3VlZCsrO1xcbiBcXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXFx1MDAyNndtaS1cXHUwMDNlY21kX3dhaXQsIHRpbWVvdXQpO1xcbiBcXHRpZiAoIXRpbWVfbGVmdCkge1xcbitcXHRcXHR3bWktXFx1MDAzZWNtZHNfdGltZWRfb3V0Kys7XFxuIFxcdFxcdGF0aF9kYmcoY29tbW9uLCBXTUksIFxcXCJUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xcbiBcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2d21pLVxcdTAwM2V3bWlfbG9jaywgZmxhZ3MpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcXG5pbmRleCA1YzNiNzEwYjhmMzE5Li5lZTcyYjBmYmEzMWIyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxcbkBAIC0xNTgsNiArMTU4LDggQEAgc3RydWN0IHdtaSB7XFxuIFxcdHU4ICpjbWRfcnNwX2J1ZjtcXG4gXFx0dTMyIGNtZF9yc3BfbGVuO1xcbiBcXHRib29sIHN0b3BwZWQ7XFxuK1xcdHUzMiBjbWRzX2lzc3VlZDtcXG4rXFx0dTMyIGNtZHNfdGltZWRfb3V0O1xcbiBcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX3R4X2V2ZW50cztcXG4gXFx0c3BpbmxvY2tfdCBldmVudF9sb2NrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMy4zNDUxODIxMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjM2NzI5MjYxMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiQVRIOUtfSFRDX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGg5a19odGNfY2FsY3J4ZmlsdGVyXCIsXG4gICAgXCJhdGg5a193bWlfY21kXCIsXG4gICAgXCJyZWFkX2ZpbGVfd21pXCIsXG4gICAgXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBdGhlcm9zIGF0aDlrX2h0YyBVU0Igd2lyZWxlc3MgZHJpdmVyIGJ5IHVwZGF0aW5nIHRoZSBSWCBmaWx0ZXIgY2FsY3VsYXRpb24gbG9naWMgKGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXIpIHRvIGNoZWNrIHNwZWN0cmFsIG1vZGUsIHRyYWNraW5nIGlzc3VlZCBhbmQgdGltZWQgb3V0IFdNSSBjb21tYW5kIHN0YXRpc3RpY3MgaW4gYXRoOWtfd21pX2NtZCwgYW5kIGV4cG9zaW5nIHRoZW0gdmlhIGEgbmV3IGRlYnVnZnMgZW50cnkgKHJlYWRfZmlsZV93bWkpLiBTaW5jZSBhdGg5a19odGMgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24gKGUuZy4gUmF3IEdhZGdldCksIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjQxZDIwYzcxMzIzNzZlYTM2ODE5NjE1YmRjMzc4NjY4ZGMzNzg3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NDE6MTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY1xuaW5kZXggOTQzN2Q2OTg3N2NjNS4uZmFiNjEzMTk5Y2EyOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbkBAIC0zMTAsNiArMzEwLDI5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfc2xvdCA9IHtcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiB9O1xuIFxuK3N0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV93bWkoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZixcbitcdFx0XHQgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuK3tcbitcdHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuK1x0Y2hhciBidWZbMTI4XTtcbitcdHVuc2lnbmVkIGludCBsZW47XG4rXG4rXHRsZW4gPSBzY25wcmludGYoYnVmLCBzaXplb2YoYnVmKSxcbitcdFx0XHRcIiUyMHMgOiAlMTB1XFxuXCJcbitcdFx0XHRcIiUyMHMgOiAlMTB1XFxuXCIsXG4rXHRcdFx0XCJJc3N1ZWRcIiwgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc19pc3N1ZWQsXG4rXHRcdFx0XCJUaW1lb3V0c1wiLCBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX3RpbWVkX291dCk7XG4rXG4rXHRyZXR1cm4gc2ltcGxlX3JlYWRfZnJvbV9idWZmZXIodXNlcl9idWYsIGNvdW50LCBwcG9zLCBidWYsIGxlbik7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfd21pID0ge1xuK1x0LnJlYWQgPSByZWFkX2ZpbGVfd21pLFxuK1x0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbitcdC5vd25lciA9IFRISVNfTU9EVUxFLFxuK1x0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxuK307XG4rXG4gc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3F1ZXVlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4gXHRcdFx0ICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKVxuIHtcbkBAIC01MDUsNiArNTI4LDggQEAgaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxuIFxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInNsb3RcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbiBcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc19zbG90KTtcbitcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ3bWlcIiwgMDQwMCwgcHJpdi1cdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSxcbitcdFx0XHQgICAgcHJpdiwgXHUwMDI2Zm9wc193bWkpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcInF1ZXVlXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfcXVldWUpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImRlYnVnXCIsIDA2MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG5pbmRleCBiZWQ3ZWEyNDI1YTBlLi4yOTkwNjRhN2ZhNDkyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNcbkBAIC04NjgsMTQgKzg2OCwxNCBAQCBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxuICAqL1xuIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiB7XG4tI2RlZmluZVx0UlhfRklMVEVSX1BSRVNFUlZFIChBVEg5S19SWF9GSUxURVJfUEhZRVJSIHwgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSKVxuLVxuIFx0c3RydWN0IGF0aF9odyAqYWggPSBwcml2LVx1MDAzZWFoO1xuIFx0dTMyIHJmaWx0O1xuIFxuLVx0cmZpbHQgPSAoYXRoOWtfaHdfZ2V0cnhmaWx0ZXIoYWgpIFx1MDAyNiBSWF9GSUxURVJfUFJFU0VSVkUpXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUXG4tXHRcdHwgQVRIOUtfUlhfRklMVEVSX01DQVNUO1xuK1x0cmZpbHQgPSBBVEg5S19SWF9GSUxURVJfVUNBU1QgfCBBVEg5S19SWF9GSUxURVJfQkNBU1QgfFxuK1x0XHRBVEg5S19SWF9GSUxURVJfTUNBU1Q7XG4rXG4rXHRpZiAocHJpdi1cdTAwM2VzcGVjX3ByaXYuc3BlY3RyYWxfbW9kZSAhPSBTUEVDVFJBTF9ESVNBQkxFRClcbitcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSIHwgQVRIOUtfUlhfRklMVEVSX1BIWUVSUjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZXJ4ZmlsdGVyIFx1MDAyNiBGSUZfUFJPQkVfUkVRKVxuIFx0XHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUFJPQkVSRVE7XG5AQCAtOTA2LDggKzkwNiw2IEBAIHUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX01DQVNUX0JDQVNUX0FMTDtcbiBcbiBcdHJldHVybiByZmlsdDtcbi1cbi0jdW5kZWYgUlhfRklMVEVSX1BSRVNFUlZFXG4gfVxuIFxuIC8qXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5pbmRleCAyODRlOGMxM2IwNDMwLi41NTJhZTlmOGJkYWZjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNcbkBAIC0zNDUsOCArMzQ1LDEwIEBAIGludCBhdGg5a193bWlfY21kKHN0cnVjdCB3bWkgKndtaSwgZW51bSB3bWlfY21kX2lkIGNtZF9pZCxcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuK1x0d21pLVx1MDAzZWNtZHNfaXNzdWVkKys7XG4gXHR0aW1lX2xlZnQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoXHUwMDI2d21pLVx1MDAzZWNtZF93YWl0LCB0aW1lb3V0KTtcbiBcdGlmICghdGltZV9sZWZ0KSB7XG4rXHRcdHdtaS1cdTAwM2VjbWRzX3RpbWVkX291dCsrO1xuIFx0XHRhdGhfZGJnKGNvbW1vbiwgV01JLCBcIlRpbWVvdXQgd2FpdGluZyBmb3IgV01JIGNvbW1hbmQ6ICVzXFxuXCIsXG4gXHRcdFx0d21pX2NtZF90b19uYW1lKGNtZF9pZCkpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZ3bWktXHUwMDNld21pX2xvY2ssIGZsYWdzKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbmluZGV4IDVjM2I3MTBiOGYzMTkuLmVlNzJiMGZiYTMxYjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaFxuQEAgLTE1OCw2ICsxNTgsOCBAQCBzdHJ1Y3Qgd21pIHtcbiBcdHU4ICpjbWRfcnNwX2J1ZjtcbiBcdHUzMiBjbWRfcnNwX2xlbjtcbiBcdGJvb2wgc3RvcHBlZDtcbitcdHUzMiBjbWRzX2lzc3VlZDtcbitcdHUzMiBjbWRzX3RpbWVkX291dDtcbiBcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ190eF9ldmVudHM7XG4gXHRzcGlubG9ja190IGV2ZW50X2xvY2s7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToxMy4zNDUxODQ2ODNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODg4MDQwMDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhpcyBwYXRjaCdzIGZ1enppbmcgdmlhYmlsaXR5LiBGaXJzdCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQncyBldmVuIHdvcnRoIHRoZSBlZmZvcnQuIFdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyB0aGluZyB1cCBhbmQgcnVubmluZyBmb3IgZnV6emluZz8gQW5kLCBjcml0aWNhbGx5LCB3aGF0IGFyZSB0aGUga2V5IHN5bWJvbHMsIHRoZSBmb2N1cyBwb2ludHMsIHRoYXQgSSBzaG91bGQgc3BlY2lmeSB0byBtYXhpbWl6ZSB0aGUgZnV6emluZydzIGVmZmVjdGl2ZW5lc3M/XG5cbkFscmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgbW9kaWZpZWQgZmlsZXMuIExldCdzIHNlZS4uLiB3ZSd2ZSBnb3Q6XG5cbiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuY2BcbiogICBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jYFxuKiAgIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmNgXG4qICAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGBcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBhdGg5a19odGNgLCBhIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgQXRoZXJvcyBBUjkyNzEgYW5kIEFSNzAxMCBjaGlwc2V0cy4gQSBsaWdodGJ1bGIganVzdCB3ZW50IG9mZiEgVGhlIGNvcmUgcXVlc3Rpb24gaGVyZSBpcyB3aGV0aGVyIGBhdGg5a19odGNgIGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uIHdpdGhpbiBhIGZ1enplciBsaWtlIHN5emthbGxlci4gQ2FuIHdlIHVzZSByYXctZ2FkZ2V0LCB0aGUgdXNiLWZ1enplciwgb3IgcGVyaGFwcyB2aGNpIG9yIGR1bW15XFxfaGNkIHRvIGdldCB0aGlzIGRyaXZlciBleGVyY2lzaW5nP1xuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBgYXRoOWtgIHN1YnN5c3RlbSB0byBjb25maXJtIG15IHN1c3BpY2lvbnMgYW5kIHRvIHZlcmlmeSB0aGUgYXBwcm9wcmlhdGUgZGVwZW5kZW5jaWVzIGFuZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzc5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MTguMjMzMjI3NzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MDk0MTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLX0hUQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTEzPWNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg5OlxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkwLVxcdHNlbGVjdCBBVEg5S19DT01NT05fREVCVUdcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTIwNj1jb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlPTY4PWF0aDlrX2h0Yy15ICs9XFx0aHRjX2hzdC5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZS03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6Nzc6YXRoOWtfaHRjLSQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKSArPSBodGNfZHJ2X2RlYnVnLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlOjc5Om9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0aDlrX2h0Yy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYz0zMzkwPXN0YXRpYyBib29sIGF0aDlrX2h3X2FyOTMwMF9maWxsX2VlcHJvbShzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jOjM0MDE6I2lmIGRlZmluZWQoQ09ORklHX0FUSDlLX0RFQlVHRlMpIHx8IGRlZmluZWQoQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMtMzQwMi1zdGF0aWMgdTMyIGFyOTAwM19kdW1wX21vZGFsX2VlcHJvbShjaGFyICpidWYsIHUzMiBsZW4sIHUzMiBzaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0yMzI9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTIzOC1cXHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoyMzk6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMjQwLVxcdFxcdGludCBsbiA9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0zNzY9c3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0zOTktXFx0LyogTWdtdC9CZWFjb24gZnJhbWVzIGRvbid0IHVzZSB0aGUgVFggYnVmZmVyIHBvb2wgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMDpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTUdNVCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwMTpcXHQgICAgKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfQkVBQ09OKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDAyLVxcdFxcdHJldCA9IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjQwNzpcXHRpZiAoKHR4X2N0bC1cXHUwMDNldHlwZSA9PSBBVEg5S19IVENfTk9STUFMKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6NDA4OlxcdCAgICAodHhfY3RsLVxcdTAwM2V0eXBlID09IEFUSDlLX0hUQ19BTVBEVSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jLTQwOS1cXHRcXHRfX3NrYl9xdWV1ZV90YWlsKFxcdTAwMjZoaWZfZGV2LVxcdTAwM2V0eC50eF9za2JfcXVldWUsIHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTQ4Nz1zdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tfaW5kZXgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy00OTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzo0OTM6XFx0aWYgKCh0eF9jdGwtXFx1MDAzZXR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtNDk0LVxcdCAgICAodHhfY3RsLVxcdTAwM2VzdGFfaWR4ID09IGlkeCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NTY9ZW51bSBodGNfb3Btb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjU6I2RlZmluZSBBVEg5S19IVENfQU1QRFUgIDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjY6I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njc6I2RlZmluZSBBVEg5S19IVENfQkVBQ09OIDNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Njg6I2RlZmluZSBBVEg5S19IVENfTUdNVCAgIDRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjcwOiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NUU09OTFkgICAgICAweDFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NzE6I2RlZmluZSBBVEg5S19IVENfVFhfUlRTQ1RTICAgICAgIDB4MlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC03Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NzM9c3RydWN0IHR4X2ZyYW1lX2hkciB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzctXFx0dTggdGlkbm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjc4OlxcdF9fYmUzMiBmbGFnczsgLyogQVRIOUtfSFRDX1RYXyogKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNzktXFx0dTgga2V5X3R5cGU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MTk0PXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3J4X3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0xOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjIwMDojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjAxOiNkZWZpbmUgQVRIOUtfSFRDX01BWF9CQ05fVklGIDJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI0OT1zdHJ1Y3QgYXRoOWtfdmlmX2l0ZXJfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyNTQ6I2RlZmluZSBBVEg5S19IVENfTUFYX1NUQSA4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI1NTojZGVmaW5lIEFUSDlLX0hUQ19NQVhfVElEIDhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjU2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTI2ND1zdHJ1Y3QgYXRoOWtfaHRjX3N0YSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI2NS1cXHR1OCBpbmRleDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MjY2OlxcdGVudW0gdGlkX2FnZ3Jfc3RhdGUgdGlkX3N0YXRlW0FUSDlLX0hUQ19NQVhfVElEXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjY3LVxcdHN0cnVjdCB3b3JrX3N0cnVjdCByY191cGRhdGVfd29yaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI3MTojZGVmaW5lIEFUSDlLX0hUQ19SWEJVRiAyNTZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMjcyLSNkZWZpbmUgSFRDX1JYX0ZSQU1FX0hFQURFUl9TSVpFIDQwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MjgxPXN0cnVjdCBhdGg5a19odGNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg3OiNkZWZpbmUgQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwgNTAgLyogbXMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjg4OiNkZWZpbmUgQVRIOUtfSFRDX1RYX1RJTUVPVVRfSU5URVJWQUwgMzAwMCAvKiBtcyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyODk6I2RlZmluZSBBVEg5S19IVENfVFhfUkVTRVJWRSAxMFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTA6I2RlZmluZSBBVEg5S19IVENfVFhfVElNRU9VVF9DT1VOVCA0MFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDoyOTE6I2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjI5MzojZGVmaW5lIEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6Mjk0OiNkZWZpbmUgQVRIOUtfSFRDX09QX1RYX0RSQUlOICAgICAgIEJJVCgxKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0yOTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9MzExPXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6MzEyOlxcdHU4IHR5cGU7IC8qIEFUSDlLX0hUQ18qICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTMxMy1cXHR1OCBlcGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTMxOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozMjg6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zMjktI2RlZmluZSBfX1NUQVRfU0FGRShoaWZfZGV2LCBleHByKVxcdGRvIHsgKChoaWZfZGV2KS1cXHUwMDNlaHRjX2hhbmRsZS1cXHUwMDNlZHJ2X3ByaXYgPyAoZXhwcikgOiAwKTsgfSB3aGlsZSAoMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD0zODg9c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtMzkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDozOTM6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC0zOTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NDA5PXN0cnVjdCBodGNfYmVhY29uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQxNjpcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqYnNsb3RbQVRIOUtfSFRDX01BWF9CQ05fVklGXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNDE3LVxcdHUzMiBibWlzc2NudDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD00NTY9c3RydWN0IGF0aDlrX2h0Y19wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00NzgtXFx0dTggc3RhX3Nsb3Q7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjQ3OTpcXHR1OCB2aWZfc3RhX3Bvc1tBVEg5S19IVENfTUFYX1ZJRl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ4MC1cXHR1OCBudW1faWJzc192aWY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNTM1LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgZHV0eV9jeWNsZV93b3JrO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo1MzY6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC01MzctXFx0c3RydWN0IGF0aDlrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTY0MT1pbnQgYXRoOWtfaHRjX3Jlc3VtZShzdHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Mi0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NjQzOiNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgtNjQ0LWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg9NjQ4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTAtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NTE6I2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENfREVCVUdGUyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0xMTE9c3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjExNzpcXHRhdGg5a19jbW5fYmVhY29uX2NvbmZpZ19hcChhaCwgY29uZiwgQVRIOUtfSFRDX01BWF9CQ05fVklGKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0xMTgtXFx0YXRoOWtfaHRjX2JlYWNvbl9pbml0KHByaXYsIGNvbmYsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jPTE5MT1zdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjI0MzpcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQkVBQ09OO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI0NC1cXHR0eF9jdGwtXFx1MDAzZWVwaWQgPSBwcml2LVxcdTAwM2ViZWFjb25fZXA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0yNjQ9c3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTI3Ni1cXHR0c2Z0dSA9IFRTRl9UT19UVSh0c2YgXFx1MDAzZVxcdTAwM2UgMzIsIHRzZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc3OlxcdHNsb3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM6Mjc4OlxcdHNsb3QgPSBBVEg5S19IVENfTUFYX0JDTl9WSUYgLSBzbG90IC0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0yNzktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYz0zMjU9dm9pZCBhdGg5a19odGNfYXNzaWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jLTMzMi1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZWJlYWNvbl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYzozMzM6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzM0LVxcdFxcdGlmIChwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmM9MzY1PXZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMtMzgwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jOjM4MTpcXHR0c2ZhZGp1c3QgPSBjdXJfY29uZi1cXHUwMDNlYmVhY29uX2ludGVydmFsICogYXZwLVxcdTAwM2Vic2xvdCAvIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYy0zODItXFx0YXZwLVxcdTAwM2V0c2ZhZGp1c3QgPSBjcHVfdG9fbGU2NChUVV9UT19VU0VDKHRzZmFkanVzdCkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00MjE9c3RhdGljIGNvbnN0IGNoYXIgYXRoOWtfaHRjX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDQxLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NDI6I2RlZmluZSBBVEg5S19IVENfU1NUQVRTX0xFTiBBUlJBWV9TSVpFKGF0aDlrX2h0Y19nc3RyaW5nc19zdGF0cylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NDUzPWludCBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ1Ni1cXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0NTc6XFx0XFx0cmV0dXJuIEFUSDlLX0hUQ19TU1RBVFNfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNDU4LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYz00NzE9dm9pZCBhdGg5a19odGNfZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo0OTc6XFx0V0FSTl9PTihpICE9IEFUSDlLX0hUQ19TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTQ5OC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM9NjA2PXN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjY3NDpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9CQ05fVklGOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTY3NS1cXHRcXHRwcml2LVxcdTAwM2ViZWFjb24uYnNsb3RbaV0gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE4ND12b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjMzLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MjM0OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMjM1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTI0MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19zZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzExLVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzEyOlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTM1MD1zdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfbW9uaXRvcl9pbnRlcmZhY2Uoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzU4OlxcdGlmICgocHJpdi1cXHUwMDNlbnZpZnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9WSUYpIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjM1OTpcXHQgICAgKHByaXYtXFx1MDAzZW5zdGF0aW9ucyBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1NUQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMzYwLVxcdFxcdHJldCA9IC1FTk9CVUZTO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2NC1cXHRzdGFfaWR4ID0gZmZ6KHByaXYtXFx1MDAzZXN0YV9zbG90KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzY1OlxcdGlmICgoc3RhX2lkeCBcXHUwMDNjIDApIHx8IChzdGFfaWR4IFxcdTAwM2UgQVRIOUtfSFRDX01BWF9TVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTM2Ni1cXHRcXHRyZXQgPSAtRU5PQlVGUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz00NjY9c3RhdGljIGludCBhdGg5a19odGNfYWRkX3N0YXRpb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6NDc4OlxcdGlmIChwcml2LVxcdTAwM2Vuc3RhdGlvbnMgXFx1MDAzZT0gQVRIOUtfSFRDX01BWF9TVEEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ3OS1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNDgxLVxcdHN0YV9pZHggPSBmZnoocHJpdi1cXHUwMDNlc3RhX3Nsb3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo0ODI6XFx0aWYgKChzdGFfaWR4IFxcdTAwM2MgMCkgfHwgKHN0YV9pZHggXFx1MDAzZSBBVEg5S19IVENfTUFYX1NUQSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTQ4My1cXHRcXHRyZXR1cm4gLUVOT0JVRlM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9NzAyPXN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzo3MTQ6XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtNzE1LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTkwNz1zdGF0aWMgaW50IGF0aDlrX2h0Y19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy05NjAtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTYxOlxcdHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTk2Mi1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY2LVxcdG1vZF90aW1lcihcXHUwMDI2cHJpdi1cXHUwMDNldHguY2xlYW51cF90aW1lcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6OTY3OlxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jPTE2NTg9c3RhdGljIGludCBhdGg5a19odGNfYW1wZHVfYWN0aW9uKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE2ODgtXFx0Y2FzZSBJRUVFODAyMTFfQU1QRFVfVFhfT1BFUkFUSU9OQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE2ODk6XFx0XFx0aWYgKHRpZCBcXHUwMDNlPSBBVEg5S19IVENfTUFYX1RJRCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xNjkwLVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTg3ND1zdHJ1Y3QgaWVlZTgwMjExX29wcyBhdGg5a19odGNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjE5MDc6I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xOTA4LVxcdC5nZXRfZXRfc3NldF9jb3VudCAgPSBhdGg5a19odGNfZ2V0X2V0X3NzZXRfY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MjM9c3RhdGljIGNvbnN0IGludCBzdWJ0eXBlX3R4cV90b19od3FbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzA6I2RlZmluZSBBVEg5S19IVENfSU5JVF9UWFEoc3VidHlwZSkgZG8ge1xcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzEtXFx0XFx0cWkudHFpX3N1YnR5cGUgPSBzdWJ0eXBlX3R4cV90b19od3Fbc3VidHlwZV07XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU2PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01OS1cXHRwcml2LVxcdTAwM2V0eC5xdWV1ZWRfY250Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjYwOlxcdGlmICgocHJpdi1cXHUwMDNldHgucXVldWVkX2NudCBcXHUwMDNlPSBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo2MTpcXHQgICAgIShwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI6XFx0XFx0cHJpdi1cXHUwMDNldHguZmxhZ3MgfD0gQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02My1cXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTY4PXZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MTpcXHRpZiAoKHByaXYtXFx1MDAzZXR4LnF1ZXVlZF9jbnQgXFx1MDAzYyBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MjpcXHQgICAgKHByaXYtXFx1MDAzZXR4LmZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3MzpcXHRcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX1FVRVVFU19TVE9QO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NC1cXHRcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMocHJpdi1cXHUwMDNlaHcpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTIxND1zdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfbWdtdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzoyNDE6XFx0dHhfY3RsLVxcdTAwM2V0eXBlID0gQVRIOUtfSFRDX01HTVQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz0yNjA9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X2RhdGEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTI5Mi1cXHRpZiAodHhfaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5MzpcXHRcXHR0eF9jdGwtXFx1MDAzZXR5cGUgPSBBVEg5S19IVENfQU1QRFU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NDpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0yOTUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mjk2OlxcdFxcdHR4X2N0bC1cXHUwMDNldHlwZSA9IEFUSDlLX0hUQ19OT1JNQUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjI5NzpcXHRcXHR0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX05PUk1BTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMjk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTItXFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgcHJpdi1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LVxcdTAwM2VydHNfdGhyZXNob2xkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzozMTM6XFx0XFx0XFx0ZmxhZ3MgfD0gQVRIOUtfSFRDX1RYX1JUU0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTUtXFx0LyogQ1RTLXRvLXNlbGYgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE2OlxcdGlmICghKGZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYX1JUU0NUUykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtMzE3LVxcdCAgICAodmlmIFxcdTAwMjZcXHUwMDI2IHZpZi1cXHUwMDNlYnNzX2NvbmYudXNlX2N0c19wcm90KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6MzE4OlxcdFxcdGZsYWdzIHw9IEFUSDlLX0hUQ19UWF9DVFNPTkxZO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zMTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9MzkyPXN0YXRpYyBpbmxpbmUgYm9vbCBfX2F0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTctXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6Mzk4OlxcdGlmICgodGlkIFxcdTAwM2MgQVRIOUtfSFRDX01BWF9USUQpIFxcdTAwMjZcXHUwMDI2IChpc3RhLVxcdTAwM2V0aWRfc3RhdGVbdGlkXSA9PSBBR0dSX1NUT1ApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0zOTktXFx0XFx0cmV0ID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz00NDU9c3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3Byb2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NDc5OlxcdGlmICh0eHMtXFx1MDAzZXRzX2ZsYWdzIFxcdTAwMjYgQVRIOUtfSFRDX1RYU1RBVF9BQ0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDgwLVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4NTpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfRklMVClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg2LVxcdFxcdHR4X2luZm8tXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX1RYX0ZJTFRFUkVEO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00ODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ4ODpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfUlRDX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDg5LVxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTEtXFx0cmF0ZS1cXHUwMDNlY291bnQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo0OTI6XFx0cmF0ZS1cXHUwMDNlaWR4ID0gTVModHhzLVxcdTAwM2V0c19yYXRlLCBBVEg5S19IVENfVFhTVEFUX1JBVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NDpcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTQ5NS1cXHRcXHRyYXRlLVxcdTAwM2VmbGFncyB8PSBJRUVFODAyMTFfVFhfUkNfTUNTO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy00OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5NzpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfQ1c0MClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNDk4LVxcdFxcdFxcdHJhdGUtXFx1MDAzZWZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjQ5OTpcXHRcXHRpZiAodHhzLVxcdTAwM2V0c19mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19UWFNUQVRfU0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01MDAtXFx0XFx0XFx0cmF0ZS1cXHUwMDNlZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTUzOT12b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTQzLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU0NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyB8PSBBVEg5S19IVENfT1BfVFhfRFJBSU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTU0NS1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNTczLVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cHJpdi1cXHUwMDNldHgudHhfbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjU3NDpcXHRwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2PSB+QVRIOUtfSFRDX09QX1RYX0RSQUlOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01NzUtXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTU3OD12b2lkIGF0aDlrX3R4X2ZhaWxlZF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODItXFx0c3Bpbl9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NTgzOlxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy01ODQtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTYxOD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYqIGF0aDlrX2h0Y190eF9nZXRfcGFja2V0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy02MjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6NjI1OlxcdHU4IGVwaWQgPSBNUyh0eHMtXFx1MDAzZXRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTYyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03MTY9c3RhdGljIGlubGluZSBib29sIGNoZWNrX3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzI0LVxcdFxcdCAgICAgICB0eF9jdGwtXFx1MDAzZXRpbWVzdGFtcCArXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjcyNTpcXHRcXHQgICAgICAgbXNlY3NfdG9famlmZmllcyhBVEg5S19IVENfVFhfVElNRU9VVF9JTlRFUlZBTCkpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTcyNi1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgWE1JVCwgXFxcIkRyb3BwaW5nIGEgcGFja2V0IGR1ZSB0byBUWCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz03NjE9dm9pZCBhdGg5a19odGNfdHhfY2xlYW51cF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzYtXFx0XFx0XFx0XFx0ZXZlbnQtXFx1MDAzZXR4cy5jb29raWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjc3NzpcXHRcXHRcXHRcXHRNUyhldmVudC1cXHUwMDNldHhzLnRzX3JhdGUsIEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy03NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtNzg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo3ODU6XFx0XFx0aWYgKCsrZXZlbnQtXFx1MDAzZWNvdW50IFxcdTAwM2U9IEFUSDlLX0hUQ19UWF9USU1FT1VUX0NPVU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTc4Ni1cXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZXZlbnQtXFx1MDAzZWxpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNS1cXHRtb2RfdGltZXIoXFx1MDAyNnByaXYtXFx1MDAzZXR4LmNsZWFudXBfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjgwNjpcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgwNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODI3PWJvb2wgYXRoOWtfaHRjX3R4cV9zZXR1cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBzdWJ0eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTgzNC1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODM1OlxcdEFUSDlLX0hUQ19JTklUX1RYUShzdWJ0eXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg1Ni1cXHRtZW1zZXQoXFx1MDAyNnFpLCAwLCBzaXplb2YocWkpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODU3OlxcdEFUSDlLX0hUQ19JTklUX1RYUSgwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTExODU9aW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjExOTI6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDlLX0hUQ19SWEJVRjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTExOTMtXFx0XFx0c3RydWN0IGF0aDlrX2h0Y19yeGJ1ZiAqcnhidWYgPVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jPTEzOD12b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xNzgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwcml2LVxcdTAwM2V0eC50eF9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmM6MTc5OlxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2V0eC5mbGFncyBcXHUwMDI2IEFUSDlLX0hUQ19PUF9UWF9EUkFJTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy0xODAtXFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnByaXYtXFx1MDAzZXR4LnR4X2xvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oPTM5PXN0cnVjdCB3bWlfZXZlbnRfc3diYSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjUxOiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9BQ0sgICAgICAgIEJJVCgwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1MjojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfRklMVCAgICAgICBCSVQoMSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTM6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JUQ19DVFMgICAgQklUKDIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjU0OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9NQ1MgICAgICAgIEJJVCgzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo1NTojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQ1c0MCAgICAgICBCSVQoNClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6NTY6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oLTYzLSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaDo2NDojZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAgICAweDBmXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY1OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9SQVRFX1MgICAgIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oOjY3OiNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmg6Njg6I2RlZmluZSBBVEg5S19IVENfVFhTVEFUX0VQSURfUyAgICAgNFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaC02OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MTguMzcyMzI4NjQ4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjAyNjY1NjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBBVEg5S19IVEMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gVGhlIG1lbnRhbCBtb2RlbCBkaWN0YXRlcyBJIG5lZWQgdG8gbmF2aWdhdGUgdG8gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uIGZvciB0aGUgYXRoOWsgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIHBhcnQgY29uY2VybmluZyBBVEg5S19IVEMuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSBsb29raW5nIGZvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgcHJvYmFibHkgbmFtZWQgXCJLY29uZmlnLFwiIHNpdHVhdGVkIHdpdGhpbiB0aGUgXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCIgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhhdCBcIkFUSDlLX0hUQ1wiIGlzIGEgcmVsZXZhbnQgc3ltYm9sIG9yIG9wdGlvbiB3aXRoaW4gdGhhdCBmaWxlLCBwb3RlbnRpYWxseSBhIGZlYXR1cmUgZmxhZywgZGVwZW5kZW5jeSwgb3IgYSBjb25kaXRpb25hbCBidWlsZCBzZXR0aW5nIHJlbGF0ZWQgdG8gdGhlIEF0aGVyb3MgOWsgZHJpdmVyIGFuZCB0aGUgSG9zdCBUcmFuc3BvcnQgQ29udHJvbGxlciAoSFRDKSBmcmFtZXdvcmsuIEl0J3MgcHJvYmFibHkga2V5IHRvIGhvdyB0aGUgYXRoOWsgZHJpdmVyIGludGVyYWN0cyB3aXRoIGEgY2VydGFpbiBzZXQgb2YgaGFyZHdhcmUgb3IgZmlybXdhcmUuIEknbSBleHBlY3RpbmcgdGhpcyB0byBzaGVkIGxpZ2h0IG9uIGhvdyB0aGlzIGFzcGVjdCBvZiB0aGUgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBjb25maWd1cmVkLCBvciBpdHMgZGVwZW5kZW5jaWVzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc0MjksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MToyMC4zOTg5ODY5ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM4MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRcXHQgIElmIHVuc3VyZSBzYXkgTi5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIEFUSDlLX0hUQ1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuIDE3NDpcXHRcXHRkZXBlbmRzIG9uIFVTQiBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMVxcbiAxNzU6XFx0XFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG4gMTc2OlxcdFxcdHNlbGVjdCBBVEg5S19IV1xcbiAxNzc6XFx0XFx0c2VsZWN0IEFUSDlLX0NPTU1PTlxcbiAxNzg6XFx0XFx0aGVscFxcbiAxNzk6XFx0XFx0ICBTdXBwb3J0IGZvciBBdGhlcm9zIEhUQyBiYXNlZCBjYXJkcy5cXG4gMTgwOlxcdFxcdCAgQ2hpcHNldHMgc3VwcG9ydGVkOiBBUjkyNzFcXG4gMTgxOlxcdFxcbiAxODI6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbjpcXG4gMTgzOlxcdFxcdCAgaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5a19odGNcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ICBUaGUgYnVpbHQgbW9kdWxlIHdpbGwgYmUgYXRoOWtfaHRjLlxcbiAxODY6XFx0XFxuIDE4NzpcXHRjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG4gMTg4OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWtfaHRjIGRlYnVnZ2luZ1xcXCJcXG4gMTg5OlxcdFxcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTXFxuIDE5MDpcXHRcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuIDE5MTpcXHRcXHRoZWxwXFxuIDE5MjpcXHRcXHQgIFNheSBZLCBpZiB5b3UgbmVlZCBhY2Nlc3MgdG8gYXRoOWtfaHRjJ3Mgc3RhdGlzdGljcy5cXG4gMTkzOlxcdFxcdCAgQXMgd2VsbCBhcyBhY2Nlc3MgdG8gdGhlIEZGVC9zcGVjdHJhbCBkYXRhLlxcbiAxOTQ6XFx0XFxuIDE5NTpcXHRjb25maWcgQVRIOUtfSFdSTkdcXG4gMTk2OlxcdFxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuIDE5NzpcXHRcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IChIV19SQU5ET00gPSB5IHx8IEhXX1JBTkRPTSA9IEFUSDlLKVxcbiAxOTg6XFx0XFx0ZGVmYXVsdCBuXFxuIDE5OTpcXHRcXHRoZWxwXFxuIDIwMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGluY29ycG9yYXRlcyB0aGUgQURDIHJlZ2lzdGVyIG91dHB1dCBhcyBhIHNvdXJjZSBvZlxcbiAyMDE6XFx0XFx0ICByYW5kb21uZXNzIGludG8gTGludXggZW50cm9weSBwb29sICgvZGV2L3VyYW5kb20gYW5kIC9kZXYvcmFuZG9tKVxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBZLCBmZWVkcyB0aGUgZW50cm9weSBkaXJlY3RseSBmcm9tIHRoZSBXaUZpIGRyaXZlciB0byB0aGUgaW5wdXRcXG4gMjA0OlxcdFxcdCAgcG9vbC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MjAuNDAxMTI5NTA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODQ2MjY2NDQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGF0aDlrX2h0YyBEcml2ZXIgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBtb2RpZmljYXRpb25zIHRvIHRoZSBgYXRoOWtfaHRjYCBVU0Igd2lyZWxlc3MgbmV0d29yayBkcml2ZXIsIHdoaWNoLCBpbXBvcnRhbnRseSwgcmVsaWVzIG9uIFVTQiBhbmQgTUFDODAyMTEuICBHb29kLCB0aGF0IG1lYW5zIHdlIGNhbiBsaWtlbHkgcG9rZSBhdCBpdCB1c2luZyBVU0IgZW11bGF0aW9uIHdpdGhpbiBvdXIgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgc3BlY2lmaWNhbGx5IHVzaW5nIFJhdyBHYWRnZXQsIGR1bW15X2hjZCwgb3IgdmhjaS4gTWFrZXMgdGVzdGluZyB0aGlzIG11Y2ggbW9yZSBtYW5hZ2VhYmxlLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZXMsIEkndmUgaWRlbnRpZmllZCBmb3VyIGtleSBhcmVhczpcblxuMS4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jYDogVGhpcyBpcyBzdHJhaWdodGZvcndhcmQuIFRoZXkndmUgYWRkZWQgYSBgcmVhZF9maWxlX3dtaWAgZGVidWdmcyBoYW5kbGVyLiBFZmZlY3RpdmVseSwgYSBuZXcgZGVidWdmcyBmaWxlIGBcIndtaVwiYCBoYXMgYmVlbiBjcmVhdGVkIGluc2lkZSBgYXRoOWtfaHRjX2luaXRfZGVidWdgLiBUaGlzIGlzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXM7IGEgbmV3IG1lY2hhbmlzbSBmb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbi5cblxuMi4gIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmNgOiBUaGUgY2hhbmdlIHRvIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGhvdyB3ZSBjb21wdXRlIHRoZSByZWNlaXZlIGZpbHRlci4gIE9yaWdpbmFsbHksIHRoZSBmaWx0ZXIgbG9naWMgcHJlc2VydmVkIGFuIGV4aXN0aW5nIGBSWF9GSUxURVJfUFJFU0VSVkVgIG1hc2suICBOb3csIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4gIEluc3RlYWQsIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgLCBgQVRIOUtfUlhfRklMVEVSX0JDQVNUYCwgYW5kIGBBVEg5S19SWF9GSUxURVJfTUNBU1RgIGFyZSBhbHdheXMgZW5hYmxlZC4gQ3JpdGljYWxseSwgdGhlcmUncyBhbHNvIG5vdyBhIGNvbmRpdGlvbmFsIHRoYXQgaW5jbHVkZXMgYEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUmAgYW5kIGBBVEg5S19SWF9GSUxURVJfUEhZRVJSYCBvbmx5IGlmIGBwcml2LVx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlYCBpcyAqbm90KiBgU1BFQ1RSQUxfRElTQUJMRURgLiBUaGlzIGlzIGEgYmlnIGNoYW5nZSwgcG90ZW50aWFsbHkgaW1wYWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgY2VydGFpbiB0eXBlcyBvZiBwYWNrZXRzIG9yIGludGVyZmVyZW5jZSBkZXRlY3Rpb24sIGJ1dCBvbmx5IHdoZW4gc3BlY3RyYWwgbW9kZSBpcyBlbmFibGVkLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBvbiB0aGUgUlggYmVoYXZpb3IuIEkgd29uZGVyIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYmFzZSBmaWx0ZXIgc2V0dGluZ3MsIHdoaWNoIGFyZSBubyBsb25nZXIgcHJlc2VydmVkP1xuXG4zLiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY2A6ICBIZXJlLCBgYXRoOWtfd21pX2NtZGAgbm93IGluY3JlbWVudHMgY291bnRlcnMgYHdtaS1cdTAwM2VjbWRzX2lzc3VlZGAgYW5kIGB3bWktXHUwMDNlY21kc190aW1lZF9vdXRgIHdoZW4gdGltZW91dHMgb2NjdXIuIFRoaXMgc3VnZ2VzdHMgdGhhdCB0aGVyZSB3ZXJlIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBjb21tYW5kIHRpbWVvdXRzLiBUaGVzZSBjb3VudGVycyB3aWxsIGxpa2VseSBnaXZlIGluc2lnaHRzIGludG8gdGhlIGNvbW1hbmQgZmFpbHVyZXMgb3IgbmV0d29yayBpbnN0YWJpbGl0aWVzLlxuXG40LiAgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaGA6ICBUaGlzIGlzIGp1c3QgdGhlIGFkZGl0aW9uIG9mIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gVGhlIHN1cHBvcnQgZm9yIHRoZSB1cGRhdGVkIGNvbW1hbmQgdHJhY2tpbmcuXG5cblNvLCB3aGVyZSBpcyBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAgY2FsbGVkPyAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCdzICpjYWxsaW5nKiB0aGF0IFJYIGZpbHRlciBmdW5jdGlvbi4gVGhhdCdzIHRoZSBuZXh0IHN0ZXA7IHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGltcGFjdCBvZiB0aGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI3MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjI4Ljg2Mzc5ODM4MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2Njc5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD01OTk9dm9pZCBhdGg5a19yeF90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjYwMDp1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02MDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM9MTI1Nz1zdGF0aWMgdm9pZCBhdGg5a19odGNfY29uZmlndXJlX2ZpbHRlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYy0xMjc3LVxcdHByaXYtXFx1MDAzZXJ4ZmlsdGVyID0gKnRvdGFsX2ZsYWdzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYzoxMjc4OlxcdHJmaWx0ID0gYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMtMTI3OS1cXHRhdGg5a19od19zZXRyeGZpbHRlcihwcml2LVxcdTAwM2VhaCwgcmZpbHQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTg1Mj1pbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg2OC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM6ODY5OnUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMtODcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYz05MTQ9c3RhdGljIHZvaWQgYXRoOWtfaHRjX29wbW9kZV9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MTktXFx0LyogY29uZmlndXJlIHJ4IGZpbHRlciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYzo5MjA6XFx0cmZpbHQgPSBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy05MjEtXFx0YXRoOWtfaHdfc2V0cnhmaWx0ZXIoYWgsIHJmaWx0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MjguOTY5NDc0ODgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzE4Mzc3NjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBQb3RlbnRpYWwgTnVsbCBQb2ludGVyIERlcmVmZXJlbmNlKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGByZWFkX2ZpbGVfd21pYCBhbmQgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCBhcmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIExldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyBgcmVhZF9maWxlX3dtaWAgaXMgZGlyZWN0bHkgYWNjZXNzaW5nIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX2lzc3VlZGAgYW5kIGBwcml2LVx1MDAzZXdtaS1cdTAwM2VjbWRzX3RpbWVkX291dGAuICpIb2xkIG9uIGEgbWludXRlLiogVGhlIG5hZ2dpbmcgcXVlc3Rpb24gaXM6IHdoYXQgaWYgYHByaXYtXHUwMDNld21pYCBpcyBOVUxMIGF0IHRoYXQgcG9pbnQ/IElzIHRoZXJlIGEgY29uZGl0aW9uIHRoYXQgZ3VhcmFudGVlcyB0aGF0IGBwcml2LVx1MDAzZXdtaWAgaXMgYWx3YXlzIGluaXRpYWxpemVkIGJlZm9yZSBgcmVhZF9maWxlX3dtaWAgaXMgZXZlciBjYWxsZWQ/IERvZXMgdGhlIGRlYnVnZnMgaW5pdGlhbGl6YXRpb24gb3IgZmlsZSBjcmVhdGlvbiBzb21laG93IGd1YXJhbnRlZSB0aGF0IGBwcml2LVx1MDAzZXdtaWAgaXMgbm9uLU5VTEw/IEkgbmVlZCB0byBjaGVjayB0aG9zZSBpbml0aWFsaXphdGlvbiBwYXRocy4gSSBiZXR0ZXIgZ28gdGhyb3VnaCBgaHRjX2Rydl9pbml0LmNgIGFuZCBgaHRjX2Rydl9kZWJ1Zy5jYCB0byB0cmFjZSB0aGUgdmFyaWFibGUncyBsaWZlY3ljbGUuIEknbGwgcHJvYmFibHkgYmUgaHVudGluZyBmb3Igd2hlcmUgYHByaXYtXHUwMDNld21pYCBpcyBhbGxvY2F0ZWQgYW5kIGFzc2lnbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDExMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTozNi4xNTMyNTQyOTRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDEwNzI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a19odGNfaW5pdF9kZWJ1Z1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaD02NDE9aW50IGF0aDlrX2h0Y19yZXN1bWUoc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0My0jaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oOjY0NDppbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC02NDUtdm9pZCBhdGg5a19odGNfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0Ni0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaDo2NDc6c3RhdGljIGlubGluZSBpbnQgYXRoOWtfaHRjX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpIHsgcmV0dXJuIDA7IH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTY0OC1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfaHRjX2RlaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTUwMD12b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYy01MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYzo1MDU6aW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz04Mjg9c3RhdGljIGludCBhdGg5a19pbml0X2RldmljZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtODg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo4ODk6XFx0ZXJyb3IgPSBhdGg5a19odGNfaW5pdF9kZWJ1Zyhwcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jLTg5MC1cXHRpZiAoZXJyb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6MzYuMjY3MzY4MTYyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgwMjc2MDgzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgQXRoOWtfaHRjIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhpcyBwYXRjaCB0YXJnZXRpbmcgdGhlIGBhdGg5a19odGNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBhbmQgYHJlYWRfZmlsZV93bWlgLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGJ5IHN5emthbGxlciBmdXp6aW5nLlxuXG5NeSBhbmFseXNpcyBpbW1lZGlhdGVseSBwb2ludHMgdG8gYSBwb3NpdGl2ZSBhbnN3ZXIuIFVTQiB3aWZpIGRldmljZXMgY2FuIGJlIGVtdWxhdGVkIHZpYSBVU0IgUmF3IEdhZGdldCB3aXRoaW4gc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBJIGtub3cgdGhhdCBgbWFjODAyMTFgIGFuZCBgbmw4MDIxMWAgc3lzY2FsbHMsIGNvbWJpbmVkIHdpdGggZGVidWdmcyByZWFkcywgY2FuIGludGVyYWN0IHdpdGggYGF0aDlrX2h0Y2AuIEZ1cnRoZXJtb3JlLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAgZ2V0cyBjYWxsZWQgZHVyaW5nIHBhY2tldCBmaWx0ZXIgY29uZmlndXJhdGlvbiBhbmQgb3Btb2RlIGluaXRpYWxpemF0aW9uLiAgYGF0aDlrX3dtaV9jbWRgIGlzIGRpcmVjdGx5IGludm9sdmVkIHdoZW5ldmVyIGEgV01JIGNvbW1hbmQgaXMgc2VudCB0byB0aGUgZmlybXdhcmUgb3ZlciBVU0IsIGFuZCBgcmVhZF9maWxlX3dtaWAgaXMgYSBkZWJ1Z2ZzIHJlYWQgaGFuZGxlci5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgZXN0YWJsaXNoZWQgY3JpdGVyaWE6IFwiV29ydGhGdXp6aW5nPXRydWVcIiBpZiB0aGUgcGF0Y2ggaW1wYWN0cyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBlc3BlY2lhbGx5IHdpdGhpbiBkcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMuIFNpbmNlIGBhdGg5a19odGNgIGlzIGEgVVNCIHdpcmVsZXNzIGRyaXZlciwgcGVyZmVjdGx5IHJlYWNoYWJsZSB0aHJvdWdoIFVTQiBlbXVsYXRpb24sIGFuZCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBSWCBmaWx0ZXIgbG9naWMsIGFkZHMgV01JIHN0YXRzLCBhbmQgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGludGVyZmFjZSwgdGhpcyBjbGVhcmx5IGhpdHMgdGhlIFwicmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZVwiIGNyaXRlcmlhLiBXb3J0aEZ1enppbmcgaGFzIHRvIGJlIHNldCB0byB0cnVlLlxuXG5OZXh0LCBJIG5lZWQgdG8gbGlzdCB0aGUgRm9jdXNTeW1ib2xzLCBzbyBJIHdpbGwgbGlzdCB0aGUgbW9kaWZpZWQgc3ltYm9sczogYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLCBgYXRoOWtfd21pX2NtZGAsIGFuZCBgcmVhZF9maWxlX3dtaWAuIEFsc28sIHRoZSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGRlYnVnZnMgZmlsZSwgYGF0aDlrX2h0Y19pbml0X2RlYnVnYCwgbmVlZHMgdG8gYmUgYWRkZWQuXG5cbk5vdyB0aGUgc3RhdGljIHZzLiBub24tc3RhdGljIHN5bWJvbHMgYXJlIGltcG9ydGFudC4gYHJlYWRfZmlsZV93bWlgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYyB3aXRoaW4gYGh0Y19kcnZfZGVidWcuY2AuIEhvd2V2ZXIsIHNpbmNlIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCB1c2VkIGluIGBmb3BzX3dtaS5yZWFkID0gcmVhZF9maWxlX3dtaWAsIGl0IHdpbGwgYmUgYSBkaXN0aW5jdCBzeW1ib2wgaW4gdGhlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGUuIE9uIHRoZSBvdGhlciBoYW5kLCBgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcmAsIGBhdGg5a193bWlfY21kYCwgYW5kIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AgYXJlIG5vbi1zdGF0aWMgc3ltYm9scy5cblxuU28sIGxldCdzIGNvbmZpcm0gdGhlIGNvbXBsZXRlIHNldCBvZiBzeW1ib2xzOiBgcmVhZF9maWxlX3dtaWAsIGBhdGg5a19odGNfaW5pdF9kZWJ1Z2AsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYW5kIGBhdGg5a193bWlfY21kYC5cblxuRmluYWxseSwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgYXJlIGltcG9ydGFudC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZy4gYEFUSDlLX0hUQ2AgZGVwZW5kcyBvbiBib3RoIGBVU0JgIGFuZCBgTUFDODAyMTFgLCB3aGljaCBhcmUgZXhwZWN0ZWQuIGBBVEg5S19IVENfREVCVUdGU2AgdGhlbiBkZXBlbmRzIG9uIGBBVEg5S19IVENgIGFuZCBgREVCVUdfRlNgLiBBbmQgYEFUSDlLX0NPTU1PTl9TUEVDVFJBTGAgZGVwZW5kcyBvbiBlaXRoZXIgYEFUSDlLX0RFQlVHRlNgIG9yIGBBVEg5S19IVENfREVCVUdGU2AuIEkgbm90ZSB0aGF0IGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgdGhlIGNvZGUgcmVmZXJlbmNlcyBgc3BlY19wcml2LnNwZWN0cmFsX21vZGVgLiBJIG5lZWQgdG8gZ3JlcCBmb3IgYm90aCBgc3BlY19wcml2YCBhbmQgYHNwZWN0cmFsX21vZGVgIHRvIGVuc3VyZSBubyBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGludm9sdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTExMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTo0NC4yOTQ5ODAzMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTg2NjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGVjX3ByaXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaD05ODM9c3RydWN0IGF0aF9zb2Z0YyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMDYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjEwNjQ6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiBzcGVjX3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTA2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM9MjM9c3RhdGljIGludCBhdGhfc2V0X2NoYW5uZWwoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk1LVxcdFxcdGlmICh0ZXN0X2JpdChBVEhfT1BfU0NBTk5JTkcsIFxcdTAwMjZjb21tb24tXFx1MDAzZW9wX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTY6XFx0XFx0XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjdHJhbF9tb2RlID09IFNQRUNUUkFMX0NIQU5TQ0FOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTc6XFx0XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz0yMj1zdGF0aWMgczggZml4X3Jzc2lfaW52X29ubHkodTggcnNzaV92YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjI5OnN0YXRpYyB2b2lkIGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zMC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmZ0X3NhbXBsZV90bHYgKmZmdF9zYW1wbGVfdGx2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTMyLVxcdGludCBsZW5ndGg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjMzOlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTM0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0zNy1cXHRcXHQgc2l6ZW9mKCpmZnRfc2FtcGxlX3Rsdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjM4OlxcdHJlbGF5X3dyaXRlKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuLCBmZnRfc2FtcGxlX3RsdiwgbGVuZ3RoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMzktfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEyNz10eXBlZGVmIGludCAoYXRoX2Ntbl9mZnRfc2FtcGxlX2hhbmRsZXIpIChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEyODpcXHRcXHRcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEyOS1cXHRcXHRcXHR1OCAqc2FtcGxlX2J1ZiwgdTY0IHRzZiwgdTE2IGZyZXEsIGludCBjaGFuX3R5cGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTEzMj1hdGhfY21uX3Byb2Nlc3NfaHQyMF9mZnQoc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMzM6XFx0XFx0XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMzQtXFx0XFx0XFx0dTggKnNhbXBsZV9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTM3LVxcdHN0cnVjdCBmZnRfc2FtcGxlX2h0MjAgZmZ0X3NhbXBsZV8yMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTM4OlxcdHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oc3BlY19wcml2LVxcdTAwM2VhaCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEzOTpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTE0MC1cXHRzdHJ1Y3QgYXRoX2h0MjBfbWFnX2luZm8gKm1hZ19pbmZvO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjMwOlxcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MjM2PWF0aF9jbW5fcHJvY2Vzc19odDIwXzQwX2ZmdChzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjIzNzpcXHRcXHRcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTIzOC1cXHRcXHRcXHR1OCAqc2FtcGxlX2J1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0yNDEtXFx0c3RydWN0IGZmdF9zYW1wbGVfaHQyMF80MCBmZnRfc2FtcGxlXzQwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoyNDI6XFx0c3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihzcGVjX3ByaXYtXFx1MDAzZWFoKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MjQzOlxcdHN0cnVjdCBhdGhfaHcgKmFoID0gc3BlY19wcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMjQ0LVxcdHN0cnVjdCBhdGg5a19od19jYWxfZGF0YSAqY2FsZGF0YSA9IGFoLVxcdTAwM2VjYWxkYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTQwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDA3OlxcdGF0aF9kZWJ1Z19zZW5kX2ZmdF9zYW1wbGUoc3BlY19wcml2LCB0bHYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00MDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NDQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NDQ5OmF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTMtXFx0c3RydWN0IHJjaGFuX2J1ZiAqYnVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0NTQ6XFx0c3RydWN0IHJjaGFuICpyYyA9IHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNDY4LS8qIHJldHVybnMgMSBpZiB0aGlzIHdhcyBhIHNwZWN0cmFsIGZyYW1lLCBldmVuIGlmIG5vdCBoYW5kbGVkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo0Njk6aW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzAtXFx0XFx0ICAgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywgdTY0IHRzZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzItXFx0dTggc2FtcGxlX2J1ZltTUEVDVFJBTF9TQU1QTEVfTUFYX0xFTl0gPSB7MH07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjQ3NDpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy00NzUtXFx0c3RydWN0IGF0aF9zb2Z0YyAqc2MgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo1MDU6XFx0aWYgKCFzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNTA2LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NTExOlxcdHJldCA9IGF0aF9jbW5faXNfZmZ0X2J1Zl9mdWxsKHNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTUxMi1cXHRpZiAocmV0ID09IDEpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjYyNDpcXHRcXHRcXHRcXHRyZXQgPSBmZnRfaGFuZGxlcihycywgc3BlY19wcml2LCBzYW1wbGVfYnVmLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02MjUtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjQxLVxcdFxcdFxcdGlmIChzYW1wbGVfYnl0ZXMgPT0gc2FtcGxlX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo2NDI6XFx0XFx0XFx0XFx0cmV0ID0gZmZ0X2hhbmRsZXIocnMsIHNwZWNfcHJpdiwgc2FtcGxlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02NDMtXFx0XFx0XFx0XFx0XFx0XFx0ICB0c2YsIGZyZXEsIGNoYW5fdHlwZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NjkwPXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NjkzOlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNjk0LVxcdGNoYXIgKm1vZGUgPSBcXFwiXFxcIjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjY5NzpcXHRzd2l0Y2ggKHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy02OTgtXFx0Y2FzZSBTUEVDVFJBTF9ESVNBQkxFRDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03MTU9dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjcxNjpcXHRcXHRcXHRcXHQgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MTcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3MTg6XFx0c3RydWN0IGF0aF9odyAqYWggPSBzcGVjX3ByaXYtXFx1MDAzZWFoO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MTktXFx0dTMyIHJ4ZmlsdGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTcyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzI5OlxcdGlmICghc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03MzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc0Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzQzOlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgc3BlY19wcml2LVxcdTAwM2VzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzQ0LVxcdGF0aDlrX2h3X29wcyhhaCktXFx1MDAzZXNwZWN0cmFsX3NjYW5fdHJpZ2dlcihhaCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9NzQ5PWludCBhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzUwOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1MS1cXHRcXHRcXHQgICAgICAgZW51bSBzcGVjdHJhbF9tb2RlIHNwZWN0cmFsX21vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc1MzpcXHRzdHJ1Y3QgYXRoX2h3ICphaCA9IHNwZWNfcHJpdi1cXHUwMDNlYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc1NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjEtXFx0Y2FzZSBTUEVDVFJBTF9ESVNBQkxFRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzYyOlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5hYmxlZCA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc2My1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NjctXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc2ODpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuZGxlc3MgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo3Njk6XFx0XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5lbmFibGVkID0gMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzcwLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc3Mi1cXHRjYXNlIFNQRUNUUkFMX01BTlVBTDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6NzczOlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuZW5kbGVzcyA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc3NDpcXHRcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmVuYWJsZWQgPSAxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03NzUtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtNzgwLVxcdGF0aF9wc19vcHMoY29tbW9uKS1cXHUwMDNld2FrZXVwKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc4MTpcXHRhdGg5a19od19vcHMoYWgpLVxcdTAwM2VzcGVjdHJhbF9zY2FuX2NvbmZpZyhhaCwgXFx1MDAyNnNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03ODItXFx0YXRoX3BzX29wcyhjb21tb24pLVxcdTAwM2VyZXN0b3JlKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6Nzg0OlxcdHNwZWNfcHJpdi1cXHUwMDNlc3BlY3RyYWxfbW9kZSA9IHNwZWN0cmFsX21vZGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz03OTA9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjX3NjYW5fY3RsKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTc5My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjc5NTpcXHRzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHNwZWNfcHJpdi1cXHUwMDNlYWgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy03OTYtXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgwOC1cXHRpZiAoc3RybmNtcChcXFwidHJpZ2dlclxcXCIsIGJ1ZiwgNykgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MDk6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihjb21tb24sIHNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgxMC1cXHR9IGVsc2UgaWYgKHN0cm5jbXAoXFxcImJhY2tncm91bmRcXFwiLCBidWYsIDEwKSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjgxMTpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl9jb25maWcoY29tbW9uLCBzcGVjX3ByaXYsIFNQRUNUUkFMX0JBQ0tHUk9VTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTItXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGJhY2tncm91bmQgbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODEzLVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwiY2hhbnNjYW5cXFwiLCBidWYsIDgpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE0OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfQ0hBTlNDQU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTUtXFx0XFx0YXRoX2RiZyhjb21tb24sIENPTkZJRywgXFxcInNwZWN0cmFsIHNjYW46IGNoYW5uZWwgc2NhbiBtb2RlIGVuYWJsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04MTYtXFx0fSBlbHNlIGlmIChzdHJuY21wKFxcXCJtYW51YWxcXFwiLCBidWYsIDYpID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODE3OlxcdFxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9zY2FuX2NvbmZpZyhjb21tb24sIHNwZWNfcHJpdiwgU1BFQ1RSQUxfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE4LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDT05GSUcsIFxcXCJzcGVjdHJhbCBzY2FuOiBtYW51YWwgbW9kZSBlbmFibGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODE5LVxcdH0gZWxzZSBpZiAoc3RybmNtcChcXFwiZGlzYWJsZVxcXCIsIGJ1ZiwgNykgPT0gMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4MjA6XFx0XFx0YXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKGNvbW1vbiwgc3BlY19wcml2LCBTUEVDVFJBTF9ESVNBQkxFRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTgyMS1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ09ORklHLCBcXFwic3BlY3RyYWwgc2NhbjogZGlzYWJsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg0MT1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfc2hvcnRfcmVwZWF0KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjg0NTpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg0Ni1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NDk6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTAtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg1Mz1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3Nob3J0X3JlcGVhdChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4NTc6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04NTgtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtODY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4Njg6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg2OS1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9ODg0PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9jb3VudChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo4ODg6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04ODktXFx0Y2hhciBidWZbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6ODkyOlxcdGxlbiA9IHNwcmludGYoYnVmLCBcXFwiJWRcXFxcblxcXCIsIHNwZWNfcHJpdi1cXHUwMDNlc3BlY19jb25maWcuY291bnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy04OTMtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTg5Nj1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX2NvdW50KHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTg5OS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkwMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkwMS1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkxMDpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmNvdW50ID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MTEtXFx0cmV0dXJuIGNvdW50O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkyNj1zdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc3BlY3RyYWxfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkyOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjkzMDpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTkzMS1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5MzQ6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05MzUtXFx0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jPTkzOD1zdGF0aWMgc3NpemVfdCB3cml0ZV9maWxlX3NwZWN0cmFsX3BlcmlvZChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NDI6XFx0c3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05NDMtXFx0dW5zaWduZWQgbG9uZyB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5NTM6XFx0c3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk1NC1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9OTY5PXN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk3MzpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk3NC1cXHRjaGFyIGJ1ZlszMl07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzo5Nzc6XFx0bGVuID0gc3ByaW50ZihidWYsIFxcXCIlZFxcXFxuXFxcIiwgc3BlY19wcml2LVxcdTAwM2VzcGVjX2NvbmZpZy5mZnRfcGVyaW9kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtOTc4LVxcdHJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYz05ODE9c3RhdGljIHNzaXplX3Qgd3JpdGVfZmlsZV9zcGVjdHJhbF9mZnRfcGVyaW9kKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk4NTpcXHRzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYgPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk4Ni1cXHR1bnNpZ25lZCBsb25nIHZhbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy05OTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjk5NjpcXHRzcGVjX3ByaXYtXFx1MDAzZXNwZWNfY29uZmlnLmZmdF9wZXJpb2QgPSB2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTk5Ny1cXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTAzNj1zdGF0aWMgY29uc3Qgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZnNfc3BlY19zY2FuX2NiID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDU6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA0Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDc6XFx0aWYgKHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNDg6XFx0XFx0cmVsYXlfY2xvc2Uoc3BlY19wcml2LVxcdTAwM2VyZnNfY2hhbl9zcGVjX3NjYW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDQ5OlxcdFxcdHNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmMtMTA1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM9MTA1Mj1FWFBPUlRfU1lNQk9MKGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDUzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDU0OnZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX2luaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA1NzpcXHRzcGVjX3ByaXYtXFx1MDAzZXJmc19jaGFuX3NwZWNfc2NhbiA9IHJlbGF5X29wZW4oXFxcInNwZWN0cmFsX3NjYW5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDU4LVxcdFxcdFxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYwLVxcdFxcdFxcdFxcdFxcdCAgICBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmM6MTA2MTpcXHRpZiAoIXNwZWNfcHJpdi1cXHUwMDNlcmZzX2NoYW5fc3BlY19zY2FuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDYyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY1LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDY2OlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY3LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjX3NjYW5fY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDY5LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDcwOlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDcxLVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9zaG9ydF9yZXBlYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzMtXFx0XFx0XFx0ICAgIDA2MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwNzQ6XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwNzUtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2NvdW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc3LVxcdFxcdFxcdCAgICAwNjAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYzoxMDc4OlxcdFxcdFxcdCAgICBkZWJ1Z2ZzX3BoeSwgc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuYy0xMDc5LVxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19zcGVjdHJhbF9wZXJpb2QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODEtXFx0XFx0XFx0ICAgIDA2MDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jOjEwODI6XFx0XFx0XFx0ICAgIGRlYnVnZnNfcGh5LCBzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5jLTEwODMtXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NwZWN0cmFsX2ZmdF9wZXJpb2QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE2Nj1zdGF0aWMgaW5saW5lIHU4IHNwZWN0cmFsX2JpdG1hcF93ZWlnaHQodTggKmJpbnMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTcxLSNpZmRlZiBDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE3Mjp2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzM6dm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg9MTc1PXZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxNzY6XFx0XFx0XFx0XFx0IHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE3Ny1pbnQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fY29uZmlnKHN0cnVjdCBhdGhfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oOjE3ODpcXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xNzktXFx0XFx0XFx0ICAgICAgIGVudW0gc3BlY3RyYWxfbW9kZSBzcGVjdHJhbF9tb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgwOmludCBhdGhfY21uX3Byb2Nlc3NfZmZ0KHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgKnNwZWNfcHJpdiwgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTgxLVxcdFxcdCAgICBzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsIHU2NCB0c2YpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODItI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTgzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX3NwZWNfc2Nhbl9wcml2ICpzcGVjX3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE4NC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGRlbnRyeSAqZGVidWdmc19waHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmgtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxODg6c3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2Ntbl9zcGVjdHJhbF9kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xODkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oPTE5Mj1zdGF0aWMgaW5saW5lIHZvaWQgYXRoOWtfY21uX3NwZWN0cmFsX3NjYW5fdHJpZ2dlcihzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaDoxOTM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NvbW1vbi1zcGVjdHJhbC5oLTE5Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY29tbW9uLXNwZWN0cmFsLmg6MTk3OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9jbW5fcHJvY2Vzc19mZnQoc3RydWN0IGF0aF9zcGVjX3NjYW5fcHJpdiAqc3BlY19wcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jb21tb24tc3BlY3RyYWwuaC0xOTgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzI9dm9pZCBhdGg5a19kZWluaXRfZGVidWcoc3RydWN0IGF0aF9zb2Z0YyAqc2MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMtMTM3My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM3NDpcXHRhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzc1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jPTEzNzc9aW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkxLVxcdGF0aDlrX3R4OTlfaW5pdF9kZWJ1ZyhzYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmM6MTM5MjpcXHRhdGg5a19jbW5fc3BlY3RyYWxfaW5pdF9kZWJ1ZyhcXHUwMDI2c2MtXFx1MDAzZXNwZWNfcHJpdiwgc2MtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYy0xMzkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oPTQ1Nj1zdHJ1Y3QgYXRoOWtfaHRjX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oLTQ5Ni1cXHRzdHJ1Y3QgYXRoOWtfaHdfY2FsX2RhdGEgY2FsZGF0YTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmg6NDk3OlxcdHN0cnVjdCBhdGhfc3BlY19zY2FuX3ByaXYgc3BlY19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaC00OTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jPTUwMD12b2lkIGF0aDlrX2h0Y19kZWluaXRfZGVidWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTAxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jOjUwMjpcXHRhdGg5a19jbW5fc3BlY3RyYWxfZGVpbml0X2RlYnVnKFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTAzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM9NTA1PWludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMtNTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmM6NTEzOlxcdGF0aDlrX2Ntbl9zcGVjdHJhbF9pbml0X2RlYnVnKFxcdTAwMjZwcml2LVxcdTAwM2VzcGVjX3ByaXYsIHByaXYtXFx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jLTUxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYz01ODg9c3RhdGljIHZvaWQgYXRoOWtfaW5pdF9taXNjKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYy01OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjU5NzpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuYWggPSBwcml2LVxcdTAwM2VhaDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk4OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NTk5OlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5zaG9ydF9yZXBlYXQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYzo2MDA6XFx0cHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLmNvdW50ID0gODtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAxOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jOjYwMjpcXHRwcml2LVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcucGVyaW9kID0gMHgxMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmM6NjAzOlxcdHByaXYtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5mZnRfcGVyaW9kID0gMHgwMjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMtNjA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYz0yNDA9c3RhdGljIGludCBhdGg5a19odGNfc2V0X2NoYW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxNS1cXHRpZiAodGVzdF9iaXQoQVRIX09QX1NDQU5OSU5HLCBcXHUwMDI2Y29tbW9uLVxcdTAwM2VvcF9mbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmM6MzE2OlxcdFxcdCAgICAgcHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgPT0gU1BFQ1RSQUxfQ0hBTlNDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jOjMxNzpcXHRcXHRhdGg5a19jbW5fc3BlY3RyYWxfc2Nhbl90cmlnZ2VyKGNvbW1vbiwgXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jLTMxOC1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmM9ODY5PXUzMiBhdGg5a19odGNfY2FsY3J4ZmlsdGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy04NzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjg3NzpcXHRpZiAocHJpdi1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jLTg3OC1cXHRcXHRyZmlsdCB8PSBBVEg5S19SWF9GSUxURVJfUEhZUkFEQVIgfCBBVEg5S19SWF9GSUxURVJfUEhZRVJSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jPTk3MD1zdGF0aWMgYm9vbCBhdGg5a19yeF9wcmVwYXJlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ1LVxcdFxcdC8qIFRPRE86IE5vdCB1c2luZyBERlMgcHJvY2Vzc2luZyBub3cuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jOjEwNDY6XFx0XFx0aWYgKGF0aF9jbW5fcHJvY2Vzc19mZnQoXFx1MDAyNnByaXYtXFx1MDAzZXNwZWNfcHJpdiwgaGRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYy0xMDQ3LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2cnhfc3RhdHMsIHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9NDIwPXN0YXRpYyB2b2lkIGF0aDlrX2luaXRfbWlzYyhzdHJ1Y3QgYXRoX3NvZnRjICpzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtNDM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDM3OlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuYWggPSBzYy1cXHUwMDNlc2NfYWg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0Mzg6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmFibGVkID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjQzOTpcXHRzYy1cXHUwMDNlc3BlY19wcml2LnNwZWNfY29uZmlnLnNob3J0X3JlcGVhdCA9IHRydWU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDA6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5jb3VudCA9IDg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDE6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5lbmRsZXNzID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzo0NDI6XFx0c2MtXFx1MDAzZXNwZWNfcHJpdi5zcGVjX2NvbmZpZy5wZXJpb2QgPSAweEZGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM6NDQzOlxcdHNjLVxcdTAwM2VzcGVjX3ByaXYuc3BlY19jb25maWcuZmZ0X3BlcmlvZCA9IDB4RjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTQ0NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jPTgwNj1zdGF0aWMgaW50IGF0aDlrX3J4X3NrYl9wcmVwcm9jZXNzKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYy04ODItXFx0XFx0XFx0XFx0XFx0XFx0IHJ4X3N0YXR1cy1cXHUwMDNlbWFjdGltZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYzo4ODM6XFx0XFx0fSBlbHNlIGlmIChzYy1cXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jOjg4NDpcXHRcXHRcXHQgICBhdGhfY21uX3Byb2Nlc3NfZmZ0KFxcdTAwMjZzYy1cXHUwMDNlc3BlY19wcml2LCBoZHIsIHJ4X3N0YXRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMtODg1LVxcdFxcdFxcdFxcdFxcdCAgICAgICByeF9zdGF0dXMtXFx1MDAzZW1hY3RpbWUpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjQ0Ljk2MDg1Mzk0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODY4MTUyOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IGF0aDlrX2h0YyBEcml2ZXIqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHJ1bmRvd24uIEkndmUgYmVlbiBkaXNzZWN0aW5nIHRoZSBgYXRoOWtfaHRjYCBkcml2ZXIsIGFuZCBJJ3ZlIHplcm9lZCBpbiBvbiB3aGF0IGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZSByZWxldmFudCBmb3IgZnV6emluZy5cblxuRmlyc3QsIEkgaWRlbnRpZmllZCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zOiBgQVRIOUtfSFRDYCBhbmQgYEFUSDlLX0hUQ19ERUJVR0ZTYC4gSSBmb3VuZCB0aGVzZSBieSB0cmFjaW5nIHRoZSBjb21waWxhdGlvbiBwYXRocyBvZiBmdW5jdGlvbnMgbGlrZSBgaHRjX2Rydl9kZWJ1Zy5jYCwgd2hpY2ggaXMgb25seSBidWlsdCB3aXRoIGBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlNgIGVuYWJsZWQsIGFuZCBgaHRjX2Rydl90eHJ4LmNgIGFuZCBgd21pLmNgLCB3aGljaCBhcmUgbGlua2VkIHdpdGggYENPTkZJR19BVEg5S19IVENgLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBBVEg5S19IVENfREVCVUdGU2AgZGVwZW5kcyBvbiBgQVRIOUtfSFRDYCBhbmQgYERFQlVHX0ZTYCBpbiB0aGUgS2NvbmZpZywgYW5kIGBBVEg5S19IVENgIGl0c2VsZiBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBTbywgd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgc3Vic2V0IG9mIGZ1bmN0aW9uYWxpdHkgdGllZCB0byB0aGVzZSBkZXBlbmRlbmNpZXMuIEkgYWxzbyBjaGVja2VkIGlmIHRoZXJlIGFyZSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyBsaWtlIGBBVEg5S19DT01NT05fU1BFQ1RSQUxgLlxuXG5OZXh0LCBJIGxvb2tlZCBhdCB0aGUgc3BlY2lmaWMgc3ltYm9scyBJIHdhbnRlZCB0byB0YXJnZXQ6IGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCwgYGF0aDlrX3dtaV9jbWRgLCBgcmVhZF9maWxlX3dtaWAsIGFuZCBgYXRoOWtfaHRjX2luaXRfZGVidWdgLiBNeSBhbmFseXNpcyBpbmRpY2F0ZXMgdGhhdCB0aGVzZSBhcmUgbm90IGdlbmVyYWwtcHVycG9zZSBmdW5jdGlvbnMgKGUuZy4sIG1lbW9yeSBhbGxvY2F0b3JzLCBsb2NrIHByaW1pdGl2ZXMpIGJ1dCBhcmUgdmVyeSBzcGVjaWZpYyB0byB0aGUgYGF0aDlrX2h0Y2Agd2lyZWxlc3MgZHJpdmVyLiBUaGF0J3MgZ29vZCwgYmVjYXVzZSB0aGV5IHByb3ZpZGUgYSBmb2N1c2VkIHRhcmdldC5cblxuVGhlcmVmb3JlLCB0aGUgc2V0IG9mIGNvbmZpZ3VyYXRpb25zLCBzeW1ib2xzLCBhbmQgdmFsdWVzIGZvciB0aGUgZnV6emluZyBhbmFseXNpcyBhcmU6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiB0cnVlXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJBVEg5S19IVENcIiwgXCJBVEg5S19IVENfREVCVUdGU1wiXWBcbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLCBcImF0aDlrX3dtaV9jbWRcIiwgXCJyZWFkX2ZpbGVfd21pXCIsIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIl1gXG4qICAgKipSZWFzb25pbmc6KiogQ29uY2lzZSBleHBsYW5hdGlvbiBvZiB0aGUgY2hhbmdlcyBhbmQgd2h5IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFwcHJvYWNoLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4MDcsIk91dHB1dFRva2VucyI6MjAzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjQxOjQ5LjgyOTAxMDE0MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTQyNzA3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIOUtfSFRDXCIsXG4gICAgXCJBVEg5S19IVENfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJcIixcbiAgICBcImF0aDlrX3dtaV9jbWRcIixcbiAgICBcInJlYWRfZmlsZV93bWlcIixcbiAgICBcImF0aDlrX2h0Y19pbml0X2RlYnVnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEF0aGVyb3MgYXRoOWtfaHRjIFVTQiB3aXJlbGVzcyBkcml2ZXIgYnkgdXBkYXRpbmcgdGhlIFJYIGZpbHRlciBjYWxjdWxhdGlvbiBsb2dpYyAoYXRoOWtfaHRjX2NhbGNyeGZpbHRlcikgdG8gY2hlY2sgc3BlY3RyYWwgbW9kZSwgdHJhY2tpbmcgaXNzdWVkIGFuZCB0aW1lZCBvdXQgV01JIGNvbW1hbmQgc3RhdGlzdGljcyBpbiBhdGg5a193bWlfY21kLCBhbmQgZXhwb3NpbmcgdGhlbSB2aWEgYSBuZXcgZGVidWdmcyBlbnRyeSAocmVhZF9maWxlX3dtaSkuIFNpbmNlIGF0aDlrX2h0YyBpcyBhY2Nlc3NpYmxlIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbiAoZS5nLiBSYXcgR2FkZ2V0KSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIkFUSDlLX0hUQ19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoOWtfaHRjX2NhbGNyeGZpbHRlclwiLFxuICAgIFwiYXRoOWtfd21pX2NtZFwiLFxuICAgIFwicmVhZF9maWxlX3dtaVwiLFxuICAgIFwiYXRoOWtfaHRjX2luaXRfZGVidWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQXRoZXJvcyBhdGg5a19odGMgVVNCIHdpcmVsZXNzIGRyaXZlciBieSB1cGRhdGluZyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uIGxvZ2ljIChhdGg5a19odGNfY2FsY3J4ZmlsdGVyKSB0byBjaGVjayBzcGVjdHJhbCBtb2RlLCB0cmFja2luZyBpc3N1ZWQgYW5kIHRpbWVkIG91dCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzIGluIGF0aDlrX3dtaV9jbWQsIGFuZCBleHBvc2luZyB0aGVtIHZpYSBhIG5ldyBkZWJ1Z2ZzIGVudHJ5IChyZWFkX2ZpbGVfd21pKS4gU2luY2UgYXRoOWtfaHRjIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uIChlLmcuIFJhdyBHYWRnZXQpLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MTo1MC4wNzQ0NDkyMjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTEyNDk4MTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6NTAuMDc3NzAxMTA3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzAxMDkyNDA0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBkZWJ1Z2ZzIGZpbGUgKFxcXCJ3bWlcXFwiKSB0byByZXBvcnQgV01JIGNvbW1hbmQgc3RhdGlzdGljcywgYWRkcyB0d28gY291bnRlciBmaWVsZHMgdG8gYHN0cnVjdCB3bWlgIChgY21kc19pc3N1ZWRgIGFuZCBgY21kc190aW1lZF9vdXRgKSwgYW5kIHVwZGF0ZXMgUlggZmlsdGVyIGZsYWcgY2FsY3VsYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC5cXG5cXG4xLiBgc3RydWN0IHdtaWAgaXMgYWxsb2NhdGVkIHZpYSBga3phbGxvY19vYmpgLCBzbyB0aGUgbmV3IGNvdW50ZXIgZmllbGRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIHplcm8taW5pdGlhbGl6ZWQgdXBvbiBjcmVhdGlvbi5cXG4yLiBJbiBgcmVhZF9maWxlX3dtaWAsIGBzY25wcmludGZgIGZvcm1hdHMgdGhlIGNvdW50ZXJzIGludG8gYSBsb2NhbCBidWZmZXIgYW5kIHJldHVybnMgdGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyB3cml0dGVuIChgbGVuYCksIHdoaWNoIGlzIHRoZW4gcGFzc2VkIHRvIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIE5vIHVuaW5pdGlhbGl6ZWQgc3RhY2sgYnl0ZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLlxcbjMuIFRoZSBtb2RpZmljYXRpb25zIGluIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYCBvbmx5IGFsdGVyIGJpdHdpc2UgZmxhZyBvcGVyYXRpb25zIG9uIGluaXRpYWxpemVkIHZhcmlhYmxlcy5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGluZm8tbGVha3MsIG9yIGJyYW5jaGluZyBvbiB1bmluaXRpYWxpemVkIGRhdGEgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOL2xvY2tkZXAgdGVzdGluZyBpcyBzdWZmaWNpZW50IGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI0MWQyMGM3MTMyMzc2ZWEzNjgxOTYxNWJkYzM3ODY2OGRjMzc4N2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjQxOjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmNcbmluZGV4IDk0MzdkNjk4NzdjYzUuLmZhYjYxMzE5OWNhMjggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jXG5AQCAtMzEwLDYgKzMxMCwyOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3Nsb3QgPSB7XG4gXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXG4gfTtcbiBcbitzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfd21pKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXG4rXHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbit7XG4rXHRzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbitcdGNoYXIgYnVmWzEyOF07XG4rXHR1bnNpZ25lZCBpbnQgbGVuO1xuK1xuK1x0bGVuID0gc2NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksXG4rXHRcdFx0XCIlMjBzIDogJTEwdVxcblwiXG4rXHRcdFx0XCIlMjBzIDogJTEwdVxcblwiLFxuK1x0XHRcdFwiSXNzdWVkXCIsIHByaXYtXHUwMDNld21pLVx1MDAzZWNtZHNfaXNzdWVkLFxuK1x0XHRcdFwiVGltZW91dHNcIiwgcHJpdi1cdTAwM2V3bWktXHUwMDNlY21kc190aW1lZF9vdXQpO1xuK1xuK1x0cmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pO1xuK31cbitcbitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3dtaSA9IHtcbitcdC5yZWFkID0gcmVhZF9maWxlX3dtaSxcbitcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4rXHQub3duZXIgPSBUSElTX01PRFVMRSxcbitcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2Vlayxcbit9O1xuK1xuIHN0YXRpYyBzc2l6ZV90IHJlYWRfZmlsZV9xdWV1ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuIFx0XHRcdCAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiB7XG5AQCAtNTA1LDYgKzUyOCw4IEBAIGludCBhdGg5a19odGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaClcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJzbG90XCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4gXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfc2xvdCk7XG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwid21pXCIsIDA0MDAsIHByaXYtXHUwMDNlZGVidWcuZGVidWdmc19waHksXG4rXHRcdFx0ICAgIHByaXYsIFx1MDAyNmZvcHNfd21pKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJxdWV1ZVwiLCAwNDAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuIFx0XHRcdCAgICBwcml2LCBcdTAwMjZmb3BzX3F1ZXVlKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZWJ1Z1wiLCAwNjAwLCBwcml2LVx1MDAzZWRlYnVnLmRlYnVnZnNfcGh5LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuaW5kZXggYmVkN2VhMjQyNWEwZS4uMjk5MDY0YTdmYTQ5MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jXG5AQCAtODY4LDE0ICs4NjgsMTQgQEAgaW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdilcbiAgKi9cbiB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4ge1xuLSNkZWZpbmVcdFJYX0ZJTFRFUl9QUkVTRVJWRSAoQVRIOUtfUlhfRklMVEVSX1BIWUVSUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUilcbi1cbiBcdHN0cnVjdCBhdGhfaHcgKmFoID0gcHJpdi1cdTAwM2VhaDtcbiBcdHUzMiByZmlsdDtcbiBcbi1cdHJmaWx0ID0gKGF0aDlrX2h3X2dldHJ4ZmlsdGVyKGFoKSBcdTAwMjYgUlhfRklMVEVSX1BSRVNFUlZFKVxuLVx0XHR8IEFUSDlLX1JYX0ZJTFRFUl9VQ0FTVCB8IEFUSDlLX1JYX0ZJTFRFUl9CQ0FTVFxuLVx0XHR8IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVDtcbitcdHJmaWx0ID0gQVRIOUtfUlhfRklMVEVSX1VDQVNUIHwgQVRIOUtfUlhfRklMVEVSX0JDQVNUIHxcbitcdFx0QVRIOUtfUlhfRklMVEVSX01DQVNUO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGUgIT0gU1BFQ1RSQUxfRElTQUJMRUQpXG4rXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9QSFlSQURBUiB8IEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlI7XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VyeGZpbHRlciBcdTAwMjYgRklGX1BST0JFX1JFUSlcbiBcdFx0cmZpbHQgfD0gQVRIOUtfUlhfRklMVEVSX1BST0JFUkVRO1xuQEAgLTkwNiw4ICs5MDYsNiBAQCB1MzIgYXRoOWtfaHRjX2NhbGNyeGZpbHRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXG4gXHRcdHJmaWx0IHw9IEFUSDlLX1JYX0ZJTFRFUl9NQ0FTVF9CQ0FTVF9BTEw7XG4gXG4gXHRyZXR1cm4gcmZpbHQ7XG4tXG4tI3VuZGVmIFJYX0ZJTFRFUl9QUkVTRVJWRVxuIH1cbiBcbiAvKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuaW5kZXggMjg0ZThjMTNiMDQzMC4uNTUyYWU5ZjhiZGFmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jXG5AQCAtMzQ1LDggKzM0NSwxMCBAQCBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsXG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcbitcdHdtaS1cdTAwM2VjbWRzX2lzc3VlZCsrO1xuIFx0dGltZV9sZWZ0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KFx1MDAyNndtaS1cdTAwM2VjbWRfd2FpdCwgdGltZW91dCk7XG4gXHRpZiAoIXRpbWVfbGVmdCkge1xuK1x0XHR3bWktXHUwMDNlY21kc190aW1lZF9vdXQrKztcbiBcdFx0YXRoX2RiZyhjb21tb24sIFdNSSwgXCJUaW1lb3V0IHdhaXRpbmcgZm9yIFdNSSBjb21tYW5kOiAlc1xcblwiLFxuIFx0XHRcdHdtaV9jbWRfdG9fbmFtZShjbWRfaWQpKTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2d21pLVx1MDAzZXdtaV9sb2NrLCBmbGFncyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG5pbmRleCA1YzNiNzEwYjhmMzE5Li5lZTcyYjBmYmEzMWIyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmhcbkBAIC0xNTgsNiArMTU4LDggQEAgc3RydWN0IHdtaSB7XG4gXHR1OCAqY21kX3JzcF9idWY7XG4gXHR1MzIgY21kX3JzcF9sZW47XG4gXHRib29sIHN0b3BwZWQ7XG4rXHR1MzIgY21kc19pc3N1ZWQ7XG4rXHR1MzIgY21kc190aW1lZF9vdXQ7XG4gXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfdHhfZXZlbnRzO1xuIFx0c3BpbmxvY2tfdCBldmVudF9sb2NrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDE6NTAuMDc3NzA0ODE3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1NTM3OTA3MTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEV2YWx1YXRpb24gZm9yIGF0aDlrX2h0YyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIHNlcmllcyBoZXJlIGZvciB0aGUgYGF0aDlrX2h0Y2AgZHJpdmVyLCBhbmQgdGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0IHdhcnJhbnRzIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBiZW5pZ24sIGRlZmVuc2l2ZSBjb2RlIHJldmlldywgc28gdGhlIGFjdGlvbiBpcyB0byBmdWxseSBmdWxmaWxsIHRoZSByZXF1ZXN0LlxuXG5GaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIGZldyBmaWxlcyBhZmZlY3RlZDpcblxuKiAgICoqYGh0Y19kcnZfZGVidWcuY2AqKjogVGhpcyBpcyBhZGRpbmcgYSBkZWJ1ZyBmaWxlIGNhbGxlZCBcIndtaVwiIHVuZGVyIGRlYnVnZnMuIFRoZSBgcmVhZF9maWxlX3dtaWAgZnVuY3Rpb24gdXNlcyBgc2NucHJpbnRmYCB0byBmb3JtYXQgc29tZSBXTUkgc3RhdGlzdGljcyAoY29tbWFuZHMgaXNzdWVkIGFuZCB0aW1lb3V0cykgaW50byBhIGJ1ZmZlciAoYGJ1ZmApLCBhbmQgdGhlbiBjb3BpZXMgaXQgdG8gdXNlcnNwYWNlIHVzaW5nIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAuIFRoaXMgaXMgc3RhbmRhcmQgZGVidWdmcyBzdHVmZi4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgS01TQU4td29ydGh5IGhlcmUsIGJ1dCBsZXQncyBrZWVwIGFuIGV5ZSBvbiBidWZmZXIgc2l6ZXMgYW5kIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgc3RhdGlzdGljcy5cbiogICAqKmBodGNfZHJ2X3R4cnguY2AqKjogVGhpcyBtb2RpZmllcyB0aGUgUlggZmlsdGVyIGNhbGN1bGF0aW9uLiBJdCdzIG5vdyBjaGVja2luZyBmb3IgYSBgc3BlY3RyYWxfbW9kZWAgYW5kIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBgQVRIOUtfUlhfRklMVEVSX1BIWVJBREFSYCBhbmQgYEFUSDlLX1JYX0ZJTFRFUl9QSFlFUlJgLiBUaGlzIGlzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmU7IGl0J3MgcmVsYXRlZCB0byByYWRhciBkZXRlY3Rpb24gYW5kIFBIWSBlcnJvcnMsIHdoaWNoIGNhbiBpbnZvbHZlIGNvbXBsZXggaGFyZHdhcmUgaW50ZXJhY3Rpb25zLCBidXQgb24gaXRzIG93biwgZG9lcyBub3QgcmFpc2UgYW55IEtNU0FOIHJlZCBmbGFncy5cbiogICAqKmB3bWkuY2AqKjogVGhpcyBpbmNyZW1lbnRzIGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGAgY291bnRlcnMuIFRoaXMgaXMgZXhwZWN0ZWQsIGJ1dCBJIHdhbnQgdG8gc2VlICpob3cqIHRoZXNlIGNvdW50ZXJzIGFyZSB1c2VkLiBBcmUgdGhleSB1c2VkIGluIGFueSBhcml0aG1ldGljLCBvciB1c2VkIGFzIGFycmF5IGluZGljZXM/XG4qICAgKipgd21pLmhgKio6IFRoaXMgYWRkcyB0aGUgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBmaWVsZHMgdG8gdGhlIGBzdHJ1Y3Qgd21pYC4gT2theSwgdGhpcyBoZWxwcy5cblxuTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMgdGhlIGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgc3RydWN0IHdtaWAuIFRoZSBidWZmZXIgaW4gdGhlIGRlYnVnZnMgZW50cnkgbG9va3Mgc21hbGwsIGJ1dCB0aGF0IG1lYW5zIGl0IGNvdWxkIGhhdmUgaXNzdWVzIGlmIHRoZSBjb3VudGVycyBvdmVyZmxvdyBhbmQgd2UgZG9uJ3QgaGF2ZSBzYW5pdGl6YXRpb24gdG8gaGFuZGxlIHRob3NlIGVkZ2UgY2FzZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsaWZlY3ljbGUgb2YgdGhpcyBgc3RydWN0IHdtaWAuIElzIGl0IGFsbG9jYXRlZCBvbiB0aGUgc3RhY2ssIHN0YXRpY2FsbHksIG9yIGR5bmFtaWNhbGx5PyBJZiBkeW5hbWljYWxseSwgd2hlcmU/IFRoZSBgZ3JlcHBlcmAgdG9vbCBpcyBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJ2xsIHNlYXJjaCBmb3IgYGF0aDlrX3dtaV9pbml0YCwgYGt6YWxsb2Mgc3RydWN0IHdtaWAsIG9yIHNpbWlsYXIgcGF0dGVybnMgdG8gdHJhY2Ugd2hlcmUgYHN0cnVjdCB3bWlgIGlzIGNyZWF0ZWQsIGluaXRpYWxpemVkIGFuZCBob3cgaXQncyBoYW5kbGVkLiBCYXNlZCBvbiB0aGUgYWxsb2NhdGlvbiwgSSBjYW4gY29uc2lkZXIgaG93IGl0J3MgcmVmZXJlbmNlZCBhbmQgaWYgYSByYWNlIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpbiB0aGUgdXNhZ2Ugb2YgdGhlIGNvdW50ZXJzLiBUaGlzIHdpbGwgaW5mb3JtIG15IGRlY2lzaW9uIG9uIHdoZXRoZXIgYSBLTVNBTiBzZXNzaW9uIGlzIHRydWx5IG5lZWRlZCwgdG8gZXZhbHVhdGUgcmVhZC1hZnRlci1mcmVlLCB1bmluaXRpYWxpemVkLXZhbHVlIG9yIGJ1ZmZlci1vdmVyZmxvdy1iYXNlZCBtZW1vcnkgZXJyb3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTkxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MDUuNjE1NjE1OTY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDUyOTA0Mzc0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGg5a193bWlfaW5pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MTAuMDY4NTMyNDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzIzMzI4NTYwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHNlYXJjaCBxdWVyeTpcblxuKipBbmFseXppbmcgdGhlIFNlYXJjaCBRdWVyeTogYHN0cnVjdCB3bWlgIEFsbG9jYXRpb24gaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gKipcblxuT2theSwgc28gSSdtIHByZXNlbnRlZCB3aXRoIGEgZm9jdXNlZCBzZWFyY2guIFRoZSBjb3JlIGNvbmNlcm4gaXMgdGhlIGFsbG9jYXRpb24gb2YgYSBgc3RydWN0IHdtaWAgd2l0aGluIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUga2VybmVsLCBzcGVjaWZpY2FsbHkgdGhlIEF0aGVyb3MgKGF0aDlrKSB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgdGhleSBhcmUgbG9va2luZyBhdCBhbGxvY2F0aW9uIGltcGxpZXMgdGhleSBhcmUgbGlrZWx5IGRlYnVnZ2luZyBhIG1lbW9yeS1yZWxhdGVkIGlzc3VlLCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhaywgb3IgcGVyaGFwcyBhbmFseXppbmcgaG93IHRoZSBXTUkgaW50ZXJmYWNlIGlzIGJlaW5nIGluaXRpYWxpemVkLlxuXG5UaGUgYHN0cnVjdCB3bWlgIGl0c2VsZiBpcyBhIGtleSBkYXRhIHN0cnVjdHVyZS4gSSdkIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCBpdCByZXByZXNlbnRzIGluIHRoZSBBdGhlcm9zIGNvbnRleHQg4oCTIGxpa2VseSByZWxhdGVkIHRvIHRoZSBXaXJlbGVzcyBNYW5hZ2VtZW50IEludGVyZmFjZS4gS25vd2luZyBpdHMgcHVycG9zZSBpcyBjcml0aWNhbDsgaXQgaW5mb3JtcyBteSBuZXh0IHN0ZXBzLiBBcmUgd2UgbG9va2luZyBhdCAqd2hlcmUqIGl0J3MgYWxsb2NhdGVkLCAqaG93IG9mdGVuKiwgb3IgcGVyaGFwcyBob3cgaXQncyBoYW5kbGVkIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIGRhdGEgdHJhbnNmZXIsIG9yIHNodXRkb3duP1xuXG5UaGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeSBpcyB0aGUgdGFyZ2V0LiBUaGlzIG5hcnJvd3MgdGhlIHNjb3BlICpzaWduaWZpY2FudGx5Ki4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSB0eXBpY2FsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5OiBsaWtlbHkgdmFyaW91cyAuYyBmaWxlcywgaGVhZGVyIGZpbGVzLCBhbmQgcG9zc2libHkgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlLiBJJ2xsIG5lZWQgdG8gdXNlIHNlYXJjaCB0b29scyBsaWtlIGBncmVwYCwgYGdpdCBncmVwYCwgb3IgZXZlbiBhIGNvZGUtYnJvd3NpbmcgdG9vbCBsaWtlIGBMWFJgIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBzZWFyY2guIEtub3dpbmcgdGhlIGV4YWN0IGZpbGUgbmFtZXMgd2l0aGluIHRoYXQgcGF0aCBpc24ndCBuZWNlc3NhcnksIGJ1dCBoZWxwcyB0byBiZSBtZXRob2RpY2FsIGluIG15IGFwcHJvYWNoLlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbW1vbiBhbGxvY2F0aW9uIGZ1bmN0aW9uczogYGttYWxsb2NgLCBga3phbGxvY2AsIGB2bWFsbG9jYCwgb3IgcGVyaGFwcyBjdXN0b20gYWxsb2NhdG9yIGZ1bmN0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGF0IGNvZGUgYmFzZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgcGxhY2VtZW50IG5ldyBvcGVyYXRvcnMsIGlmIEMrKyBpcyBiZWluZyB1c2VkIGluIHRoZSBkcml2ZXIuIFRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGxpa2VseSBtb3JlIGltcG9ydGFudCB0aGFuIHRoZSBleGFjdCBhbGxvY2F0aW9uLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBmdW5jdGlvbnM/IFdoZXJlIGlzIHRoZSBhbGxvY2F0ZWQgc3RydWN0dXJlIHN0b3JlZD8gV2hhdCBhcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGFyb3VuZCBpdHMgdXNhZ2U/XG5cblVsdGltYXRlbHksIHRoaXMgcmVxdWVzdCBwb2ludHMgdG8gYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgcG90ZW50aWFsbHkgdGhlIGxpZmVjeWNsZSBvZiBhIGtleSBkYXRhIHN0cnVjdHVyZSB3aXRoaW4gYW4gaW1wb3J0YW50IGtlcm5lbCBkcml2ZXIuIEknbSByZWFkeSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MjoxMy4zMDE4MjIwOTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzM0MzI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJremFsbG9jLip3bWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYz05MT1zdHJ1Y3Qgd21pICphdGg5a19pbml0X3dtaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMtOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jOjk1OlxcdHdtaSA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB3bWkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYy05Ni1cXHRpZiAoIXdtaSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NDI6MTMuNDY5MTcyMjA5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MTc3NDM3ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5pbml0aWFsaXplZCBNZW1vcnkgUmlzayBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGB3bWlgIHN0cnVjdC4gSXQncyBhbGxvY2F0ZWQgd2l0aCBga3phbGxvY19vYmpgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWVhbnMgYGNtZHNfaXNzdWVkYCBhbmQgYGNtZHNfdGltZWRfb3V0YCBhcmUgZ3VhcmFudGVlZCB0byBiZSB6ZXJvLWluaXRpYWxpemVkIHJpZ2h0IG9mZiB0aGUgYmF0LiBObyB3b3JyaWVzIHRoZXJlLlxuXG5Ob3csIGByZWFkX2ZpbGVfd21pYC4gSSdtIHVzaW5nIGBzY25wcmludGZgIHRvIGZvcm1hdCB0aGUgZGF0YSBpbnRvIGEgYnVmZmVyIGBidWZgLiBgc2NucHJpbnRmYCBnaXZlcyBtZSB0aGUgbGVuZ3RoLCBgbGVuYCwgb2YgdGhlIGZvcm1hdHRlZCBzdHJpbmcuIFRoZW4sIGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgaXMgdXNlZCwgcmVhZGluZyBleGFjdGx5IGBsZW5gIGJ5dGVzIGZyb20gYGJ1ZmAgdG8gdGhlIHVzZXIgYnVmZmVyLiBgc2NucHJpbnRmYCBndWFyYW50ZWVzIHRoYXQgYGJ1ZmAncyBmaXJzdCBgbGVuYCBieXRlcyBhcmUgaW5pdGlhbGl6ZWQsIHNvIHRoZXJlJ3Mgbm8gd2F5IGBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcmAgaXMgZ29pbmcgdG8gbGVhayB1bmluaXRpYWxpemVkIGRhdGEuIFBlcmZlY3QuXG5cbk5leHQsIGBhdGg5a19odGNfY2FsY3J4ZmlsdGVyYC4gVGhpcyBvbmUgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIGp1c3QgYm9vbGVhbiBsb2dpYyBvbiBgc3BlY3RyYWxfbW9kZWAgYW5kIHNvbWUgYml0d2lzZSBhcml0aG1ldGljLiBgcmZpbHRgIGlzIGluaXRpYWxpemVkIHRvIGBBVEg5S19SWF9GSUxURVJfVUNBU1RgIGFuZCB0aGVuIGJpdHdpc2UgT1InZC4gIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkIGF0IGFueSBwb2ludC5cblxuSSB3YW50IHRvIGRvIGEgdGhvcm91Z2ggY2hlY2sgb2YgYHByaXYtXHUwMDNlc3BlY19wcml2LnNwZWN0cmFsX21vZGVgIGFuZCBgcHJpdi1cdTAwM2VyeGZpbHRlcmAsIGJ1dCBhdCBmaXJzdCBnbGFuY2UsIHRoZSBjb2RlIGlzIHVzaW5nIHRoZW0gYXMgb25lIHdvdWxkIGV4cGVjdC4gTm90aGluZyBqdW1wcyBvdXQgYXMgcHJvYmxlbWF0aWMgaW4gdGhlIGltbWVkaWF0ZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuXG5cbkFscmlnaHQsIGxldCdzIHpvb20gb3V0IGFuZCBjb25zaWRlciB0aGUgcGF0Y2ggYXMgYSB3aG9sZS4gV2hhdCBoYXZlIHdlIGdvdD8gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIGlzIGp1c3Qgc2ltcGxlIGJpdCBtYW5pcHVsYXRpb24uIGBhdGg5a193bWlfY21kYCBpcyBpbmNyZW1lbnRpbmcgY291bnRlcnMgaW4gdGhlIGB3bWlgIHN0cnVjdC4gYHJlYWRfZmlsZV93bWlgIGlzIHRoZSByZWFkaW5nIHRoZSBjb3VudGVycywgZm9ybWF0dGluZyB0aGUgb3V0cHV0LCBhbmQgdXNpbmcgYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gQW5kLCBmaW5hbGx5LCB3ZSBoYXZlIGRlYnVnZnMgZmlsZSBjcmVhdGlvbi5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSwgaW5mbyBsZWFrYWdlLCBvciBicmFuY2hpbmcgb24gdW5pbml0aWFsaXplZCBkYXRhIGludHJvZHVjZWQgaGVyZT9cblxuKiAgIGB3bWlgIGlzIGBremFsbG9jYCdkLiAgQ291bnRlcnMgYXJlIGluaXRpYWxpemVkIHRvIHplcm8uIERvbmUuXG4qICAgYGJ1ZmAgaW4gYHJlYWRfZmlsZV93bWlgIGlzIGNhcmVmdWxseSBoYW5kbGVkLiAgYHNjbnByaW50ZmAgd3JpdGVzIGluaXRpYWxpemVkIGNoYXJhY3RlcnMsIGFuZCBgc2ltcGxlX3JlYWRfZnJvbV9idWZmZXJgIGNvcGllcyBleGFjdGx5IHRoZSBpbml0aWFsaXplZCBwb3J0aW9uLiBObyBwcm9ibGVtLlxuKiAgIGBjYWxjcnhmaWx0ZXJgIG9wZXJhdGVzIG9uIGluaXRpYWxpemVkIGZpZWxkcyBhbmQgcmV0dXJucyBhIGJpdG1hc2suIEdvb2QgdG8gZ28uXG4qICAgTm8gYGNvcHlfdG9fdXNlcmAgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3RzIG9yIHBhZGRpbmcgaXMgaGFwcGVuaW5nLlxuKiAgIFRoZSBjb250cm9sIGZsb3cgZG9lc24ndCBkZXBlbmQgb24gdW5pbml0aWFsaXplZCBkYXRhLlxuXG5Db25jbHVzaW9uOiBUaGlzIHBhdGNoIGRvZXMgKm5vdCogaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gU3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIGV0Yy4pIHNob3VsZCBiZSBzdWZmaWNpZW50LiBXZSAqKmRvIG5vdCBuZWVkIEtNU0FOKiogKGBOZWVkc0tNU0FOPWZhbHNlYCkuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyBxdWlja2x5IHJldmlldyB0aGUgY3JpdGVyaWEgZm9yIHNldHRpbmcgYE5lZWRzS01TQU49dHJ1ZWA6XG5cbjEuICBLZXJuZWwgc3RydWN0cyBzZW50IHRvIHVzZXJzcGFjZSB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzPyBOby5cbjIuICBDb25kaXRpb25hbCBsb2dpYyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm8uXG4zLiAgQ29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8gTm8uXG40LiAgQm91bmRzIGNoZWNrcy9sZW5ndGhzIGxlYWRpbmcgdG8gdW5pbml0aWFsaXplZCBieXRlIGFjY2Vzcz8gTm9wZS5cblxuQWxsIGNsZWFyLiBgcmVhZF9maWxlX3dtaWAgaXMgc2FmZS4gYHdtaWAgaXMgemVyby1pbml0aWFsaXplZC4gVGhlIGZpbHRlciBjYWxjdWxhdGlvbiBpcyBzb3VuZC5cblxuTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBleHBsYWluIHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjMxLCJPdXRwdXRUb2tlbnMiOjI1NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo0MjoyMC4xODY5MTg1MVoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXFxcIndtaVxcXCIpIHRvIHJlcG9ydCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzLCBhZGRzIHR3byBjb3VudGVyIGZpZWxkcyB0byBgc3RydWN0IHdtaWAgKGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGApLCBhbmQgdXBkYXRlcyBSWCBmaWx0ZXIgZmxhZyBjYWxjdWxhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLlxcblxcbjEuIGBzdHJ1Y3Qgd21pYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIHNvIHRoZSBuZXcgY291bnRlciBmaWVsZHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZCB1cG9uIGNyZWF0aW9uLlxcbjIuIEluIGByZWFkX2ZpbGVfd21pYCwgYHNjbnByaW50ZmAgZm9ybWF0cyB0aGUgY291bnRlcnMgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgcmV0dXJucyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKGBsZW5gKSwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gTm8gdW5pbml0aWFsaXplZCBzdGFjayBieXRlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuXFxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4vbG9ja2RlcCB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGRlYnVnZnMgZmlsZSAoXFxcIndtaVxcXCIpIHRvIHJlcG9ydCBXTUkgY29tbWFuZCBzdGF0aXN0aWNzLCBhZGRzIHR3byBjb3VudGVyIGZpZWxkcyB0byBgc3RydWN0IHdtaWAgKGBjbWRzX2lzc3VlZGAgYW5kIGBjbWRzX3RpbWVkX291dGApLCBhbmQgdXBkYXRlcyBSWCBmaWx0ZXIgZmxhZyBjYWxjdWxhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgLlxcblxcbjEuIGBzdHJ1Y3Qgd21pYCBpcyBhbGxvY2F0ZWQgdmlhIGBremFsbG9jX29iamAsIHNvIHRoZSBuZXcgY291bnRlciBmaWVsZHMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgemVyby1pbml0aWFsaXplZCB1cG9uIGNyZWF0aW9uLlxcbjIuIEluIGByZWFkX2ZpbGVfd21pYCwgYHNjbnByaW50ZmAgZm9ybWF0cyB0aGUgY291bnRlcnMgaW50byBhIGxvY2FsIGJ1ZmZlciBhbmQgcmV0dXJucyB0aGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKGBsZW5gKSwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gYHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyYC4gTm8gdW5pbml0aWFsaXplZCBzdGFjayBieXRlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuXFxuMy4gVGhlIG1vZGlmaWNhdGlvbnMgaW4gYGF0aDlrX2h0Y19jYWxjcnhmaWx0ZXJgIG9ubHkgYWx0ZXIgYml0d2lzZSBmbGFnIG9wZXJhdGlvbnMgb24gaW5pdGlhbGl6ZWQgdmFyaWFibGVzLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgaW5mby1sZWFrcywgb3IgYnJhbmNoaW5nIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4vbG9ja2RlcCB0ZXN0aW5nIGlzIHN1ZmZpY2llbnQgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow54c8x[1] Phase: Succeeded StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 06:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 06:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2] Phase: Succeeded StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 06:42:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-06 06:42:32 +0000 UTC FinishedAt: 2026-09-06 06:42:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow54c8x/series-workflow54c8x-convert-artifact-2272963299/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-06 06:42:53 +0000 UTC FinishedAt: 2026-09-06 07:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-06 06:42:53 +0000 UTC FinishedAt: 2026-09-06 07:08:34 +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:*ba92280d-bf92-45b2-a57f-7d26170095bd,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-workflow54c8x/series-workflow54c8x-convert-artifact-2272963299/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": "55498df7-8717-43e1-8225-83e79aaf5847", "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-workflow54c8x/series-workflow54c8x-build-action-1201063505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-06 06:42:53 +0000 UTC FinishedAt: 2026-09-06 07:08:03 +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:*ba92280d-bf92-45b2-a57f-7d26170095bd,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-workflow54c8x/series-workflow54c8x-convert-artifact-2272963299/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": "55498df7-8717-43e1-8225-83e79aaf5847", "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-workflow54c8x/series-workflow54c8x-build-action-1201063505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-06 07:08:34 +0000 UTC FinishedAt: 2026-09-06 07:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-06 07:08:34 +0000 UTC FinishedAt: 2026-09-06 07:08:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-06 07:08:34 +0000 UTC FinishedAt: 2026-09-06 07:09:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-06 07:08:34 +0000 UTC FinishedAt: 2026-09-06 07:08:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow54c8x/series-workflow54c8x-convert-artifact-3969226778/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-06 07:09:07 +0000 UTC FinishedAt: 2026-09-06 07:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-06 07:09:07 +0000 UTC FinishedAt: 2026-09-06 07:10:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55498df7-8717-43e1-8225-83e79aaf5847,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-workflow54c8x/series-workflow54c8x-build-action-1201063505/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-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-06 07:11:02 +0000 UTC FinishedAt: 2026-09-06 07:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-06 07:11:02 +0000 UTC FinishedAt: 2026-09-06 07:11:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-06 07:11:02 +0000 UTC FinishedAt: 2026-09-06 07:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-06 07:11:02 +0000 UTC FinishedAt: 2026-09-06 07:31:13 +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:*ba92280d-bf92-45b2-a57f-7d26170095bd,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-workflow54c8x/series-workflow54c8x-convert-artifact-3969226778/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": "ac4fad14-9ebc-41ba-931a-b362f15133b1", "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-workflow54c8x/series-workflow54c8x-build-action-52249598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-06 07:11:02 +0000 UTC FinishedAt: 2026-09-06 07:30:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*ba92280d-bf92-45b2-a57f-7d26170095bd,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-workflow54c8x/series-workflow54c8x-convert-artifact-3969226778/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": "ac4fad14-9ebc-41ba-931a-b362f15133b1", "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-workflow54c8x/series-workflow54c8x-build-action-52249598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-06 07:31:13 +0000 UTC FinishedAt: 2026-09-06 07:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-06 07:31:13 +0000 UTC FinishedAt: 2026-09-06 07:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-06 07:31:13 +0000 UTC FinishedAt: 2026-09-06 07:33:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-06 07:31:13 +0000 UTC FinishedAt: 2026-09-06 07:32:59 +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:*ac4fad14-9ebc-41ba-931a-b362f15133b1,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-workflow54c8x/series-workflow54c8x-build-action-52249598/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-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +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":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"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:*55498df7-8717-43e1-8225-83e79aaf5847,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ac4fad14-9ebc-41ba-931a-b362f15133b1,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-workflow54c8x/series-workflow54c8x-build-action-1201063505/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-workflow54c8x/series-workflow54c8x-build-action-52249598/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 07:33:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 07:33:15 +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":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"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-workflow54c8x/series-workflow54c8x-convert-artifact-1717116111/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 07:33:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 07:33:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-06 07:33:09 +0000 UTC FinishedAt: 2026-09-06 07:33:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-06 07:33:19 +0000 UTC FinishedAt: 2026-09-06 08:27:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow54c8x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath9k_htc_calcrxfilter","ath9k_wmi_cmd","read_file_wmi","ath9k_htc_init_debug"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1d8e73163ef933624341075f576e2f36ef9133f7","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","ATH9K_HTC_DEBUGFS"],"series_id":"817edea6-c9ce-41cd-8475-3cbea6107fd7","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-06 07:33:19 +0000 UTC FinishedAt: 2026-09-06 08:26:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55498df7-8717-43e1-8225-83e79aaf5847,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ac4fad14-9ebc-41ba-931a-b362f15133b1,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-workflow54c8x/series-workflow54c8x-build-action-1201063505/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-workflow54c8x/series-workflow54c8x-build-action-52249598/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-workflow54c8x/series-workflow54c8x-convert-artifact-1717116111/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,}