Name: series-workflowjbhjq Phase: Succeeded StartedAt: 2026-09-06 06:34:12 +0000 UTC FinishedAt: 2026-09-06 07:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[0] Phase: Succeeded StartedAt: 2026-09-06 06:34:12 +0000 UTC FinishedAt: 2026-09-06 06:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 06:34:12 +0000 UTC FinishedAt: 2026-09-06 06:37:14 +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": "641d03105cc0d2437e32fdeec164f91a4ccef6c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLINK", "PHYLIB", "USB_NET_AX8817X", "USB_LAN78XX", "NET_DSA" ], "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": "641d03105cc0d2437e32fdeec164f91a4ccef6c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLINK", "PHYLIB", "USB_NET_AX8817X", "USB_LAN78XX", "NET_DSA" ], "series_id": "fe8eb401-b8a2-4f17-87da-d31dcf916117" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_resolve", "phylink_start", "phylink_stop" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19yZXNvbHZlJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RhcnQmIzM0OywKICAgICYjMzQ7cGh5bGlua19zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSBvciBwbC1cdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTI0MzI0MTRiMTk5YjZhYmRmYmJlNWE0YzU4M2QwOTcyZTMzZjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNjozNTo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xNjMwLDggJiM0MzsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4mIzQzO1x0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4gXHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuIFx0fSBlbHNlIGlmIChwbC1cdTAwM2VsaW5rX2ZhaWxlZCkge1xuJiM0MztcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuIFx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbiBcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfcmVzb2x2ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTI0MzI0MTRiMTk5YjZhYmRmYmJlNWE0YzU4M2QwOTcyZTMzZjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAwNjozNTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMTYzMCw4ICYjNDM7MTYzMCwxMCBAQCBzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCiAJaWYgKHBsLSZndDtwaHlsaW5rX2Rpc2FibGVfc3RhdGUpIHsKIAkJcGwtJmd0O2xpbmtfZmFpbGVkID0gZmFsc2U7CiYjNDM7CQlsaW5rX3N0YXRlID0gcGwtJmd0O2xpbmtfY29uZmlnOwogCQlsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTsKIAl9IGVsc2UgaWYgKHBsLSZndDtsaW5rX2ZhaWxlZCkgewomIzQzOwkJbGlua19zdGF0ZSA9IHBsLSZndDtsaW5rX2NvbmZpZzsKIAkJbGlua19zdGF0ZS5saW5rID0gZmFsc2U7CiAJCXJldHJpZ2dlciA9IHRydWU7CiAJfSBlbHNlIGlmIChwbC0mZ3Q7YWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBQSFlMSU5LIFBhdGNoKioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGltcGFjdGluZyB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGlmZiBpdHNlbGY7IEkmIzM5O2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gcHVsbCBpdCB1cCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gS25vd2luZyB0aGlzIGNvbnRleHQgaXMga2V5LCBvZiBjb3Vyc2UhCgpPbmNlIEkgaGF2ZSB0aGUgZGlmZiBpbiBmcm9udCBvZiBtZSwgSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgdmlldy4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBhcm91bmQgbGluZSAxNjMwLCB3aGljaCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9uZWQuIERlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIEkgbWlnaHQgdXNlIGBncmVwcGVyYCBvciBteSBJREUgdG8gcXVpY2tseSBqdW1wIHRvIHRoZSByZWxldmFudCBjb2RlLiBUaGlzJiMzOTtsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHBpbnBvaW50IHRoZSAqd2h5KiBiZWhpbmQgdGhlIG1vZGlmaWNhdGlvbnMsIGFuZCBzZWUgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGltcGFjdGVkLiBFc3NlbnRpYWxseSwgdW5kZXJzdGFuZGluZyB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgY2hhbmdlcyBpcyBlc3NlbnRpYWwgdG8gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTYxMDpcdHN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNjExOlx0e1xuMTYxMjpcdFx0cmV0dXJuIHBsLVx1MDAzZW5ldGRldiA/IG5ldGlmX2NhcnJpZXJfb2socGwtXHUwMDNlbmV0ZGV2KSA6IHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlO1xuMTYxMzpcdH1cbjE2MTQ6XHRcbjE2MTU6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuMTYxNjpcdHtcbjE2MTc6XHRcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XG4xNjE4Olx0XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XG4xNjE5Olx0XHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcbjE2MjA6XHRcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XG4xNjIxOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuMTYyMjpcdFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcbjE2MjM6XHRcbjE2MjQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE2MjU6XHRcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE2MjY6XHRcdGlmIChwaHkpXG4xNjI3Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTYyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4xNjI5Olx0XHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XG4xNjMwOlx0XG4xNjMxOlx0XHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4xNjMyOlx0XHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4xNjMzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2MzQ6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM1Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4xNjM2Olx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2Mzc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM4Olx0XHRcdHJldHJpZ2dlciA9IHRydWU7XG4xNjM5Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4xNjQwOlx0XHRcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDE6XHRcdFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcbjE2NDI6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XG4xNjQzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VwaHlfc3RhdGU7XG4xNjQ0Olx0XHRcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XG4xNjQ1Olx0XHR9IGVsc2Uge1xuMTY0NjpcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDc6XHRcbjE2NDg6XHRcdFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXG4xNjQ5Olx0XHRcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cbjE2NTA6XHRcdFx0ICogT3RoZXJ3aXNlLCByZS1yZWFkIHRoZSBQQ1Mgc3RhdGUgdG8gZ2V0IHRoZSBjdXJyZW50IHN0YXR1c1xuMTY1MTpcdFx0XHQgKiBvZiB0aGUgbGluay5cbjE2NTI6XHRcdFx0ICovXG4xNjUzOlx0XHRcdGlmICghbGlua19zdGF0ZS5saW5rKSB7XG4xNjU0Olx0XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKVxuMTY1NTpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NTY6XHRcdFx0XHRlbHNlXG4xNjU3Olx0XHRcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NTg6XHRcdFx0fVxuMTY1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGBsaW5rX3N0YXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGF0IHRoZSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbml0aWFsIGdsYW5jZSBhdCBgcGh5bGlua19yZXNvbHZlYCBoYXMgZ2l2ZW4gbWUgc29tZSBjbHVlcywgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGVudGlyZSBmdW5jdGlvbiwgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkIGFuZCB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZSBgbGlua19zdGF0ZWAgdmFyaWFibGUgaXMgbWFuYWdlZCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBoYXZlIGEgaHVuY2ggdGhhdCB0aGlzIGBsaW5rX3N0YXRlYCBpcyBtb3JlIHRoYW4gbWVldHMgdGhlIGV5ZSwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaXMgZ29pbmcgdG8gYmUga2V5IHRvIGdyYXNwaW5nIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcnQgb2YgdGhlIHN0YWNrLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMsIHdoYXQgdHJpZ2dlcnMgdGhlbSwgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdGhlciBsYXllcnMuIFRoaXMgbWVhbnMgbG9va2luZyBhdCBib3RoIGhvdyBpdCYjMzk7cyBzZXQgYnkgYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGhvdyBpdCBpcyBsYXRlciB1c2VkIGJ5IHRoZSByZXN0IG9mIHRoZSByZWxldmFudCBjb2RlLiBUaGVyZSBoYXMgdG8gYmUgYSBzdGF0ZSBtYWNoaW5lIGhlcmUsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XHRcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcJiMzNDt1cFwmIzM0OyBzdGF0ZSBpcyB0aGUgdW5pb24gb2YgYm90aCB0aGVcbjE2NjE6XHRcdFx0ICogUEhZIGFuZCB0aGUgTUFDXG4xNjYyOlx0XHRcdCAqL1xuMTY2MzpcdFx0XHRpZiAocGh5KVxuMTY2NDpcdFx0XHRcdGxpbmtfc3RhdGUubGluayBcdTAwMjY9IHBsLVx1MDAzZXBoeV9zdGF0ZS5saW5rO1xuMTY2NTpcdFxuMTY2NjpcdFx0XHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cbjE2Njc6XHRcdFx0aWYgKHBoeSBcdTAwMjZcdTAwMjYgcGwtXHUwMDNlcGh5X3N0YXRlLmxpbmspIHtcbjE2Njg6XHRcdFx0XHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxuMTY2OTpcdFx0XHRcdCAqIGV2ZW50IGlmIHRoZSBsaW5rIGlzbiYjMzk7dCBhbHJlYWR5IGRvd24sIGFuZCByZS1yZXNvbHZlLlxuMTY3MDpcdFx0XHRcdCAqL1xuMTY3MTpcdFx0XHRcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XG4xNjcyOlx0XHRcdFx0XHRyZXRyaWdnZXIgPSB0cnVlO1xuMTY3MzpcdFx0XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjc0Olx0XHRcdFx0fVxuMTY3NTpcdFxuMTY3NjpcdFx0XHRcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZTtcbjE2Nzc6XHRcbjE2Nzg6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZG9pbmcgcmF0ZSBtYXRjaGluZywgdGhlbiB0aGUgbGlua1xuMTY3OTpcdFx0XHRcdCAqIHNwZWVkL2R1cGxleCBjb21lcyBmcm9tIHRoZSBQSFlcbjE2ODA6XHRcdFx0XHQgKi9cbjE2ODE6XHRcdFx0XHRpZiAocGwtXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcbjE2ODI6XHRcdFx0XHRcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XG4xNjgzOlx0XHRcdFx0XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nO1xuMTY4NDpcdFx0XHRcdFx0bGlua19zdGF0ZS5zcGVlZCA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcbjE2ODU6XHRcdFx0XHRcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXHUwMDNlcGh5X3N0YXRlLmR1cGxleDtcbjE2ODY6XHRcdFx0XHR9XG4xNjg3Olx0XG4xNjg4Olx0XHRcdFx0LyogSWYgd2UgaGF2ZSBhIFBIWSwgd2UgbmVlZCB0byB1cGRhdGUgd2l0aCB0aGUgUEhZXG4xNjg5Olx0XHRcdFx0ICogZmxvdyBjb250cm9sIGJpdHMuXG4xNjkwOlx0XHRcdFx0ICovXG4xNjkxOlx0XHRcdFx0bGlua19zdGF0ZS5wYXVzZSA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZTtcbjE2OTI6XHRcdFx0XHRtYWNfY29uZmlnID0gdHJ1ZTtcbjE2OTM6XHRcdFx0fVxuMTY5NDpcdFx0fVxuMTY5NTpcdFxuMTY5NjpcdFx0aWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxuMTY5NzpcdFx0XHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2OTg6XHRcbjE2OTk6XHRcdGlmICgobWFjX2NvbmZpZyBcdTAwMjZcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB8fFxuMTcwMDpcdFx0ICAgIHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZykge1xuMTcwMTpcdFx0XHQvKiBUaGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkIG9yIGEgZm9yY2VkIG1ham9yIGNvbmZpZ3VyYXRpb25cbjE3MDI6XHRcdFx0ICogd2FzIHJlcXVlc3RlZCwgc28gZm9yY2UgdGhlIGxpbmsgZG93biBhbmQgdGhlbiByZWNvbmZpZ3VyZS5cbjE3MDM6XHRcdFx0ICovXG4xNzA0Olx0XHRcdGlmIChjdXJfbGlua19zdGF0ZSkge1xuMTcwNTpcdFx0XHRcdHBoeWxpbmtfbGlua19kb3duKHBsKTtcbjE3MDY6XHRcdFx0XHRjdXJfbGlua19zdGF0ZSA9IGZhbHNlO1xuMTcwNzpcdFx0XHR9XG4xNzA4Olx0XHRcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXHUwMDI2bGlua19zdGF0ZSk7XG4xNzA5Olx0XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xuMTcxMDpcdFx0XHRwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcgPSBmYWxzZTtcbjE3MTE6XHRcdH1cbjE3MTI6XHRcbjE3MTM6XHRcdC8qIElmIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGludGVyZmFjZSBmYWlsZWQsIGZvcmNlIHRoZSBsaW5rIGRvd25cbjE3MTQ6XHRcdCAqIHVudGlsIHdlIGdldCBhIHN1Y2Nlc3NmdWwgY29uZmlndXJhdGlvbi5cbjE3MTU6XHRcdCAqL1xuMTcxNjpcdFx0aWYgKHBsLVx1MDAzZW1ham9yX2NvbmZpZ19mYWlsZWQpXG4xNzE3Olx0XHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuMTcxODpcdFxuMTcxOTpcdFx0aWYgKGxpbmtfc3RhdGUubGluayAhPSBjdXJfbGlua19zdGF0ZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQaHlsaW5rIFN0YXRlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIExvb2tpbmcgYXQgdGhpcyBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBsLSZndDtwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBwbC0mZ3Q7bGlua19mYWlsZWRgIGNvbmRpdGlvbmFsIGJsb2NrcywgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCB0aGUgYGxpbmtfc3RhdGVgIHZhcmlhYmxlIHdhc24mIzM5O3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQgaW4gdGhvc2Ugc2NlbmFyaW9zLiBJdCBsb29rcyBsaWtlIGl0IHdhcyBqdXN0IGEgbG9jYWwsIHVuaW5pdGlhbGl6ZWQgYHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtgLiBUaGUgbG9naWMgc2V0cyBgbGlua19zdGF0ZS5saW5rID0gZmFsc2U7YCwgYnV0IHRoZSAqcmVzdCogb2YgYGxpbmtfc3RhdGVgJiMzOTtzIGZpZWxkcyDigJMgbGlrZSBgaW50ZXJmYWNlYCwgYHBhdXNlYCBhbmQgc28gb24sIHdlcmUgbGVmdCBhcyBnYXJiYWdlIG1lbW9yeS4KCkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvdWxkIGNhdXNlIGlzc3VlcyBkb3duIHRoZSBsaW5lLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgLCBvciB0aG9zZSBjb21wYXJpc29ucyB3aXRoIGBwbC0mZ3Q7bGlua19jb25maWdgLiBUaG9zZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBwcm9ibGVtcy4gVGhlIHBhdGNoJiMzOTtzIGNoYW5nZSwgd2hlcmUgYGxpbmtfc3RhdGUgPSBwbC0mZ3Q7bGlua19jb25maWc7YCAqYmVmb3JlKiB0aGUgbW9kaWZpY2F0aW9uLCBzZWVtcyBjb3JyZWN0IHRvIGVuc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgcG9wdWxhdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXggdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbiB0byB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgUUVNVSBvciBzeXprYWxsZXI/IElmIHRoaXMgaXMgdXNlZCBpbiB0aGVzZSBzZXR1cHMsIHVuaW5pdGlhbGl6ZWQgc3RhdGVzIGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaW1lIHRvIGNoZWNrIHJlYWNoYWJpbGl0eS4gTGV0IG1lIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBmb3IgYW55IGNhbGxzIHRvIGBwaHlsaW5rX2NyZWF0ZWAgb3IgcmVsYXRlZCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIGhvdyB3aWRlbHkgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTIzPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQyOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQ1Olx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTA6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4NzA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04ODEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE2MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mzc1MTpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMTpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc3MD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5Ni0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNTogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM2LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTEtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzODpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQxLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjEtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDU9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMy0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYwLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2Mi0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc5LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4MS0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3OS0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODEtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDEyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyMi0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4OC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMi0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTEtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTUyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTA9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTk3LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTktICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUyLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3Ny0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2Nzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxNz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzU3LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTktICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODY9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTAzLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTQ9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5NzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDUtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTY3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzAtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzItICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg4LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI2OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3My0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTUtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTctICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzIxLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzIyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjMtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5Mj1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTAtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTExOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTItICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODktICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5MS0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM2OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzczLSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc1LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NC0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3My1cbm5ldC9kc2EvdXNlci5jOjI2NzQ6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzgwNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFBoeWxpbmsgVXNhZ2UqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwsIGFuZCBJJiMzOTt2ZSBjb21lIGFjcm9zcyBhIGNvdXBsZSBvZiBpbnRlcmVzdGluZyBmaWxlczogYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGF4ODg3NzJfcGh5bGlua19zZXR1cGAgZnVuY3Rpb24sIGFuZCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AsIGZvY3VzaW5nIG9uIHRoZSBgbGFuNzh4eF9waHlsaW5rX3NldHVwYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBib3RoIG9mIHRoZXNlIFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIHVzaW5nIHBoeWxpbmssIHdoaWNoIGlzIHNpZ25pZmljYW50LiBUaGlzIGxpa2VseSBtZWFucyB0aGV5JiMzOTtyZSBiZWluZyB0ZXN0ZWQgZWZmZWN0aXZlbHkgdmlhIHN5emthbGxlciwgb3IgcG90ZW50aWFsbHkgbGV2ZXJhZ2VkIGluIFVTQiByYXcgbW9kZSBvciBnYWRnZXQgY29uZmlndXJhdGlvbnMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBzaG91bGQgYmUgbG9va2luZyBhdCBob3cgdGhleSYjMzk7cmUgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBuZXR3b3JraW5nIGNvbXBvbmVudHMsIHN1Y2ggYXMgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSwgZXRodG9vbCBpb2N0bHMvbmV0bGluayBpbnRlcmFjdGlvbnMsIGFuZCB0aGUgbmV0ZGV2IHVwL2Rvd24gbGlmZWN5Y2xlLiBJIG5lZWQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgcGh5bGluayBlbmFibGVzIGhlcmUuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IEtjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgcGh5bGluaz8gTGV0IG1lIHNlYXJjaCBmb3IgJiMzNDtQSFlMSU5LJiMzNDsgZGlyZWN0bHkgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBkaXJlY3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjk4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFBIWSBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgUEhZIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBmaXJzdCB0aGlydHkgbGluZXMg4oCTIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBsYWlkIG91dC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGZvciBlbmFibGluZyBQSFkgc3VwcG9ydCwgbWF5YmUgc29tZSBnZW5lcmFsIG9wdGlvbnMgZm9yIHNlbGVjdGluZyBiZXR3ZWVuIGRpZmZlcmVudCBQSFkgaW50ZXJmYWNlcyAobGlrZSBNSUksIFJHTUlJLCBTR01JSSwgZXRjLiksIGFuZCBvZiBjb3Vyc2UsIHRob3NlIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9uIHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwcm92aWRlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZXNlIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycy4gSSBhbnRpY2lwYXRlIGEgd2VsbC1zdHJ1Y3R1cmVkIHNlcmllcyBvZiBgY29uZmlnYCBibG9ja3MsIG1heWJlIHNvbWUgYG1lbnVjb25maWdgIG9wdGlvbnMgZm9yIHRoZSB1c2VyIHRvIHNlbGVjdCBzcGVjaWZpYyBmZWF0dXJlcyBvciBQSFkgdHlwZXMsIGFuZCBob3BlZnVsbHksIHNvbWUgY2xlYXIgZXhwbGFuYXRpb25zIGluIHRoZSBjb21tZW50cyB0byBndWlkZSBkZXZlbG9wZXJzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgYmFja2JvbmUgZm9yIGludGVncmF0aW5nIHZhcmlvdXMgUEhZIGRldmljZXMsIHNvIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBzdHJ1Y3R1cmUgYW5kIGxvZ2ljIGlzIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4OTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSBnZXR0aW5nIGNob3NlbiB3aGVuIHNvbWVvbmUgc3BlY2lmaWVzIFBIWUxJTksuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY29tbW9uIHN1c3BlY3RzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMsIHJlYWxseSDigJMgZHJpdmVycyBsaWtlIFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxNzlfMTc4QSwgb3IgbWF5YmUgb25lIG9mIHRoZSBBU0lYIGRyaXZlcnMuIFRob3NlIGFyZSB0aGUgb25lcyBJJiMzOTtkIGV4cGVjdCB0byBzZWUuCgpUbyBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgbG9naWMgZGljdGF0aW5nIHdoaWNoIGRyaXZlcnMgYXJlIGNvbXBpbGVkIGJhc2VkIG9uIHZhcmlvdXMgb3B0aW9ucyBpcyBkZWZpbmVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHNlbGVjdGlvbiBydWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBIWUxJTksmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC05MS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6OTI6XHRzZWxlY3QgUEhZTElOS1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC05My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctNi1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnOjc6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXHRpbXBseSBORVRfU0VMRlRFU1RTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjI2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTgzLVx0c2VsZWN0IEZTTF9QUV9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo4NDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFx1MDAyNlx1MDAyNiBGU0xfRk1BTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNi1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTIFx1MDAyNlx1MDAyNiBGU0xfTUNfRFBJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6NTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy02LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcdTAwMjZcdTAwMjYgRlNMX01DX0RQSU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjM4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM3LVx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjM4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01NS1cdHNlbGVjdCBOWFBfTlRNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NTY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTcxLVx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo3MjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy01LVx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy01LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZzo2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Mi1cdHNlbGVjdCBNVk1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjQtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy04OS1cdHNlbGVjdCBNVk1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTEtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnPTY9Y29uZmlnIFBSRVNURVJBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE3LVx0c2VsZWN0IFBJTkNUUkxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xOS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTMxLVx0c2VsZWN0IFBMRE1GV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTEtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTctXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0xMC1cdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZz0xNT1jb25maWcgTVNDQ19PQ0VMT1RfU1dJVENIX0xJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xOS1cdHNlbGVjdCBQQUNLSU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9NDI9Y29uZmlnIFJFTkVTQVNfRVRIRVJfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ3LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00OS1cdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05LVx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExLVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDItXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MjY9Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI5LVx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zMS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZz04PWNvbmZpZyBQQ1NfWFBDU1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1wmIzM0O1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNS1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExNjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVx0c2VsZWN0IEFYODg3OTZCX1BIWVxuLS1cbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy05LVx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbm5ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWctMTEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JraW5nIGRyaXZlcnMgLSBzcGVjaWZpY2FsbHkgYFVTQl9MQU43OFhYYCwgYFVTQl9ORVRfQVg4ODE3WGAsIGFuZCBgTkVUX0RTQWAuIFRoZXkgYWxsIHNlZW0gdG8gdGllIGludG8gYFBIWUxJTktgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgd29ydGggZGlnZ2luZyBpbnRvLiBJIGtub3cgc3l6a2FsbGVyIGFuZCBVU0IgZnV6emluZyBhcmUgdXNlZCB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgRFNBLCB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSwgZ2V0cyBhIGxvdCBvZiBmdXp6aW5nIGF0dGVudGlvbiB0aHJvdWdoIG5ldGxpbmssIHN3aXRjaGRldiwgYW5kIHRoZSBsaWtlLiBOb3csIGBwaHlsaW5rYCBpdHNlbGYgaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYSBwcmV0dHkgY29yZSBwaWVjZSBvZiBuZXR3b3JraW5nLiBJdCBzaXRzIHJpZ2h0IGluIHRoZSBkcml2ZXIgUEhZIGxheWVyLgoKU28sIHdoZXJlIGlzIHRoaXMgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkPyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGNhbGxlciBhbmQgaG93IGl0JiMzOTtzIGludm9rZWQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgc28gSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciAmIzM0O3Jlc29sdmUmIzM0OyBkaXJlY3RseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGltbWVkaWF0ZSBjb250ZXh0LiBGcm9tIHRoZXJlLCBJIGNhbiB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCBzZWUgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdGllcyBjb3VsZCBleGlzdCwgZ2l2ZW4gdGhlIGZ1enppbmcgZWZmb3J0cyBiZWluZyBkb25lIG9uIHRoZXNlIHJlbGF0ZWQgYXJlYXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc29sdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE9c3RydWN0IHBoeWxpbmsge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzAtXHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbXV0ZXg7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOlx0LyogU2VyaWFsaXplIHVwZGF0ZXMgdG8gcGwtXHUwMDNlcGh5ZGV2IHdpdGggcGh5bGlua19yZXNvbHZlKCkgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzItXHRzdHJ1Y3QgbXV0ZXggcGh5ZGV2X211dGV4O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQtXHR1bnNpZ25lZCBpbnQgcGh5X2liX21vZGU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc1Olx0c3RydWN0IHdvcmtfc3RydWN0IHJlc29sdmU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2LVx0dW5zaWduZWQgaW50IHBjc19uZWdfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2NS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODY2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZV9hbl9wYXVzZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODY3LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg3MC1cdGlmIChzdGF0ZS1cdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODcxOlx0XHRsaW5rbW9kZV9yZXNvbHZlX3BhdXNlKHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NzItXHRcdFx0XHQgICAgICAgc3RhdGUtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTAtXHRzdGF0ZS1cdTAwM2VwYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDUxOlx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1Mi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNjEwPXN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjE0LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE1OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTYte1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE3Olx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYxOC1cdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NDgtXHRcdC8qIFRoZSBQQ1MgbWF5IGhhdmUgYSBsYXRjaGluZyBsaW5rLWZhaWwgaW5kaWNhdG9yLiBJZiB0aGUgbGlua1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjQ5Olx0XHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NTAtXHRcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NjgtXHRcdFx0LyogSWYgdGhlIGludGVyZmFjZSBoYXMgY2hhbmdlZCwgZm9yY2UgYSBsaW5rIGRvd25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY2OTpcdFx0XHQgKiBldmVudCBpZiB0aGUgbGluayBpc24mIzM5O3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY3MC1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MjctXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mjg6XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MjktXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM3LXtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTczOC1cdGlmICghcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM5Olx0XHRxdWV1ZV93b3JrKHN5c3RlbV9wb3dlcl9lZmZpY2llbnRfd3EsIFx1MDAyNnBsLVx1MDAzZXJlc29sdmUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0MS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0MjpzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQ3LVx0aWYgKHN0YXRlID09IDApIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0ODpcdFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0OTpcdFx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NTM6c3RhdGljIHZvaWQgcGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1NC17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTUtXHRjbGVhcl9iaXQoYml0LCBcdTAwMjZwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzU2Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc1OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzY0LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzY1Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NjYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTg1MD1zdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODcwLVx0bXV0ZXhfaW5pdChcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NzE6XHRJTklUX1dPUksoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSwgcGh5bGlua19yZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg3Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NDk9dm9pZCBwaHlsaW5rX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1NC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1NTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTYtXHRrZnJlZShwbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTc3PXN0YXRpYyB2b2lkIHBoeWxpbmtfcGh5X2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjAwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjAwMzpcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDA0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM0ND12b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM2My1cdGlmIChwaHkpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM2NDpcdFx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM2NS1cdFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3My1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc0Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzUtXHRwaHlsaW5rX2RiZyhwbCwgXCYjMzQ7JXMgbGluayAlc1xcblwmIzM0Oywgd2hhdCwgdXAgPyBcJiMzNDt1cFwmIzM0OyA6IFwmIzM0O2Rvd25cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxMj1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MTUtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MTY6XHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0Mjk9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0NTYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0NTc6XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0OTk9dm9pZCBwaHlsaW5rX3N0b3Aoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxMzpcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2MTM9dm9pZCBwaHlsaW5rX3N1c3BlbmQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIG1hY193b2wpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjIzLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjI0Olx0XHQvKiBTdG9wIHRoZSByZXNvbHZlciBicmluZ2luZyB0aGUgbGluayB1cCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjI1LVx0XHRfX3NldF9iaXQoUEhZTElOS19ESVNBQkxFX01BQ19XT0wsIFx1MDAyNnBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMwLVx0XHRcdCAqIGJ1dCBvbmUgd291bGQgaG9wZSBhbGwgcGFja2V0cyBoYXZlIGJlZW4gc2VudC4gVGhpc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjMxOlx0XHRcdCAqIGFsc28gbWVhbnMgcGh5bGlua19yZXNvbHZlKCkgd2lsbCBkbyBub3RoaW5nLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMyLVx0XHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Mz12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2OTgtXHRcdFx0ICogdGhlIHRydWUgbGluayBzdGF0ZSB3aWxsIGJlIHByaW50ZWQgd2hlbiB3ZSBydW4gYVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjk5Olx0XHRcdCAqIHJlc29sdmUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MDAtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzEwLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzExOlx0XHQvKiBSZS1lbmFibGUgYW5kIHJlLXJlc29sdmUgdGhlIGxpbmsgcGFyYW1ldGVycyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlx0XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9NQUNfV09MKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTk5LVx0XHQgKiAtIGxpbmtfY29uZmlnLmludGVyZmFjZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIFBIWSBjYWxsaW5nXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMDA6XHRcdCAqICAgYmFjayB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIGEgc3Vic2VxdWVudCByZXNvbHZlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDAxLVx0XHQgKiAtIGluaXRpYWwgbGluayBjb25maWd1cmF0aW9uIGZvciBQSFkgbW9kZSBjb21lcyBmcm9tIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE5MD1pbnQgcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTAtXHQgKiBjYXVzZSBwaHlsaWIgdG8gcmVuZWdvdGlhdGUgKGlmIEFOIGlzIGVuYWJsZWQpIHdoaWNoIHdpbGwgaW4gdHVyblxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjUxOlx0ICogY2FsbCBvdXIgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIHRyaWdnZXIgYSByZXNvbHZlLiAgTm90ZSB0aGF0XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTItXHQgKiB3ZSBjYW4mIzM5O3QgaG9sZCBvdXIgc3RhdGUgbXV0ZXggd2hpbGUgY2FsbGluZyBwaHlfc2V0X2FzeW1fcGF1c2UoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTgtXHQvKiBJZiB0aGUgbWFudWFsIHBhdXNlIHNldHRpbmdzIGNoYW5nZWQsIG1ha2Ugc3VyZSB3ZSB0cmlnZ2VyIGFcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI1OTpcdCAqIHJlc29sdmUgdG8gdXBkYXRlIHRoZWlyIHN0YXRlOyB3ZSBjYW4gbm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjYwLVx0ICogbGluayB3aWxsIGN5Y2xlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2My1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjY0Olx0XHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MDE9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua19kb3duKHZvaWQgKnVwc3RyZWFtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkwNzpcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwOC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTEwPXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfdXAodm9pZCAqdXBzdHJlYW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTE1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozOTE2Olx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5MTctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk2OD1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5ODMtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5ODQ6dm9pZCBwaHlsaW5rX3Jlc29sdmVfYzczKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMDItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMDM6XHRwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDAwNTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc29sdmVfYzczKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDAwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDAwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV9jMzdfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMjctXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMjg6XHRwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDI5LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzODQ9dm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzODctXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzODg6XHRwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHBsLCBQSFlMSU5LX0RJU0FCTEVfUkVQTEFZKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00NDA3PXZvaWQgcGh5bGlua19yZXBsYXlfbGlua19lbmQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQxNi1cdHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IHRydWU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MTc6XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9SRVBMQVkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE4Olx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQxOS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Nzc3CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDU2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgUGh5bGluayBGaXgmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBleGVjdXRhYmxlIGxvZ2ljIHdpdGhpbiB0aGUgY29yZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldCwgcmlwZSBmb3IgY2F0Y2hpbmcgdW5leHBlY3RlZCBzdGF0ZXMgb3IgZGF0YSBjb3JydXB0aW9uLiBUaGUgZmFjdCB0aGF0IGBwaHlsaW5rX3Jlc29sdmVgIGdldHMgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgcmFuZ2Ugb2YgZXZlbnRzLCBsaWtlIGxpbmsgc3RhdGUgY2hhbmdlcywgcGh5bGluayBzdGFydC9zdG9wLCBhbmQgZXZlbiBldGh0b29sIGNvbW1hbmRzLCBtYWtlcyBpdCBhbiBhdHRyYWN0aXZlIHRhcmdldCBkdWUgdG8gaXRzIGJyb2FkIGV4cG9zdXJlLiBQbHVzLCBJIGtub3cgdGhpcyBjb2RlIGlzIGFsc28gcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbGl6ZWQgbmV0d29yayBkZXZpY2VzIOKAkyB0aGluayBVU0IgYWRhcHRlcnMgb3IgRFNBIHN3aXRjaGVzIOKAkyB3aGljaCBhcmUgZWFzaWx5IHNwdW4gdXAgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllcyB0aGUgZnV6emluZyBzZXR1cC4KCkkmIzM5O3ZlIGRldGVybWluZWQgdGhlIGZvbGxvd2luZzogdGhpcyBpcyBhICpXb3J0aEZ1enppbmcqIHNpdHVhdGlvbi4gSSBpZGVudGlmaWVkIHRoZSAqRm9jdXNTeW1ib2xzKiBhcyBgcGh5bGlua19yZXNvbHZlYCBpdHNlbGYsIGFuZCBwZXJoYXBzIGFsc28gYHBoeWxpbmtfc3RhcnRgIGFuZCBgcGh5bGlua19zdG9wYCBhcyBsaWtlbHkgZW50cnkgcG9pbnRzLiBUaGUgKkVuYWJsZUNvbmZpZ3MqIGluY2x1ZGUgYFBIWUxJTktgLCBgUEhZTElCYCwgYW5kIGVpdGhlciBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIG9yIGBVU0JfTkVUX0FYODgxN1hgLiBJdCBhcHBlYXJzIGBQSFlMSU5LYCBpcyB0cmlzdGF0ZSBhbmQgc2VsZWN0ZWQgYnkgYFBIWUxJQmAgYW5kIGBTV1BIWWAsIHNvIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBvciBwb3NzaWJseSBqdXN0IGVuYWJsZSBgUEhZTElOS2AgZGlyZWN0bHkgaWYgdGhhdCYjMzk7cyBhbiBvcHRpb24uIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIG15IHdvcmsgYWdhaW5zdCB0aGUgZ3VpZGVsaW5lczogdGhlIHJlYWNoYWJpbGl0eSBpcyB0aGVyZSwgdGhlIHJlYXNvbmluZyBpcyBzb2xpZCwgYW5kIEkmIzM5O3ZlIHRhcmdldGVkIG5vbi11YmlxdWl0b3VzLCBwYXRjaC1zcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgSSYjMzk7bSByZWFkeSB0byBjcmFmdCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfcmVzb2x2ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19yZXNvbHZlJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RhcnQmIzM0OywKICAgICYjMzQ7cGh5bGlua19zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwaHlsaW5rX3Jlc29sdmVgIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZSBgbGlua19zdGF0ZWAgc3RydWN0dXJlIGZyb20gYHBsLVx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGUgYnVnIGluIHBoeWxpbmtfcmVzb2x2ZSgpIGJ5IGluaXRpYWxpemluZyBsaW5rX3N0YXRlIHdpdGggcGwtXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXHUwMDNlbGlua19mYWlsZWQgaXMgc2V0LCBwcmlvciB0byBzZXR0aW5nIGxpbmtfc3RhdGUubGluayA9IGZhbHNlIGFuZCBwYXNzaW5nIGxpbmtfc3RhdGUgdG8gZG93bnN0cmVhbSBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgcGh5bGluayBzdHJ1Y3R1cmUgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGt6YWxsb2MgdXBvbiBjcmVhdGlvbiwgYW5kIGxpbmtfc3RhdGUgaXMgbm93IGZ1bGx5IGluaXRpYWxpemVkIG9uIGFsbCBicmFuY2hlcyBiZWZvcmUgYW55IG9mIGl0cyBmaWVsZHMgYXJlIHJlYWQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGRhdGEgc3RydWN0dXJlcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xNjMwLDggJiM0MzsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAKIAlpZiAocGwtJmd0O3BoeWxpbmtfZGlzYWJsZV9zdGF0ZSkgewogCQlwbC0mZ3Q7bGlua19mYWlsZWQgPSBmYWxzZTsKJiM0MzsJCWxpbmtfc3RhdGUgPSBwbC0mZ3Q7bGlua19jb25maWc7CiAJCWxpbmtfc3RhdGUubGluayA9IGZhbHNlOwogCX0gZWxzZSBpZiAocGwtJmd0O2xpbmtfZmFpbGVkKSB7CiYjNDM7CQlsaW5rX3N0YXRlID0gcGwtJmd0O2xpbmtfY29uZmlnOwogCQlsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTsKIAkJcmV0cmlnZ2VyID0gdHJ1ZTsKIAl9IGVsc2UgaWYgKHBsLSZndDthY3RfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCB0aGlua2luZyBhbG91ZCBhcyBJIGdvOgoKKipJbnNwZWN0aW5nIHRoZSBgcGh5bGluay5jYCBDb2RlKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbiwgYXJvdW5kIGxpbmUgMTYzMC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgc291bmRzIGxpa2UgdGhlIGxpa2VseSBwb2ludCB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGFyZSB0YWtpbmcgcGxhY2UuIEkmIzM5O2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQsIGlmIGF2YWlsYWJsZSwgb3IganVzdCBvcGVuIHRoZSBmaWxlIGFuZCBzY3JvbGwgdGhlcmUgbWFudWFsbHksIHRvIGdldCBhIHByZWNpc2UgbG9vay4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZSBhYmxlIHRvIHRyYWNlIGV4YWN0bHkgd2hhdCBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTYxMDpcdHN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNjExOlx0e1xuMTYxMjpcdFx0cmV0dXJuIHBsLVx1MDAzZW5ldGRldiA/IG5ldGlmX2NhcnJpZXJfb2socGwtXHUwMDNlbmV0ZGV2KSA6IHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlO1xuMTYxMzpcdH1cbjE2MTQ6XHRcbjE2MTU6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuMTYxNjpcdHtcbjE2MTc6XHRcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XG4xNjE4Olx0XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XG4xNjE5Olx0XHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcbjE2MjA6XHRcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XG4xNjIxOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuMTYyMjpcdFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcbjE2MjM6XHRcbjE2MjQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE2MjU6XHRcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE2MjY6XHRcdGlmIChwaHkpXG4xNjI3Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTYyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4xNjI5Olx0XHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XG4xNjMwOlx0XG4xNjMxOlx0XHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4xNjMyOlx0XHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4xNjMzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2MzQ6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM1Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4xNjM2Olx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2Mzc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM4Olx0XHRcdHJldHJpZ2dlciA9IHRydWU7XG4xNjM5Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4xNjQwOlx0XHRcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDE6XHRcdFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcbjE2NDI6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XG4xNjQzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VwaHlfc3RhdGU7XG4xNjQ0Olx0XHRcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XG4xNjQ1Olx0XHR9IGVsc2Uge1xuMTY0NjpcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDc6XHRcbjE2NDg6XHRcdFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXG4xNjQ5Olx0XHRcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cbjE2NTA6XHRcdFx0ICogT3RoZXJ3aXNlLCByZS1yZWFkIHRoZSBQQ1Mgc3RhdGUgdG8gZ2V0IHRoZSBjdXJyZW50IHN0YXR1c1xuMTY1MTpcdFx0XHQgKiBvZiB0aGUgbGluay5cbjE2NTI6XHRcdFx0ICovXG4xNjUzOlx0XHRcdGlmICghbGlua19zdGF0ZS5saW5rKSB7XG4xNjU0Olx0XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKVxuMTY1NTpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NTY6XHRcdFx0XHRlbHNlXG4xNjU3Olx0XHRcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NTg6XHRcdFx0fVxuMTY1OTpcdFxuMTY2MDpcdFx0XHQvKiBJZiB3ZSBoYXZlIGEgcGh5LCB0aGUgXCYjMzQ7dXBcJiMzNDsgc3RhdGUgaXMgdGhlIHVuaW9uIG9mIGJvdGggdGhlXG4xNjYxOlx0XHRcdCAqIFBIWSBhbmQgdGhlIE1BQ1xuMTY2MjpcdFx0XHQgKi9cbjE2NjM6XHRcdFx0aWYgKHBoeSlcbjE2NjQ6XHRcdFx0XHRsaW5rX3N0YXRlLmxpbmsgXHUwMDI2PSBwbC1cdTAwM2VwaHlfc3RhdGUubGluaztcbjE2NjU6XHRcbjE2NjY6XHRcdFx0LyogT25seSB1cGRhdGUgaWYgdGhlIFBIWSBsaW5rIGlzIHVwICovXG4xNjY3Olx0XHRcdGlmIChwaHkgXHUwMDI2XHUwMDI2IHBsLVx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XG4xNjY4Olx0XHRcdFx0LyogSWYgdGhlIGludGVyZmFjZSBoYXMgY2hhbmdlZCwgZm9yY2UgYSBsaW5rIGRvd25cbjE2Njk6XHRcdFx0XHQgKiBldmVudCBpZiB0aGUgbGluayBpc24mIzM5O3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cbjE2NzA6XHRcdFx0XHQgKi9cbjE2NzE6XHRcdFx0XHRpZiAobGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSkge1xuMTY3MjpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NzM6XHRcdFx0XHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuMTY3NDpcdFx0XHRcdH1cbjE2NzU6XHRcbjE2NzY6XHRcdFx0XHRsaW5rX3N0YXRlLmludGVyZmFjZSA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XG4xNjc3Olx0XG4xNjc4Olx0XHRcdFx0LyogSWYgd2UgYXJlIGRvaW5nIHJhdGUgbWF0Y2hpbmcsIHRoZW4gdGhlIGxpbmtcbjE2Nzk6XHRcdFx0XHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXG4xNjgwOlx0XHRcdFx0ICovXG4xNjgxOlx0XHRcdFx0aWYgKHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nKSB7XG4xNjgyOlx0XHRcdFx0XHRsaW5rX3N0YXRlLnJhdGVfbWF0Y2hpbmcgPVxuMTY4MzpcdFx0XHRcdFx0XHRwbC1cdTAwM2VwaHlfc3RhdGUucmF0ZV9tYXRjaGluZztcbjE2ODQ6XHRcdFx0XHRcdGxpbmtfc3RhdGUuc3BlZWQgPSBwbC1cdTAwM2VwaHlfc3RhdGUuc3BlZWQ7XG4xNjg1Olx0XHRcdFx0XHRsaW5rX3N0YXRlLmR1cGxleCA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XG4xNjg2Olx0XHRcdFx0fVxuMTY4NzpcdFxuMTY4ODpcdFx0XHRcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxuMTY4OTpcdFx0XHRcdCAqIGZsb3cgY29udHJvbCBiaXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgcGh5bGlua19yZXNvbHZlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhlIHJlc3Qgb2YgdGhpcyBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGdyYXNwIG9uIHRoZSBpbml0aWFsIHBpZWNlcywgYnV0IHRoZSBkZXZpbCYjMzk7cyBvZnRlbiBpbiB0aGUgZGV0YWlscywgYW5kIEkgbmVlZCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhlIGVkZ2UgY2FzZXMgYW5kIHRoZSBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLiBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhbGdvcml0aG0uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzLCBjaXJjdWxhciByZWZlcmVuY2VzLCBhbmQgdGhvc2UgbmFzdHksIGRlZXBseSBuZXN0ZWQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmVzIHRoYXQgYWx3YXlzIHNlZW0gdG8gcG9wIHVwLiBJcyBpdCB1c2luZyBhIHJvYnVzdCBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2UgbWVtb2l6YXRpb24gdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb24gbGFyZ2VyIGRlcGVuZGVuY3kgZ3JhcGhzPyBXaGF0JiMzOTtzIHRoZSBlcnJvciBoYW5kbGluZyBsaWtlPyBJcyBpdCBncmFjZWZ1bCwgb3Igd2lsbCBpdCBqdXN0IHRocm93IGV4Y2VwdGlvbnMgYWxsIG92ZXIgdGhlIHBsYWNlPyBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyBlbXBsb3llZCBpbnRlcm5hbGx5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBkaWN0aW9uYXJ5LCBhIGdyYXBoLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGNob2ljZXMgaGVyZSBoYXZlIGEgaHVnZSBpbXBhY3Qgb24gZWZmaWNpZW5jeSBhbmQgc2NhbGFiaWxpdHkuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGltcGxlbWVudGF0aW9uIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gcmVzb3VyY2UgZXhoYXVzdGlvbiBvciBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdmVjdG9ycy4gR290dGEgYmUgdGhvcm91Z2guIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2OTA6XHRcdFx0XHQgKi9cbjE2OTE6XHRcdFx0XHRsaW5rX3N0YXRlLnBhdXNlID0gcGwtXHUwMDNlcGh5X3N0YXRlLnBhdXNlO1xuMTY5MjpcdFx0XHRcdG1hY19jb25maWcgPSB0cnVlO1xuMTY5MzpcdFx0XHR9XG4xNjk0Olx0XHR9XG4xNjk1Olx0XG4xNjk2Olx0XHRpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSAhPSBNTE9fQU5fRklYRUQpXG4xNjk3Olx0XHRcdHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3cocGwsIFx1MDAyNmxpbmtfc3RhdGUpO1xuMTY5ODpcdFxuMTY5OTpcdFx0aWYgKChtYWNfY29uZmlnIFx1MDAyNlx1MDAyNiBsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIHx8XG4xNzAwOlx0XHQgICAgcGwtXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnKSB7XG4xNzAxOlx0XHRcdC8qIFRoZSBpbnRlcmZhY2UgaGFzIGNoYW5nZWQgb3IgYSBmb3JjZWQgbWFqb3IgY29uZmlndXJhdGlvblxuMTcwMjpcdFx0XHQgKiB3YXMgcmVxdWVzdGVkLCBzbyBmb3JjZSB0aGUgbGluayBkb3duIGFuZCB0aGVuIHJlY29uZmlndXJlLlxuMTcwMzpcdFx0XHQgKi9cbjE3MDQ6XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKSB7XG4xNzA1Olx0XHRcdFx0cGh5bGlua19saW5rX2Rvd24ocGwpO1xuMTcwNjpcdFx0XHRcdGN1cl9saW5rX3N0YXRlID0gZmFsc2U7XG4xNzA3Olx0XHRcdH1cbjE3MDg6XHRcdFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE3MDk6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gbGlua19zdGF0ZS5pbnRlcmZhY2U7XG4xNzEwOlx0XHRcdHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IGZhbHNlO1xuMTcxMTpcdFx0fVxuMTcxMjpcdFxuMTcxMzpcdFx0LyogSWYgY29uZmlndXJhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIGZhaWxlZCwgZm9yY2UgdGhlIGxpbmsgZG93blxuMTcxNDpcdFx0ICogdW50aWwgd2UgZ2V0IGEgc3VjY2Vzc2Z1bCBjb25maWd1cmF0aW9uLlxuMTcxNTpcdFx0ICovXG4xNzE2Olx0XHRpZiAocGwtXHUwMDNlbWFqb3JfY29uZmlnX2ZhaWxlZClcbjE3MTc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNzE4Olx0XG4xNzE5Olx0XHRpZiAobGlua19zdGF0ZS5saW5rICE9IGN1cl9saW5rX3N0YXRlKSB7XG4xNzIwOlx0XHRcdHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlID0gbGlua19zdGF0ZS5saW5rO1xuMTcyMTpcdFx0XHRpZiAoIWxpbmtfc3RhdGUubGluaylcbjE3MjI6XHRcdFx0XHRwaHlsaW5rX2xpbmtfZG93bihwbCk7XG4xNzIzOlx0XHRcdGVsc2VcbjE3MjQ6XHRcdFx0XHRwaHlsaW5rX2xpbmtfdXAocGwsIGxpbmtfc3RhdGUpO1xuMTcyNTpcdFx0fVxuMTcyNjpcdFx0aWYgKCFsaW5rX3N0YXRlLmxpbmsgXHUwMDI2XHUwMDI2IHJldHJpZ2dlcikge1xuMTcyNzpcdFx0XHRwbC1cdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xuMTcyODpcdFx0XHRxdWV1ZV93b3JrKHN5c3RlbV9wb3dlcl9lZmZpY2llbnRfd3EsIFx1MDAyNnBsLVx1MDAzZXJlc29sdmUpO1xuMTcyOTpcdFx0fVxuMTczMDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjE3MzE6XHRcdGlmIChwaHkpXG4xNzMyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4xNzMzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE3MzQ6XHR9XG4xNzM1Olx0XG4xNzM2Olx0c3RhdGljIHZvaWQgcGh5bGlua19ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNzM3Olx0e1xuMTczODpcdFx0aWYgKCFwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpXG4xNzM5Olx0XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzQwOlx0fVxuMTc0MTpcdFxuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUoc3RydWN0IHBoeWxpbmsgKnBsLCBpbnQgYml0KVxuMTc0MzpcdHtcbjE3NDQ6XHRcdHVuc2lnbmVkIGxvbmcgc3RhdGUgPSBwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGU7XG4xNzQ1Olx0XG4xNzQ2Olx0XHRzZXRfYml0KGJpdCwgXHUwMDI2cGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcbjE3NDc6XHRcdGlmIChzdGF0ZSA9PSAwKSB7XG4xNzQ4Olx0XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzQ5Olx0XHRcdGZsdXNoX3dvcmsoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzUwOlx0XHR9XG4xNzUxOlx0fVxuMTc1MjpcdFxuMTc1MzpcdHN0YXRpYyB2b2lkIHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwsIGludCBiaXQpXG4xNzU0Olx0e1xuMTc1NTpcdFx0Y2xlYXJfYml0KGJpdCwgXHUwMDI2cGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcbjE3NTY6XHRcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xuMTc1NzpcdH1cbjE3NTg6XHRcbjE3NTk6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4xNzYwOlx0e1xuMTc2MTpcdFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHQsIHN0cnVjdCBwaHlsaW5rLCBsaW5rX3BvbGwpO1xuMTc2MjpcdFxuMTc2MzpcdFx0bW9kX3RpbWVyKHQsIGppZmZpZXMgJiM0MzsgSFopO1xuMTc2NDpcdFxuMTc2NTpcdFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG4xNzY2Olx0fVxuMTc2NzpcdFxuMTc2ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcyBzZnBfcGh5bGlua19vcHM7XG4xNzY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGh5bGlua2AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3Qgd2hhdCB0aGlzIGRpZmYgaXMgYXR0ZW1wdGluZyB0byBhY2hpZXZlIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBMb29raW5nIGF0IHRoZSBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGlmIChwbC0mZ3Q7cGh5bGlua19kaXNhYmxlX3N0YXRlKWAgYW5kIGBlbHNlIGlmIChwbC0mZ3Q7bGlua19mYWlsZWQpYCBicmFuY2hlcywgSSYjMzk7bSBub3RpY2luZyBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBsaW5rX3N0YXRlYCB2YXJpYWJsZSBpcyBhIGxvY2FsIHN0YWNrIHZhcmlhYmxlLCB3aGljaCBpbiB0aGVzZSBzY2VuYXJpb3MsIG9ubHkgaGFzIGl0cyBgbGlua2AgZmllbGQgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBUaGUgcmVtYWluaW5nIGZpZWxkcyB3aXRoaW4gdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3Qg4oCTIHRoaW5ncyBsaWtlIGBpbnRlcmZhY2VgLCBgcGF1c2VgLCBhbmQgYHNwZWVkYCDigJMgYXJlIGxlZnQgYXMgdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnkuCgpMYXRlciwgaW4gdGhlIGBwaHlsaW5rX3Jlc29sdmVgIGZ1bmN0aW9uLCB0aGUgY29kZSBwcm9jZWVkcyB0byBjYWxsIGBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93YCB3aXRoIHRoZSBhZGRyZXNzIG9mIHRoaXMgcG90ZW50aWFsbHkgcGFydGlhbGx5IGluaXRpYWxpemVkIGBsaW5rX3N0YXRlYCB2YXJpYWJsZS4gVGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBmb2xsb3dpbmcgbG9naWMsIHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBmcm9tIGFuZCB3cml0ZSB0byB0aGVzZSB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhpcyBpcyBjbGFzc2ljIHVuZGVmaW5lZCBiZWhhdmlvciwgd2hpY2ggY2FuIGxlYWQgdG8gdW5wcmVkaWN0YWJsZSByZXN1bHRzLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB0aGUgdmFsdWVzIG9mIGBsaW5rX3N0YXRlLmludGVyZmFjZWAsIGBsaW5rX3N0YXRlLnBhdXNlYCBldGMuIFRoaXMgY291bGQgbWFuaWZlc3QgaW4gc3RyYW5nZSBsaW5rIGJlaGF2aW9ycywgaW50ZXJtaXR0ZW50IGZhaWx1cmVzLCBhbmQgZ2VuZXJhbCBpbnN0YWJpbGl0eS4KCk15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIHBhdGNoIGludGVuZHMgdG8gYWRkcmVzcyB0aGlzIGluaXRpYWxpemF0aW9uIGlzc3VlIGFuZCBlbnN1cmUgdGhhdCBhbGwgZmllbGRzIG9mIGBsaW5rX3N0YXRlYCBhcmUgY29uc2lzdGVudGx5IHNldCB0byBhIGtub3duIHN0YXRlIGJlZm9yZSB0aGV5IGFyZSB1c2VkLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIGEgZGF0YS1kZXBlbmRlbnQsIG9yIHJhY2UgY29uZGl0aW9uLCBvZiBzb21lIGtpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg1Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NTQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE0NTQ9c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDc5LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDgwOlx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0ODEtXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTYxNT1zdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY5Ni1cdGlmIChwbC1cdTAwM2VhY3RfbGlua19hbl9tb2RlICE9IE1MT19BTl9GSVhFRClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5NzpcdFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQSFkgTGluayBDb25maWd1cmF0aW9uIGluIGBwaHlsaW5rLmNgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhlIGBwaHlsaW5rLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA4NTMgdGhyb3VnaCA4NzAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgcGh5bGluayBoYW5kbGVzIHRoZSBuZWdvdGlhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIGludGVyZmFjZS4gSSByZW1lbWJlciB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgUEhZIGxpbmsgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGdldHRpbmcgdGhlIHJpZ2h0IHNwZWVkLCBkdXBsZXgsIGFuZCBhdXRvbmVnb3RpYXRpb24gc2V0dGluZ3MuIEkgc3VzcGVjdCB0aGlzIHNuaXBwZXQgdG91Y2hlcyB1cG9uIHRoZSBQSFkmIzM5O3MgYWR2ZXJ0aXNpbmcgY2FwYWJpbGl0aWVzIGFuZCBob3cgdGhvc2UgYXJlIHJlY29uY2lsZWQgd2l0aCB0aGUgZHJpdmVyJiMzOTtzIHJlcXVlc3RlZCBzZXR0aW5ncy4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgYXJlIGRlYWxpbmcgd2l0aCB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgZGV2aWNlIGFuZCB3aGljaCBzZXR0aW5ncyB0aGUgc3lzdGVtIHRoZW4gc2V0dGxlcyBvbi4gVGhlcmUgY291bGQgYmUgc29tZSBzdWJ0bGV0aWVzIGhlcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdmFyaW91cyBQSFkgdHlwZXMgb3IgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgc29tZSByZXBvcnRlZCBsaW5rIGlzc3Vlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgbWlzbWF0Y2hlcyBiZXR3ZWVuIHdoYXQgdGhlIFBIWSBhZHZlcnRpc2VzIGFuZCB3aGF0IHRoZSB1cHBlci1sYXllciBuZXR3b3JrIHN0YWNrIGV4cGVjdHMuIEFyZSB0aGV5IHByaW9yaXRpemluZyB0aGUgUEhZJiMzOTtzIGNhcGFiaWxpdGllcyBvciB0aGUgZHJpdmVyJiMzOTtzIHJlcXVlc3RzLCBhbmQgaG93IGRvZXMgdGhlIGNvZGUgaGFuZGxlIHRoYXQgc2VsZWN0aW9uIHByb2Nlc3M/IEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgaGVyZSwgbWF5YmUgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGZlYXR1cmUgZmxhZ3Mgb3IgdmVuZG9yLXNwZWNpZmljIGNhcGFiaWxpdGllcy4gSSBoYXZlIGEgZmVlbGluZyB0aGUgYXV0b25lZ290aWF0aW9uIHByb2Nlc3MsIGFuZCBhbnkgcG90ZW50aWFsIGZvcmNlLW1vZGUgc2V0dGluZ3MsIHdpbGwgYmUgY3JpdGljYWwgd2l0aGluIHRoaXMgYmxvY2suIEFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NTA6XHRcdHJldHVybiAwO1xuIDg1MTpcdH1cbiA4NTI6XHRcbiA4NTM6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbiA4NTQ6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuIDg1NTpcdHtcbiA4NTY6XHRcdC8qIElmIGF1dG9uZWcgaXMgZGlzYWJsZWQsIHBhdXNlIEFOIGlzIGFsc28gZGlzYWJsZWQgKi9cbiA4NTc6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gODU4Olx0XHRcdFx0ICAgICAgIHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nKSlcbiA4NTk6XHRcdFx0c3RhdGUtXHUwMDNlcGF1c2UgXHUwMDI2PSB+TUxPX1BBVVNFX0FOO1xuIDg2MDpcdFxuIDg2MTpcdFx0LyogTWFudWFsIGNvbmZpZ3VyYXRpb24gb2YgcGF1c2UgbW9kZXMgKi9cbiA4NjI6XHRcdGlmICghKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxuIDg2MzpcdFx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuIDg2NDpcdH1cbiA4NjU6XHRcbiA4NjY6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4gODY3Olx0e1xuIDg2ODpcdFx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gODY5Olx0XG4gODcwOlx0XHRpZiAoc3RhdGUtXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XG4gODcxOlx0XHRcdGxpbmttb2RlX3Jlc29sdmVfcGF1c2Uoc3RhdGUtXHUwMDNlYWR2ZXJ0aXNpbmcsXG4gODcyOlx0XHRcdFx0XHQgICAgICAgc3RhdGUtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXG4gODczOlx0XHRcdFx0XHQgICAgICAgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbiA4NzQ6XHRcdFx0aWYgKHR4X3BhdXNlKVxuIDg3NTpcdFx0XHRcdHN0YXRlLVx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9UWDtcbiA4NzY6XHRcdFx0aWYgKHJ4X3BhdXNlKVxuIDg3NzpcdFx0XHRcdHN0YXRlLVx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9SWDtcbiA4Nzg6XHRcdH1cbiA4Nzk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVbmluaXRpYWxpemVkIFZhcmlhYmxlIEJ1ZyBGaXgqKgoKT2theSwgc28gYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgIGhhcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlLCBzcGVjaWZpY2FsbHkgd2l0aCBgbGlua19zdGF0ZWAgaWYgYHBsLSZndDtmb3JjZV9tYWpvcl9jb25maWdgIGlzIHNldC4gVGhlIHBhdGNoIHByb3ZpZGVkIHNlZW1zIHRvIGFkZHJlc3MgdGhpcyBieSBpbml0aWFsaXppbmcgYGxpbmtfc3RhdGVgIHdpdGggYHBsLSZndDtsaW5rX2NvbmZpZ2AgaW4gY2VydGFpbiBzY2VuYXJpb3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCBmaXhpbmcgYW4gdW5pbml0IGJ1ZyEmIzM0Oy4KCkJ1dCwgd2FpdCwgSSBuZWVkIHRvIGJlIG1vcmUgbWV0aG9kaWNhbCBoZXJlLiBEb2VzIGZpeGluZyB0aGlzIHdhcnJhbnQgYSBgTmVlZHNLTVNBTj10cnVlYCBmbGFnPyBMZXQmIzM5O3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHRoZSBLTVNBTiBndWlkZWxpbmVzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoICppbnRyb2R1Y2VzKiBvciAqZXhwb3NlcyogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCAqb25seSogS01TQU4gd291bGQgY2F0Y2guIFRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGlmIEtBU0FOIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgY2FuIGNhdGNoIHRoZSBpc3N1ZSwgdGhlcmUmIzM5O3Mgbm8gbmVlZCBmb3IgS01TQU4uIFRoaXMgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGJlY2F1c2Ugb2YgdGhlIHJlc291cmNlIGNvc3QgYXNzb2NpYXRlZCB3aXRoIHJ1bm5pbmcgS01TQU4uCgpNeSBpbW1lZGlhdGUgZ3V0IHJlYWN0aW9uIGlzIHRvIHNheSBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBsb29rcyBsaWtlIGEgZml4LCBub3QgYSBuZXcgcHJvYmxlbS4gVGhpcyBpcyBhIGNydWNpYWwgcG9pbnQ6IElzIHRoaXMgYSBmaXggb3IgYSBuZXcgZXhwb3N1cmU/CgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBjcml0ZXJpYSBmb3IgYE5lZWRzS01TQU49dHJ1ZWAuIEl0JiMzOTtzIGFsbCBhYm91dCBzdHJ1Y3R1cmVzIGdvaW5nIHRvIHVzZXIgc3BhY2UsIGxvZ2ljIHJlbHlpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFsbG9jYXRpb24gb2YgY29tcGxleCBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBvciBtZXNzaW5nIHdpdGggYm91bmRzIGNoZWNrcyBpbiBhIHdheSB0aGF0IGFsbG93cyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBkYXRhLgoKQ29udmVyc2VseSwgYE5lZWRzS01TQU49ZmFsc2VgIGFwcGxpZXMgaWYgdGhlIGJ1ZyBpcyBvdXQtb2YtYm91bmRzLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4pLiBBbHNvLCBgTmVlZHNLTVNBTj1mYWxzZWAgaWYgYWxsIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIG9yIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4KClNvLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBhc3NpZ25pbmcgYHBsLSZndDtsaW5rX2NvbmZpZ2AgdG8gYGxpbmtfc3RhdGVgLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXRzZWxmIGlzIGFsd2F5cyBmdWxseSBpbml0aWFsaXplZCB3aGVuIGNvcGllZC4gSWYgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkIGVsc2V3aGVyZSwgdGhlbiB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgbWFza2luZyBvbmUgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3aXRoIGFub3RoZXIsIGFuZCB0aGUgZml4IGlzIGluY29tcGxldGUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXMgaW5pdGlhbGl6ZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBwYXRjaCBpcyBlZmZlY3RpdmUgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIG5ldyB1bmluaXQgbWVtb3J5IGNvbmRpdGlvbiBlbHNld2hlcmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpbmtfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQxPXN0cnVjdCBwaHlsaW5rIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0LVx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqbWFjX29wcztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDU6XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDYtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYwLVx0LyogVGhlIGxpbmsgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2MTpcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19jb25maWc7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwPXN0YXRpYyB2b2lkIHBoeWxpbmtfY2Fwc190b19saW5rbW9kZXModW5zaWduZWQgbG9uZyAqbGlua21vZGVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODU6ICogcGh5bGlua19saW1pdF9tYWNfc3BlZWQgLSBsaW1pdCB0aGUgcGh5bGlua19jb25maWcgdG8gYSBtYXhpbXVtIHNwZWVkXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NjogKiBAY29uZmlnOiBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4Ny0gKiBAbWF4X3NwZWVkOiBtYXhpbXVtIHNwZWVkXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5Mjp2b2lkIHBoeWxpbmtfbGltaXRfbWFjX3NwZWVkKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgbWF4X3NwZWVkKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjU5PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjczLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2NzQ6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gc3BlZWQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NTpcdFx0cGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY3Ni1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc3LVx0XHRpZiAoZndub2RlX3Byb3BlcnR5X3JlYWRfYm9vbChmaXhlZF9ub2RlLCBcJiMzNDtmdWxsLWR1cGxleFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3ODpcdFx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBEVVBMRVhfRlVMTDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg0LVx0XHRcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY4NTpcdFx0XHRcdCAgcGwtXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODYtXHRcdGlmIChmd25vZGVfcHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX25vZGUsIFwmIzM0O2FzeW0tcGF1c2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODctXHRcdFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2ODg6XHRcdFx0XHQgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzE4LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MTk6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gcHJvcFsxXSA/XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyMC1cdFx0XHRcdFx0XHREVVBMRVhfRlVMTCA6IERVUExFWF9IQUxGO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MjE6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBwcm9wWzJdO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjItXHRcdFx0aWYgKHByb3BbM10pXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyMy1cdFx0XHRcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyNDpcdFx0XHRcdFx0ICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyNS1cdFx0XHRpZiAocHJvcFs0XSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI2LVx0XHRcdFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Mjc6XHRcdFx0XHRcdCAgcGwtXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzMxOlx0aWYgKHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkIFx1MDAzZSBTUEVFRF8xMDAwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MzI6XHQgICAgcGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ICE9IERVUExFWF9GVUxMKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzMtXHRcdHBoeWxpbmtfd2FybihwbCwgXCYjMzQ7Zml4ZWQgbGluayBzcGVjaWZpZXMgaGFsZiBkdXBsZXggZm9yICVkTWJwcyBsaW5rP1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM0Olx0XHRcdCAgICAgcGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjczOTpcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MDpcdHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVx1MDAzZXN1cHBvcnRlZCwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MjpcdGMgPSBwaHlfY2Fwc19sb29rdXAocGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQzLVx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzU1LVx0XHRsaW5rbW9kZV9vcihwbC1cdTAwM2VzdXBwb3J0ZWQsIHBsLVx1MDAzZXN1cHBvcnRlZCwgbWF0Y2gpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTY6XHRcdGxpbmttb2RlX29yKHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTc6XHRcdFx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLCBtYXRjaCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OS1cdFx0cGh5bGlua193YXJuKHBsLCBcJiMzNDtmaXhlZCBsaW5rICVzIGR1cGxleCAlZE1icHMgbm90IHJlY29nbmlzZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2MDpcdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9PSBEVVBMRVhfRlVMTCA/IFwmIzM0O2Z1bGxcJiMzNDsgOiBcJiMzNDtoYWxmXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjE6XHRcdFx0ICAgICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2Mi1cdH1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzYzLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjQ6XHRsaW5rbW9kZV9hbmQocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjUtXHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzY2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Njc6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5saW5rID0gMTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzY4Olx0cGwtXHUwMDNlbGlua19jb25maWcuYW5fY29tcGxldGUgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzM9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDY6XHRcdHN3aXRjaCAocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwNy1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MjgtXHRcdFx0Y2FwcyA9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODI5Olx0XHRcdGNhcHMgPSBwaHlsaW5rX2dldF9jYXBhYmlsaXRpZXMocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlLCBjYXBzLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzAtXHRcdFx0XHRcdFx0XHRSQVRFX01BVENIX05PTkUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODM2LVx0XHRcdFx0ICAgIFwmIzM0O2luY29ycmVjdCBsaW5rIG1vZGUgJXMgZm9yIGluLWJhbmQgc3RhdHVzXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4Mzc6XHRcdFx0XHQgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg0MTpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODQyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NDM6XHRcdGlmIChwaHlsaW5rX3ZhbGlkYXRlKHBsLCBwbC1cdTAwM2VzdXBwb3J0ZWQsIFx1MDAyNnBsLVx1MDAzZWxpbmtfY29uZmlnKSkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDQtXHRcdFx0cGh5bGlua19lcnIocGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz04NTM9c3RhdGljIHZvaWQgcGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjEtXHQvKiBNYW51YWwgY29uZmlndXJhdGlvbiBvZiBwYXVzZSBtb2RlcyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NjI6XHRpZiAoIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX0FOKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODYzOlx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAyMz1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMjUtXHRpZiAocGwtXHUwMDNlcGNzIFx1MDAyNlx1MDAyNiBsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNjpcdFx0XHRcdFx0IHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNzpcdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAyOC1cdCAgICBwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUpKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjAtXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXHUwMDNlcGNzLCBwbC1cdTAwM2VwY3NfbmVnX21vZGUsIHN0YXRlLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlx0XHRcdFx0ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMi1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEzNzU9c3RhdGljIGludCBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODMtXHRcdCAgICBwaHlsaW5rX2FuX21vZGVfc3RyKHBsLVx1MDAzZXJlcV9saW5rX2FuX21vZGUpLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg0Olx0XHQgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODU6XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg2Olx0XHQgICAgcGwtXHUwMDNlbGlua19jb25maWcucGF1c2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg4LVx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM4OTpcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzOTUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NjpcdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE0MDc9c3RhdGljIHZvaWQgcGh5bGlua19tYWNfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDEyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDEzOlx0bGlua21vZGVfY29weShzdGF0ZS1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE0LVx0bGlua21vZGVfemVybyhzdGF0ZS1cdTAwM2VscF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTU6XHRzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTY6XHRzdGF0ZS1cdTAwM2VyYXRlX21hdGNoaW5nID0gcGwtXHUwMDNlbGlua19jb25maWcucmF0ZV9tYXRjaGluZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQxNy1cdHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID0gMDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI2Olx0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9ICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQyNzpcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gcGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI4Olx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDI5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ0MT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDQzLXtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ0NDpcdCpzdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDQ1LVx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VnZXRfZml4ZWRfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ2OC1cdGNhc2UgTUxPX0FOX0lOQkFORDpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ2OTpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDcwLVx0XHRpZiAobGlua19zdGF0ZS5pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTYxNT1zdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzMi1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTYzMzpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM0LVx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzNS1cdH0gZWxzZSBpZiAocGwtXHUwMDNlbGlua19mYWlsZWQpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTYzNjpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM3LVx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2OTgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2OTk6XHRpZiAoKG1hY19jb25maWcgXHUwMDI2XHUwMDI2IGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcwMC1cdCAgICBwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MDgtXHRcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3MDk6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzEwLVx0XHRwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDM9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxNy1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxODpcdGFkdiA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE5LVx0bGlua21vZGVfYW5kKGFkdiwgcGwtXHUwMDNlc3VwcG9ydGVkLCBjLVx1MDAzZWxpbmttb2Rlcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODIxLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODIyOlx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBzdGF0ZS1cdTAwM2VzcGVlZDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgyMzpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IHN0YXRlLVx1MDAzZWR1cGxleDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgyNDpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmxpbmsgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODI1Olx0cGwtXHUwMDNlbGlua19jb25maWcuYW5fY29tcGxldGUgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODI2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNjogKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNy0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZSBkZXNjcmliaW5nIHRoZSBuZXR3b3JrXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODUwOnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTktXHRcdHBsLVx1MDAzZWxpbmtfcG9ydCA9IFBPUlRfTUlJO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAwOlx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gaWZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MDE6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMjpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMzpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA0LVx0cGwtXHUwMDNlcGNzX3N0YXRlID0gUENTX1NUQVRFX0RPV047XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA5LVx0bGlua21vZGVfZmlsbChwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTEwOlx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkxMTpcdHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVx1MDAzZXN1cHBvcnRlZCwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTEyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjA4OD1zdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjEzOC1cdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlc3VwcG9ydGVkLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMTM5Olx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjE0MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzc9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0My1cdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHktXHUwMDNlaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjQ0Olx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0NS1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTE6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4OT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMxNi1cdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHlfZGV2LVx1MDAzZWludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMxNzpcdFx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXHUwMDNlbGlua19pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzI4LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzI5Olx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5X2RldiwgcGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDI5PXZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM2LVx0XHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0Mzc6XHRcdCAgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk3OT1pbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5NS1cdFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTk2Olx0XHQgKiB0byB1cGRhdGUgdGhlIHBsLVx1MDAzZWxpbmtfY29uZmlnIHNldHRpbmdzOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTk3LVx0XHQgKiAtIHRoZSBjb25maWd1cmF0aW9uIHJldHVybmVkIHZpYSBrc2V0dGluZ3NfZ2V0KCkgd2lsbCBjb21lXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTgtXHRcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5OTpcdFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDAwLVx0XHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDYtXHRcdCAqICAgaXMgcGFzc2VkIG9uIHRoZSBsaW5rIGZyb20gdGhlIFBIWSwgYW5kIGFsbCBvZlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA3Olx0XHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA4Olx0XHQgKiAtIHRoZSBvbmx5IHBvc3NpYmxlIHVzZSB3b3VsZCBiZSBsaW5rX2NvbmZpZy5hZHZlcnRpc2luZ1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDA5LVx0XHQgKiAgIHBhdXNlIG1vZGVzIHdoZW4gaW4gMTAwMGJhc2UtWCBtb2RlIHdpdGggYSBQSFksIGJ1dCBpblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAxNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzAxNjpcdGNvbmZpZyA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDE3LVx0LyogTWFzayBvdXQgdW5zdXBwb3J0ZWQgYWR2ZXJ0aXNlbWVudHMgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzUtXHRcdGlmIChwbC1cdTAwM2VyZXFfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDM2Olx0XHRcdGlmIChjLVx1MDAzZXNwZWVkICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkIHx8XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzc6XHRcdFx0ICAgIGMtXHUwMDNlZHVwbGV4ICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzOC1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1Mi1cdFx0XHRpZiAoIWxpbmttb2RlX2VxdWFsKGNvbmZpZy5hZHZlcnRpc2luZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzA1MzpcdFx0XHRcdFx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1NC1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzExNy1cdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTE4Olx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBjb25maWcuc3BlZWQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMTk6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBjb25maWcuZHVwbGV4O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIwLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTIxOlx0aWYgKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBjb25maWcuaW50ZXJmYWNlKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxMjItXHRcdC8qIFRoZSBpbnRlcmZhY2UgY2hhbmdlZCwgZS5nLiAxMDAwYmFzZS1YIFx1MDAzYy1cdTAwM2UgMjUwMGJhc2UtWCAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzMC1cdFx0XHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZmFsc2UsIFx1MDAyNmNvbmZpZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzE6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGNvbmZpZy5pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzI6XHRcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzM6XHR9IGVsc2UgaWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzNC1cdFx0XHRcdCAgIGNvbmZpZy5hZHZlcnRpc2luZykpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEzNTpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzNi1cdFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc0PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzk6XHRwYXVzZS1cdTAwM2VhdXRvbmVnID0gISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODA6XHRwYXVzZS1cdTAwM2VyeF9wYXVzZSA9ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgxOlx0cGF1c2UtXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4Mi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkwPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5Mi17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTM6XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcdTAwMjZwbC1cdTAwM2VsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NC1cdGJvb2wgbWFudWFsX2NoYW5nZWQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY1PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjc5LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgwOlx0aWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgc3RhdGUtXHUwMDNlYWR2ZXJ0aXNpbmcpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODE6XHRcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Mi1cdFx0Y2hhbmdlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg1LVx0aWYgKHBsLVx1MDAzZXJlcV9saW5rX2FuX21vZGUgIT0gbW9kZSB8fFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjg2Olx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Ny1cdFx0cGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSA9IG1vZGU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODg6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHN0YXRlLVx1MDAzZWludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3ODMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNZW1vcnkgQWxsb2NhdGlvbiBEZWVwIERpdmU6IGBwaHlsaW5rX2NyZWF0ZSgpYCBhbmQgYGt6YWxsb2NgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyB3aXRoIGBwbGAsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaXMgYSBgc3RydWN0IHBoeWxpbmtgLCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgIHdpdGhpbiB0aGUgYHBoeWxpbmtfY3JlYXRlKClgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgdGhvdWdoLiBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoaXMgd2l0aGluIGBwaHlsaW5rX2NyZWF0ZSgpYCBpdHNlbGYuIFRoZXJlIGFyZSBhIGZldyByZWFzb25zIHdoeSB0aGlzIHdvdWxkIGJlIG9uIG15IHJhZGFyOiBGaXJzdCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGFyZSBhIGNyaXRpY2FsIGFyZWEgZm9yIHBlcmZvcm1hbmNlIGFuZCBmcmFnbWVudGF0aW9uIGlzc3Vlcy4gV2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIHJpZ2h0IGFsbG9jYXRpb24gc3RyYXRlZ3kgaXMgdXNlZC4gYGt6YWxsb2NgIGlzIHR5cGljYWxseSBmaW5lLiBJdCBwcm92aWRlcyB6ZXJvLWluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgdXN1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRoaXMgYWRkcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBvdmVyaGVhZC4gSWYgdGhlIHN0cnVjdHVyZSBpcyB2ZXJ5IGxhcmdlIG9yIGlmIGl0JiMzOTtzIGluIGEgdmVyeSB0aWdodCBsb29wLCBpdCBtaWdodCBiZSB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGUgbWV0aG9kcyAoaWYgd2UgY2FuIGxpdmUgd2l0aCB0aGUgY29uc2VxdWVuY2VzKS4gU2Vjb25kLCB1bmRlcnN0YW5kaW5nIHRoZSBtZW1vcnkgbW9kZWwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSBpcyBjcml0aWNhbCBpbiBhbnkgbW9kZXJuIE9TIGFuZCBjYW4gYWZmZWN0IG1lbW9yeSBzYWZldHkgaWYgd2UgaGF2ZSBhbnkgdW5kZWZpbmVkIHZhbHVlcy4gRmluYWxseSwgYmVjYXVzZSBgcGh5bGlua19jcmVhdGVgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZXMsIGEgZ29vZCBzYW5pdHkgY2hlY2sgd291bGQgYmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXMgYSBkZWFsbG9jYXRpb24gcGF0aC4gSSBzaG91bGQgcHJvYmFibHkgYmUgcHJlcGFyZWQgdG8gY29uc2lkZXIgd2hlcmUgYHBsYCBpcyBmcmVlZCBsYXRlciBvbi4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NTA6XHRzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4xODUxOlx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xODUyOlx0XHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpZmFjZSxcbjE4NTM6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqbWFjX29wcylcbjE4NTQ6XHR7XG4xODU1Olx0XHRzdHJ1Y3QgcGh5bGluayAqcGw7XG4xODU2Olx0XHRpbnQgcmV0O1xuMTg1NzpcdFxuMTg1ODpcdFx0LyogVmFsaWRhdGUgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gKi9cbjE4NTk6XHRcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcykpIHtcbjE4NjA6XHRcdFx0ZGV2X2Vycihjb25maWctXHUwMDNlZGV2LFxuMTg2MTpcdFx0XHRcdFwmIzM0O3BoeWxpbms6IGVycm9yOiBlbXB0eSBzdXBwb3J0ZWRfaW50ZXJmYWNlc1xcblwmIzM0Oyk7XG4xODYyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuMTg2MzpcdFx0fVxuMTg2NDpcdFxuMTg2NTpcdFx0cGwgPSBremFsbG9jX29iaigqcGwpO1xuMTg2NjpcdFx0aWYgKCFwbClcbjE4Njc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4xODY4Olx0XG4xODY5Olx0XHRtdXRleF9pbml0KFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4xODcwOlx0XHRtdXRleF9pbml0KFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjE4NzE6XHRcdElOSVRfV09SSyhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlLCBwaHlsaW5rX3Jlc29sdmUpO1xuMTg3MjpcdFxuMTg3MzpcdFx0cGwtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuMTg3NDpcdFx0aWYgKGNvbmZpZy1cdTAwM2V0eXBlID09IFBIWUxJTktfTkVUREVWKSB7XG4xODc1Olx0XHRcdHBsLVx1MDAzZW5ldGRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG4xODc2Olx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVx1MDAzZW5ldGRldik7XG4xODc3Olx0XHR9IGVsc2UgaWYgKGNvbmZpZy1cdTAwM2V0eXBlID09IFBIWUxJTktfREVWKSB7XG4xODc4Olx0XHRcdHBsLVx1MDAzZWRldiA9IGNvbmZpZy1cdTAwM2VkZXY7XG4xODc5Olx0XHR9IGVsc2Uge1xuMTg4MDpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMTg4MTpcdFx0XHRnb3RvIGZyZWVfcGw7XG4xODgyOlx0XHR9XG4xODgzOlx0XG4xODg0Olx0XHRwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcyA9IHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKG1hY19vcHMpO1xuMTg4NTpcdFx0cGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSA9IHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzIFx1MDAyNlx1MDAyNlxuMTg4NjpcdFx0XHRcdCAgICAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyBcdTAwMjZcdTAwMjZcbjE4ODc6XHRcdFx0XHQgICAgICAgIXBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9pbnRlcmZhY2VzKTtcbjE4ODg6XHRcbjE4ODk6XHRcdC8qIFNldCB0aGUgZGVmYXVsdCBFRUUgY29uZmlndXJhdGlvbiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc5MgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgaW5pdGlhbGl6aW5nIGEgc3RhY2sgdmFyaWFibGUgY2FsbGVkIGBsaW5rX3N0YXRlYCBmcm9tIHRoZSBleGlzdGluZyBgcGwtJmd0O2xpbmtfY29uZmlnYC4gUHJldmlvdXNseSwgaW4gdGhvc2UgdHdvIHNwZWNpZmljIGJyYW5jaGVzLCBgbGlua19zdGF0ZWAgd2FzIG9ubHkgcGFydGlhbGx5IGluaXRpYWxpemVkIOKAkyBqdXN0IHRoZSBgbGlua2AgZmllbGQuIFRoaXMgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGlzc3VlLiBHb29kLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCAqb25seSogaW5pdGlhbGl6ZXMgYGxpbmtfc3RhdGVgLiBJdCYjMzk7cyBwdWxsaW5nIHZhbGlkIGRhdGEgZnJvbSBhbiBhbHJlYWR5IGluaXRpYWxpemVkIHN0cnVjdHVyZSAoYHBsLSZndDtsaW5rX2NvbmZpZ2ApLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBpc24mIzM5O3QgY3JlYXRpbmcgbmV3LCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBub3IgaXMgaXQgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBpc3N1ZSBoZXJlIGlzIGRpcmVjdGx5IGFkZHJlc3NlZCBieSBpbml0aWFsaXppbmcgYW4gb3RoZXJ3aXNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgc3RydWN0IGBsaW5rX3N0YXRlYC4KClRoZXJlZm9yZSwgSSB0aGluayB0aGlzIGlzIGEgY2xlYXItY3V0IGNhc2UuIFRoaXMgcGF0Y2ggZml4ZXMgYW4gZXhpc3RpbmcsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0gYW5kIEkgc2VlIG5vIG5ldyBLTVNBTi1kZXRlY3RhYmxlIHJpc2tzIGJlaW5nIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBjb21waWxlciB0ZXN0aW5nLCBhbG9uZyB3aXRoIHRoZSB1c3VhbCBzYW5pdGl6ZXJzLCBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXNuJiMzOTt0IHdhcnJhbnRlZC4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgbWVldHMgdGhlIGZvbGxvd2luZyBjcml0ZXJpYTogYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIGFyZSBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQsIGFuZCB0aGVyZSYjMzk7cyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBJIGZlZWwgY29tZm9ydGFibGUgY2FsbGluZyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVx1MDAzZWxpbmtfY29uZmlnIHdoZW4gcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVx1MDAzZWxpbmtfY29uZmlnIHdoZW4gcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjAxLjE1MzQ5MzA2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDcwOTM0NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfcmVzb2x2ZVwiLFxuICAgIFwicGh5bGlua19zdGFydFwiLFxuICAgIFwicGh5bGlua19zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXFx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeWxpbmtfcmVzb2x2ZWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3R1cmUgZnJvbSBgcGwtXFx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MDEuMTUzNDk5OTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3ODE4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTUyNDMyNDE0YjE5OWI2YWJkZmJiZTVhNGM1ODNkMDk3MmUzM2YzNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xNjMwLDggKzE2MzAsMTAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4gXFxuIFxcdGlmIChwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XFxuIFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xcbitcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbiBcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4gXFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbGlua19mYWlsZWQpIHtcXG4rXFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4gXFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuIFxcdFxcdHJldHJpZ2dlciA9IHRydWU7XFxuIFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjAyLjcxMjIzMDE5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzQxNzYxMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElOS1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJORVRfRFNBXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19yZXNvbHZlXCIsXG4gICAgXCJwaHlsaW5rX3N0YXJ0XCIsXG4gICAgXCJwaHlsaW5rX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cXHUwMDNlbGlua19jb25maWdgIHdoZW4gYHBoeWxpbmtfZGlzYWJsZV9zdGF0ZWAgb3IgYGxpbmtfZmFpbGVkYCBpcyBzZXQsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBkdXJpbmcgbGluayByZXNvbHV0aW9uLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIGNoYW5nZXMgb24gZW11bGF0ZWQgVVNCIG5ldHdvcmsgZGV2aWNlcyBhbmQgRFNBIHN3aXRjaCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTYzMCw4ICsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHRcdHJldHJpZ2dlciA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowMi43MTIyMzQyMjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MjIyODAxODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZTElOSyBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHRvIHJldmlldywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBpbXBhY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgbXkgYmVhcmluZ3MuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGlmZiBpdHNlbGY7IEknbGwgdXNlIGEgYHJlYWQtZmlsZWAgY29tbWFuZCB0byBwdWxsIGl0IHVwIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBiZWVuIGNoYW5nZWQuIEtub3dpbmcgdGhpcyBjb250ZXh0IGlzIGtleSwgb2YgY291cnNlIVxuXG5PbmNlIEkgaGF2ZSB0aGUgZGlmZiBpbiBmcm9udCBvZiBtZSwgSSdsbCBuZWVkIHRvIGV4cGFuZCBteSB2aWV3LiBJJ20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbGluZXMgYXJvdW5kIGxpbmUgMTYzMCwgd2hpY2ggdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbmVkLiBEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJIG1pZ2h0IHVzZSBgZ3JlcHBlcmAgb3IgbXkgSURFIHRvIHF1aWNrbHkganVtcCB0byB0aGUgcmVsZXZhbnQgY29kZS4gVGhpcydsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHBpbnBvaW50IHRoZSAqd2h5KiBiZWhpbmQgdGhlIG1vZGlmaWNhdGlvbnMsIGFuZCBzZWUgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGltcGFjdGVkLiBFc3NlbnRpYWxseSwgdW5kZXJzdGFuZGluZyB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgY2hhbmdlcyBpcyBlc3NlbnRpYWwgdG8gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowOS45MzUwNDAwNjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY3MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTYxMDpcXHRzdGF0aWMgYm9vbCBwaHlsaW5rX2xpbmtfaXNfdXAoc3RydWN0IHBoeWxpbmsgKnBsKVxcbjE2MTE6XFx0e1xcbjE2MTI6XFx0XFx0cmV0dXJuIHBsLVxcdTAwM2VuZXRkZXYgPyBuZXRpZl9jYXJyaWVyX29rKHBsLVxcdTAwM2VuZXRkZXYpIDogcGwtXFx1MDAzZW9sZF9saW5rX3N0YXRlO1xcbjE2MTM6XFx0fVxcbjE2MTQ6XFx0XFxuMTYxNTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbjE2MTY6XFx0e1xcbjE2MTc6XFx0XFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcXG4xNjE4OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcXG4xNjE5OlxcdFxcdGJvb2wgbWFjX2NvbmZpZyA9IGZhbHNlO1xcbjE2MjA6XFx0XFx0Ym9vbCByZXRyaWdnZXIgPSBmYWxzZTtcXG4xNjIxOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHk7XFxuMTYyMjpcXHRcXHRib29sIGN1cl9saW5rX3N0YXRlO1xcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4xNjI1OlxcdFxcdHBoeSA9IHBsLVxcdTAwM2VwaHlkZXY7XFxuMTYyNjpcXHRcXHRpZiAocGh5KVxcbjE2Mjc6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNjI4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMTYyOTpcXHRcXHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XFxuMTYzMDpcXHRcXG4xNjMxOlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XFxuMTYzMjpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG4xNjMzOlxcdFxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuMTYzNDpcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4xNjM1OlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWxpbmtfZmFpbGVkKSB7XFxuMTYzNjpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbjE2Mzc6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTYzODpcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2Mzk6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcXG4xNjQwOlxcdFxcdFxcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY0MTpcXHRcXHRcXHRtYWNfY29uZmlnID0gbGlua19zdGF0ZS5saW5rO1xcbjE2NDI6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XFxuMTY0MzpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZTtcXG4xNjQ0OlxcdFxcdFxcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XFxuMTY0NTpcXHRcXHR9IGVsc2Uge1xcbjE2NDY6XFx0XFx0XFx0cGh5bGlua19tYWNfcGNzX2dldF9zdGF0ZShwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2NDc6XFx0XFxuMTY0ODpcXHRcXHRcXHQvKiBUaGUgUENTIG1heSBoYXZlIGEgbGF0Y2hpbmcgbGluay1mYWlsIGluZGljYXRvci4gSWYgdGhlIGxpbmtcXG4xNjQ5OlxcdFxcdFxcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cXG4xNjUwOlxcdFxcdFxcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcXG4xNjUxOlxcdFxcdFxcdCAqIG9mIHRoZSBsaW5rLlxcbjE2NTI6XFx0XFx0XFx0ICovXFxuMTY1MzpcXHRcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluaykge1xcbjE2NTQ6XFx0XFx0XFx0XFx0aWYgKGN1cl9saW5rX3N0YXRlKVxcbjE2NTU6XFx0XFx0XFx0XFx0XFx0cmV0cmlnZ2VyID0gdHJ1ZTtcXG4xNjU2OlxcdFxcdFxcdFxcdGVsc2VcXG4xNjU3OlxcdFxcdFxcdFxcdFxcdHBoeWxpbmtfbWFjX3Bjc19nZXRfc3RhdGUocGwsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG4xNjU4OlxcdFxcdFxcdH1cXG4xNjU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowOS45MzcyMTA5NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDA1NjE4Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGBsaW5rX3N0YXRlYCoqXG5cbkFscmlnaHQsIEknbSBhdCB0aGUgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW5pdGlhbCBnbGFuY2UgYXQgYHBoeWxpbmtfcmVzb2x2ZWAgaGFzIGdpdmVuIG1lIHNvbWUgY2x1ZXMsIGJ1dCBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24sIGhvdyBpdCdzIGltcGxlbWVudGVkIGFuZCB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZSBgbGlua19zdGF0ZWAgdmFyaWFibGUgaXMgbWFuYWdlZCBhbmQgaG93IGl0J3MgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLiBJIGhhdmUgYSBodW5jaCB0aGF0IHRoaXMgYGxpbmtfc3RhdGVgIGlzIG1vcmUgdGhhbiBtZWV0cyB0aGUgZXllLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBnb2luZyB0byBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGFydCBvZiB0aGUgc3RhY2suIEkgd2FudCB0byBzZWUgaG93IHRoZSBzdGF0ZSB0cmFuc2l0aW9ucywgd2hhdCB0cmlnZ2VycyB0aGVtLCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGxheWVycy4gVGhpcyBtZWFucyBsb29raW5nIGF0IGJvdGggaG93IGl0J3Mgc2V0IGJ5IGBwaHlsaW5rX3Jlc29sdmVgIGFuZCBob3cgaXQgaXMgbGF0ZXIgdXNlZCBieSB0aGUgcmVzdCBvZiB0aGUgcmVsZXZhbnQgY29kZS4gVGhlcmUgaGFzIHRvIGJlIGEgc3RhdGUgbWFjaGluZSBoZXJlLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjoxMy4zNDI4MzM3NjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcXFwidXBcXFwiIHN0YXRlIGlzIHRoZSB1bmlvbiBvZiBib3RoIHRoZVxcbjE2NjE6XFx0XFx0XFx0ICogUEhZIGFuZCB0aGUgTUFDXFxuMTY2MjpcXHRcXHRcXHQgKi9cXG4xNjYzOlxcdFxcdFxcdGlmIChwaHkpXFxuMTY2NDpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgXFx1MDAyNj0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rO1xcbjE2NjU6XFx0XFxuMTY2NjpcXHRcXHRcXHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cXG4xNjY3OlxcdFxcdFxcdGlmIChwaHkgXFx1MDAyNlxcdTAwMjYgcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XFxuMTY2ODpcXHRcXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbjE2Njk6XFx0XFx0XFx0XFx0ICogZXZlbnQgaWYgdGhlIGxpbmsgaXNuJ3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cXG4xNjcwOlxcdFxcdFxcdFxcdCAqL1xcbjE2NzE6XFx0XFx0XFx0XFx0aWYgKGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVxcdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XFxuMTY3MjpcXHRcXHRcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2NzM6XFx0XFx0XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTY3NDpcXHRcXHRcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XFxuMTY3NzpcXHRcXG4xNjc4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBkb2luZyByYXRlIG1hdGNoaW5nLCB0aGVuIHRoZSBsaW5rXFxuMTY3OTpcXHRcXHRcXHRcXHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXFxuMTY4MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjgxOlxcdFxcdFxcdFxcdGlmIChwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcXG4xNjgyOlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XFxuMTY4MzpcXHRcXHRcXHRcXHRcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmc7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnNwZWVkID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcXG4xNjg1OlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XFxuMTY4NjpcXHRcXHRcXHRcXHR9XFxuMTY4NzpcXHRcXG4xNjg4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxcbjE2ODk6XFx0XFx0XFx0XFx0ICogZmxvdyBjb250cm9sIGJpdHMuXFxuMTY5MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjkxOlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucGF1c2UgPSBwbC1cXHUwMDNlcGh5X3N0YXRlLnBhdXNlO1xcbjE2OTI6XFx0XFx0XFx0XFx0bWFjX2NvbmZpZyA9IHRydWU7XFxuMTY5MzpcXHRcXHRcXHR9XFxuMTY5NDpcXHRcXHR9XFxuMTY5NTpcXHRcXG4xNjk2OlxcdFxcdGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSAhPSBNTE9fQU5fRklYRUQpXFxuMTY5NzpcXHRcXHRcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY5ODpcXHRcXG4xNjk5OlxcdFxcdGlmICgobWFjX2NvbmZpZyBcXHUwMDI2XFx1MDAyNiBsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB8fFxcbjE3MDA6XFx0XFx0ICAgIHBsLVxcdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcXG4xNzAxOlxcdFxcdFxcdC8qIFRoZSBpbnRlcmZhY2UgaGFzIGNoYW5nZWQgb3IgYSBmb3JjZWQgbWFqb3IgY29uZmlndXJhdGlvblxcbjE3MDI6XFx0XFx0XFx0ICogd2FzIHJlcXVlc3RlZCwgc28gZm9yY2UgdGhlIGxpbmsgZG93biBhbmQgdGhlbiByZWNvbmZpZ3VyZS5cXG4xNzAzOlxcdFxcdFxcdCAqL1xcbjE3MDQ6XFx0XFx0XFx0aWYgKGN1cl9saW5rX3N0YXRlKSB7XFxuMTcwNTpcXHRcXHRcXHRcXHRwaHlsaW5rX2xpbmtfZG93bihwbCk7XFxuMTcwNjpcXHRcXHRcXHRcXHRjdXJfbGlua19zdGF0ZSA9IGZhbHNlO1xcbjE3MDc6XFx0XFx0XFx0fVxcbjE3MDg6XFx0XFx0XFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTcwOTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gbGlua19zdGF0ZS5pbnRlcmZhY2U7XFxuMTcxMDpcXHRcXHRcXHRwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnID0gZmFsc2U7XFxuMTcxMTpcXHRcXHR9XFxuMTcxMjpcXHRcXG4xNzEzOlxcdFxcdC8qIElmIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGludGVyZmFjZSBmYWlsZWQsIGZvcmNlIHRoZSBsaW5rIGRvd25cXG4xNzE0OlxcdFxcdCAqIHVudGlsIHdlIGdldCBhIHN1Y2Nlc3NmdWwgY29uZmlndXJhdGlvbi5cXG4xNzE1OlxcdFxcdCAqL1xcbjE3MTY6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWpvcl9jb25maWdfZmFpbGVkKVxcbjE3MTc6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTcxODpcXHRcXG4xNzE5OlxcdFxcdGlmIChsaW5rX3N0YXRlLmxpbmsgIT0gY3VyX2xpbmtfc3RhdGUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTMuMzQzMjkzMjExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNDM2NzUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBoeWxpbmsgU3RhdGUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIExvb2tpbmcgYXQgdGhpcyBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZWAgb3IgYHBsLVx1MDAzZWxpbmtfZmFpbGVkYCBjb25kaXRpb25hbCBibG9ja3MsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCB0aGUgYGxpbmtfc3RhdGVgIHZhcmlhYmxlIHdhc24ndCBiZWluZyBwcm9wZXJseSBpbml0aWFsaXplZCBpbiB0aG9zZSBzY2VuYXJpb3MuIEl0IGxvb2tzIGxpa2UgaXQgd2FzIGp1c3QgYSBsb2NhbCwgdW5pbml0aWFsaXplZCBgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO2AuIFRoZSBsb2dpYyBzZXRzIGBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtgLCBidXQgdGhlICpyZXN0KiBvZiBgbGlua19zdGF0ZWAncyBmaWVsZHMg4oCTIGxpa2UgYGludGVyZmFjZWAsIGBwYXVzZWAgYW5kIHNvIG9uLCB3ZXJlIGxlZnQgYXMgZ2FyYmFnZSBtZW1vcnkuXG5cbkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvdWxkIGNhdXNlIGlzc3VlcyBkb3duIHRoZSBsaW5lLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgLCBvciB0aG9zZSBjb21wYXJpc29ucyB3aXRoIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AuIFRob3NlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgc3VidGxlLCBoYXJkLXRvLWRlYnVnIHByb2JsZW1zLiBUaGUgcGF0Y2gncyBjaGFuZ2UsIHdoZXJlIGBsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7YCAqYmVmb3JlKiB0aGUgbW9kaWZpY2F0aW9uLCBzZWVtcyBjb3JyZWN0IHRvIGVuc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgcG9wdWxhdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXggdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLlxuXG5Ob3csIGxldCdzIG1vdmUgb24gdG8gdGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMuIElzIHRoaXMgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyPyBJZiB0aGlzIGlzIHVzZWQgaW4gdGhlc2Ugc2V0dXBzLCB1bmluaXRpYWxpemVkIHN0YXRlcyBjb3VsZCBsZWFkIHRvIGEgY3Jhc2ggb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGltZSB0byBjaGVjayByZWFjaGFiaWxpdHkuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkgZm9yIGFueSBjYWxscyB0byBgcGh5bGlua19jcmVhdGVgIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGRldGVybWluZSBob3cgd2lkZWx5IHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTYuODc3NjYzNjM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTg1OTYzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnBoeWxpbmtfb3BzKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXFx0XFx0XFx0XFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc0LVxcdG1hY19kZXYtXFx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzU6XFx0bWFjX2Rldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWNfZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHQgIGRldl9md25vZGUobWFjX2Rldi1cXHUwMDNlZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cXHRcXHRcXHRcXHQgZHBtYWNfbm9kZSwgbWFjLVxcdTAwM2VpZl9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTkyMz1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0MjpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0NTpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk1MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4OlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg3MDpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzktXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9NDE5PUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMi1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2My1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk3MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTYwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjEzLVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2OTE9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzUxOlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTItXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM3ND1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0NjY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2Ny1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDUtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIxOlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTI2OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI3LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTU9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMwLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOD1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc3MD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NC0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk2LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzU6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzYtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0MS0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MS0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA1PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMy0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjAtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYyLSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3OS0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODEtICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOS0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3MD1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzktICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgxLSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDEyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDIyLSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4OC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTE5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjItICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1MS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTUyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkwPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTk3LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTktICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NDk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1Mi0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjUzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc3LSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2Nzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTctICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4Nj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDEtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTAyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMy0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU0PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0NS0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE2Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzAtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzItICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODYtICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjY5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzMtICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5NS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5Ny0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzE4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyMS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzIzLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTAtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTItICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4OS0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTkxLSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjE1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzY5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3My0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NC0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMy1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTYxNi1cXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbm5ldC9kc2EvcG9ydC5jLTE2MTgte1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cXG5uZXQvZHNhL3BvcnQuYzoxNjQ3OlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUoZHAtXFx1MDAzZWRuKSwgbW9kZSxcXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVxcdFxcdFxcdCAgICBtYWNfb3BzKTtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG5uZXQvZHNhL3BvcnQuYzoxNjc0OlxcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3BvcnQuYy0xNjc1LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvZHNhL3BvcnQuaD0xMDA9aW50IGRzYV9wb3J0X21ycF9kZWxfcmluZ19yb2xlKGNvbnN0IHN0cnVjdCBkc2FfcG9ydCAqZHAsXFxubmV0L2RzYS9wb3J0LmgtMTAxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxubmV0L2RzYS9wb3J0LmgtMTAzLXZvaWQgZHNhX3BvcnRfcGh5bGlua19kZXN0cm95KHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjczLVxcbm5ldC9kc2EvdXNlci5jOjI2NzQ6XFx0cmV0ID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvdXNlci5jLTI2NzUtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTkuMDM2MjY5MjExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ1NDY0OTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFBoeWxpbmsgVXNhZ2UqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCwgYW5kIEkndmUgY29tZSBhY3Jvc3MgYSBjb3VwbGUgb2YgaW50ZXJlc3RpbmcgZmlsZXM6IGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBheDg4NzcyX3BoeWxpbmtfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLCBmb2N1c2luZyBvbiB0aGUgYGxhbjc4eHhfcGh5bGlua19zZXR1cGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgYm90aCBvZiB0aGVzZSBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSB1c2luZyBwaHlsaW5rLCB3aGljaCBpcyBzaWduaWZpY2FudC4gVGhpcyBsaWtlbHkgbWVhbnMgdGhleSdyZSBiZWluZyB0ZXN0ZWQgZWZmZWN0aXZlbHkgdmlhIHN5emthbGxlciwgb3IgcG90ZW50aWFsbHkgbGV2ZXJhZ2VkIGluIFVTQiByYXcgbW9kZSBvciBnYWRnZXQgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCBiZSBsb29raW5nIGF0IGhvdyB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggb3RoZXIgbmV0d29ya2luZyBjb21wb25lbnRzLCBzdWNoIGFzIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSksIGV0aHRvb2wgaW9jdGxzL25ldGxpbmsgaW50ZXJhY3Rpb25zLCBhbmQgdGhlIG5ldGRldiB1cC9kb3duIGxpZmVjeWNsZS4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHBoeWxpbmsgZW5hYmxlcyBoZXJlLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IEtjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgcGh5bGluaz8gTGV0IG1lIHNlYXJjaCBmb3IgXCJQSFlMSU5LXCIgZGlyZWN0bHkgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjEuNDkwOTIxMzM2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzMzY1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJTktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjIxLjU5NzI2MjEwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTkyNDk4OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUEhZIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IFBIWSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGlzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGxldCdzIGZvY3VzIG9uIHRoZSBmaXJzdCB0aGlydHkgbGluZXMg4oCTIHRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxhaWQgb3V0LiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIHN5bWJvbCBmb3IgZW5hYmxpbmcgUEhZIHN1cHBvcnQsIG1heWJlIHNvbWUgZ2VuZXJhbCBvcHRpb25zIGZvciBzZWxlY3RpbmcgYmV0d2VlbiBkaWZmZXJlbnQgUEhZIGludGVyZmFjZXMgKGxpa2UgTUlJLCBSR01JSSwgU0dNSUksIGV0Yy4pLCBhbmQgb2YgY291cnNlLCB0aG9zZSBjcnVjaWFsIGRlcGVuZGVuY2llcyBvbiB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBzZWN0aW9uIHdpbGwgcHJvdmlkZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGZvciB0aGVzZSBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMuIEkgYW50aWNpcGF0ZSBhIHdlbGwtc3RydWN0dXJlZCBzZXJpZXMgb2YgYGNvbmZpZ2AgYmxvY2tzLCBtYXliZSBzb21lIGBtZW51Y29uZmlnYCBvcHRpb25zIGZvciB0aGUgdXNlciB0byBzZWxlY3Qgc3BlY2lmaWMgZmVhdHVyZXMgb3IgUEhZIHR5cGVzLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGNsZWFyIGV4cGxhbmF0aW9ucyBpbiB0aGUgY29tbWVudHMgdG8gZ3VpZGUgZGV2ZWxvcGVycy4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGJhY2tib25lIGZvciBpbnRlZ3JhdGluZyB2YXJpb3VzIFBIWSBkZXZpY2VzLCBzbyBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgc3RydWN0dXJlIGFuZCBsb2dpYyBpcyBlc3NlbnRpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mjk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjQuMTg5NzYyNzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRpZiBQSFlMSUJcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIFNXUEhZXFxuICAyNTpcXHRcXHRib29sXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBQSFlfUEFDS0FHRVxcbiAgMjg6XFx0XFx0IHRyaXN0YXRlXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjQuMTg5ODMzMzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk0ODk1MTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIGdldHRpbmcgY2hvc2VuIHdoZW4gc29tZW9uZSBzcGVjaWZpZXMgUEhZTElOSy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBjb21tb24gc3VzcGVjdHMg4oCTIHRoZSB1c3VhbCBzdXNwZWN0cywgcmVhbGx5IOKAkyBkcml2ZXJzIGxpa2UgVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3OV8xNzhBLCBvciBtYXliZSBvbmUgb2YgdGhlIEFTSVggZHJpdmVycy4gVGhvc2UgYXJlIHRoZSBvbmVzIEknZCBleHBlY3QgdG8gc2VlLlxuXG5UbyBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGRpY3RhdGluZyB3aGljaCBkcml2ZXJzIGFyZSBjb21waWxlZCBiYXNlZCBvbiB2YXJpb3VzIG9wdGlvbnMgaXMgZGVmaW5lZC4gVGhhdCdsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHNlbGVjdGlvbiBydWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4OTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjI2LjEzODc4OTI4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4OTQ1MDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEhZTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDo5MjpcXHRzZWxlY3QgUEhZTElOS1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXFx0c2VsZWN0IEZTTF9QUV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFxcdTAwMjZcXHUwMDI2IEZTTF9GTUFOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVxcdHNlbGVjdCBOWFBfTlRNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUElOQ1RSTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXFx0c2VsZWN0IFBBQ0tJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTktXFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcXG5uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWctMTEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjI4LjMyODI0NDg5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDA1MzI0NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmtpbmcgZHJpdmVycyAtIHNwZWNpZmljYWxseSBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYC4gVGhleSBhbGwgc2VlbSB0byB0aWUgaW50byBgUEhZTElOS2AuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHdvcnRoIGRpZ2dpbmcgaW50by4gSSBrbm93IHN5emthbGxlciBhbmQgVVNCIGZ1enppbmcgYXJlIHVzZWQgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcywgYW5kIERTQSwgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUsIGdldHMgYSBsb3Qgb2YgZnV6emluZyBhdHRlbnRpb24gdGhyb3VnaCBuZXRsaW5rLCBzd2l0Y2hkZXYsIGFuZCB0aGUgbGlrZS4gTm93LCBgcGh5bGlua2AgaXRzZWxmIGlzLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGEgcHJldHR5IGNvcmUgcGllY2Ugb2YgbmV0d29ya2luZy4gSXQgc2l0cyByaWdodCBpbiB0aGUgZHJpdmVyIFBIWSBsYXllci5cblxuU28sIHdoZXJlIGlzIHRoaXMgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkPyBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgY2FsbGVyIGFuZCBob3cgaXQncyBpbnZva2VkLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgc28gSSdsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIFwicmVzb2x2ZVwiIGRpcmVjdGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIHNlZSB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0aWVzIGNvdWxkIGV4aXN0LCBnaXZlbiB0aGUgZnV6emluZyBlZmZvcnRzIGJlaW5nIGRvbmUgb24gdGhlc2UgcmVsYXRlZCBhcmVhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MzAuNzMzNTczM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NTk4MTI3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNvbHZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MT1zdHJ1Y3QgcGh5bGluayB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcwLVxcdHN0cnVjdCBtdXRleCBzdGF0ZV9tdXRleDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOlxcdC8qIFNlcmlhbGl6ZSB1cGRhdGVzIHRvIHBsLVxcdTAwM2VwaHlkZXYgd2l0aCBwaHlsaW5rX3Jlc29sdmUoKSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzItXFx0c3RydWN0IG11dGV4IHBoeWRldl9tdXRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQtXFx0dW5zaWduZWQgaW50IHBoeV9pYl9tb2RlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzU6XFx0c3RydWN0IHdvcmtfc3RydWN0IHJlc29sdmU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03Ni1cXHR1bnNpZ25lZCBpbnQgcGNzX25lZ19tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz04NTM9c3RhdGljIHZvaWQgcGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2NS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2NjpzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NzAtXFx0aWYgKHN0YXRlLVxcdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg3MTpcXHRcXHRsaW5rbW9kZV9yZXNvbHZlX3BhdXNlKHN0YXRlLVxcdTAwM2VhZHZlcnRpc2luZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg3Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RhdGUtXFx1MDAzZWxwX2FkdmVydGlzaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1MC1cXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSBNTE9fUEFVU0VfTk9ORTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0NTE6XFx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTItfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNjEwPXN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE1OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjE2LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2MTc6XFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTgtXFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjQ4LVxcdFxcdC8qIFRoZSBQQ1MgbWF5IGhhdmUgYSBsYXRjaGluZyBsaW5rLWZhaWwgaW5kaWNhdG9yLiBJZiB0aGUgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY0OTpcXHRcXHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjUwLVxcdFxcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY2OC1cXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY2OTpcXHRcXHRcXHQgKiBldmVudCBpZiB0aGUgbGluayBpc24ndCBhbHJlYWR5IGRvd24sIGFuZCByZS1yZXNvbHZlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY3MC1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcyNy1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mjg6XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcyOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MzUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTczNy17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM4LVxcdGlmICghcGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mzk6XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0MC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0MjpzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQ3LVxcdGlmIChzdGF0ZSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzQ4OlxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NDk6XFx0XFx0Zmx1c2hfd29yayhcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwsIGludCBiaXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzU0LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTUtXFx0Y2xlYXJfYml0KGJpdCwgXFx1MDAyNnBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc1NjpcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTctfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzU5PXN0YXRpYyB2b2lkIHBoeWxpbmtfZml4ZWRfcG9sbChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc2NC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NjU6XFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTg1MD1zdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NzAtXFx0bXV0ZXhfaW5pdChcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NzE6XFx0SU5JVF9XT1JLKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSwgcGh5bGlua19yZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NzItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NDk9dm9pZCBwaHlsaW5rX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1NTpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU2LVxcdGtmcmVlKHBsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk3Nz1zdGF0aWMgdm9pZCBwaHlsaW5rX3BoeV9jaGFuZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCB1cClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjAwMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIwMDM6XFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzQ0PXZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNjMtXFx0aWYgKHBoeSkge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM2NDpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzY1LVxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzczLVxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc0OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3NS1cXHRwaHlsaW5rX2RiZyhwbCwgXFxcIiVzIGxpbmsgJXNcXFxcblxcXCIsIHdoYXQsIHVwID8gXFxcInVwXFxcIiA6IFxcXCJkb3duXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTI9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDE2OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQyOT12b2lkIHBoeWxpbmtfc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDU2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ1NzpcXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0OTk9dm9pZCBwaHlsaW5rX3N0b3Aoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxMzpcXHRwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHBsLCBQSFlMSU5LX0RJU0FCTEVfU1RPUFBFRCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjEzPXZvaWQgcGh5bGlua19zdXNwZW5kKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBtYWNfd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjIzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYyNDpcXHRcXHQvKiBTdG9wIHRoZSByZXNvbHZlciBicmluZ2luZyB0aGUgbGluayB1cCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYyNS1cXHRcXHRfX3NldF9iaXQoUEhZTElOS19ESVNBQkxFX01BQ19XT0wsIFxcdTAwMjZwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYzMC1cXHRcXHRcXHQgKiBidXQgb25lIHdvdWxkIGhvcGUgYWxsIHBhY2tldHMgaGF2ZSBiZWVuIHNlbnQuIFRoaXNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MzE6XFx0XFx0XFx0ICogYWxzbyBtZWFucyBwaHlsaW5rX3Jlc29sdmUoKSB3aWxsIGRvIG5vdGhpbmcuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMyLVxcdFxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjgzPXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjk4LVxcdFxcdFxcdCAqIHRoZSB0cnVlIGxpbmsgc3RhdGUgd2lsbCBiZSBwcmludGVkIHdoZW4gd2UgcnVuIGFcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2OTk6XFx0XFx0XFx0ICogcmVzb2x2ZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MDAtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzExOlxcdFxcdC8qIFJlLWVuYWJsZSBhbmQgcmUtcmVzb2x2ZSB0aGUgbGluayBwYXJhbWV0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlxcdFxcdHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShwbCwgUEhZTElOS19ESVNBQkxFX01BQ19XT0wpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTktXFx0XFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzAwMDpcXHRcXHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDEtXFx0XFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE5MD1pbnQgcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI1MC1cXHQgKiBjYXVzZSBwaHlsaWIgdG8gcmVuZWdvdGlhdGUgKGlmIEFOIGlzIGVuYWJsZWQpIHdoaWNoIHdpbGwgaW4gdHVyblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI1MTpcXHQgKiBjYWxsIG91ciBwaHlsaW5rX3BoeV9jaGFuZ2UoKSBhbmQgdHJpZ2dlciBhIHJlc29sdmUuICBOb3RlIHRoYXRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTItXFx0ICogd2UgY2FuJ3QgaG9sZCBvdXIgc3RhdGUgbXV0ZXggd2hpbGUgY2FsbGluZyBwaHlfc2V0X2FzeW1fcGF1c2UoKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI1OC1cXHQvKiBJZiB0aGUgbWFudWFsIHBhdXNlIHNldHRpbmdzIGNoYW5nZWQsIG1ha2Ugc3VyZSB3ZSB0cmlnZ2VyIGFcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNTk6XFx0ICogcmVzb2x2ZSB0byB1cGRhdGUgdGhlaXIgc3RhdGU7IHdlIGNhbiBub3QgZ3VhcmFudGVlIHRoYXQgdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjYwLVxcdCAqIGxpbmsgd2lsbCBjeWNsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2My1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI2NDpcXHRcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTAxPXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfZG93bih2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MDc6XFx0cGh5bGlua19ydW5fcmVzb2x2ZV9hbmRfZGlzYWJsZShwbCwgUEhZTElOS19ESVNBQkxFX0xJTkspO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MTA9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxNS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MTY6XFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTE3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk2OD1zdGF0aWMgc3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk4My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5ODQ6dm9pZCBwaHlsaW5rX3Jlc29sdmVfYzczKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MDAzOlxcdHBoeWxpbmtfcmVzb2x2ZV9hbl9wYXVzZShzdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMDU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXNvbHZlX2M3Myk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDAwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV9jMzdfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDAyNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMjg6XFx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzg0PXZvaWQgcGh5bGlua19yZXBsYXlfbGlua19iZWdpbihzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzODctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzg4OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9SRVBMQVkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQ0MDc9dm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MTYtXFx0cGwtXFx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IHRydWU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE3OlxcdHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShwbCwgUEhZTElOS19ESVNBQkxFX1JFUExBWSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE4OlxcdGZsdXNoX3dvcmsoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozMi4wOTk1NTgyNjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY4NDczNzQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgUGh5bGluayBGaXgncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCdzIGVzc2VudGlhbGx5IGV4ZWN1dGFibGUgbG9naWMgd2l0aGluIHRoZSBjb3JlIGBwaHlsaW5rX3Jlc29sdmVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFRoYXQncyBhIGNsYXNzaWMgZnV6emluZyB0YXJnZXQsIHJpcGUgZm9yIGNhdGNoaW5nIHVuZXhwZWN0ZWQgc3RhdGVzIG9yIGRhdGEgY29ycnVwdGlvbi4gVGhlIGZhY3QgdGhhdCBgcGh5bGlua19yZXNvbHZlYCBnZXRzIGNhbGxlZCBpbiByZXNwb25zZSB0byBhIHJhbmdlIG9mIGV2ZW50cywgbGlrZSBsaW5rIHN0YXRlIGNoYW5nZXMsIHBoeWxpbmsgc3RhcnQvc3RvcCwgYW5kIGV2ZW4gZXRodG9vbCBjb21tYW5kcywgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZHVlIHRvIGl0cyBicm9hZCBleHBvc3VyZS4gUGx1cywgSSBrbm93IHRoaXMgY29kZSBpcyBhbHNvIHJlYWNoYWJsZSB0aHJvdWdoIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlcyDigJMgdGhpbmsgVVNCIGFkYXB0ZXJzIG9yIERTQSBzd2l0Y2hlcyDigJMgd2hpY2ggYXJlIGVhc2lseSBzcHVuIHVwIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhpcyBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgdGhlIGZ1enppbmcgc2V0dXAuXG5cbkkndmUgZGV0ZXJtaW5lZCB0aGUgZm9sbG93aW5nOiB0aGlzIGlzIGEgKldvcnRoRnV6emluZyogc2l0dWF0aW9uLiBJIGlkZW50aWZpZWQgdGhlICpGb2N1c1N5bWJvbHMqIGFzIGBwaHlsaW5rX3Jlc29sdmVgIGl0c2VsZiwgYW5kIHBlcmhhcHMgYWxzbyBgcGh5bGlua19zdGFydGAgYW5kIGBwaHlsaW5rX3N0b3BgIGFzIGxpa2VseSBlbnRyeSBwb2ludHMuIFRoZSAqRW5hYmxlQ29uZmlncyogaW5jbHVkZSBgUEhZTElOS2AsIGBQSFlMSUJgLCBhbmQgZWl0aGVyIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgb3IgYFVTQl9ORVRfQVg4ODE3WGAuIEl0IGFwcGVhcnMgYFBIWUxJTktgIGlzIHRyaXN0YXRlIGFuZCBzZWxlY3RlZCBieSBgUEhZTElCYCBhbmQgYFNXUEhZYCwgc28gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgZW5hYmxlZCwgb3IgcG9zc2libHkganVzdCBlbmFibGUgYFBIWUxJTktgIGRpcmVjdGx5IGlmIHRoYXQncyBhbiBvcHRpb24uIEkndmUgZG91YmxlLWNoZWNrZWQgbXkgd29yayBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzOiB0aGUgcmVhY2hhYmlsaXR5IGlzIHRoZXJlLCB0aGUgcmVhc29uaW5nIGlzIHNvbGlkLCBhbmQgSSd2ZSB0YXJnZXRlZCBub24tdWJpcXVpdG91cywgcGF0Y2gtc3BlY2lmaWMgZnVuY3Rpb25zLiBOb3csIEknbSByZWFkeSB0byBjcmFmdCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzc3LCJPdXRwdXRUb2tlbnMiOjE3OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi43ODQyOTgwOTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwNDk4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfcmVzb2x2ZVwiLFxuICAgIFwicGh5bGlua19zdGFydFwiLFxuICAgIFwicGh5bGlua19zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeWxpbmtfcmVzb2x2ZWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3R1cmUgZnJvbSBgcGwtXFx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSU5LXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3Jlc29sdmVcIixcbiAgICBcInBoeWxpbmtfc3RhcnRcIixcbiAgICBcInBoeWxpbmtfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwaHlsaW5rX3Jlc29sdmVgIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZSBgbGlua19zdGF0ZWAgc3RydWN0dXJlIGZyb20gYHBsLVxcdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjM2Ljg4ODM1NDY1NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMzYwNTk3MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi44ODg3NjUzNzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDMzNTY0MjcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTYzMCw4ICsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHRcdHJldHJpZ2dlciA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi44ODg3NjYxNTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDUxNDAzMTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgdGhpbmtpbmcgYWxvdWQgYXMgSSBnbzpcblxuKipJbnNwZWN0aW5nIHRoZSBgcGh5bGluay5jYCBDb2RlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZmlsZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24sIGFyb3VuZCBsaW5lIDE2MzAuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIHNvdW5kcyBsaWtlIHRoZSBsaWtlbHkgcG9pbnQgd2hlcmUgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgdGFraW5nIHBsYWNlLiBJJ2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQsIGlmIGF2YWlsYWJsZSwgb3IganVzdCBvcGVuIHRoZSBmaWxlIGFuZCBzY3JvbGwgdGhlcmUgbWFudWFsbHksIHRvIGdldCBhIHByZWNpc2UgbG9vay4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgZXhhY3RseSB3aGF0IGlzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDEuNDAyODAwNjU5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MTA6XFx0c3RhdGljIGJvb2wgcGh5bGlua19saW5rX2lzX3VwKHN0cnVjdCBwaHlsaW5rICpwbClcXG4xNjExOlxcdHtcXG4xNjEyOlxcdFxcdHJldHVybiBwbC1cXHUwMDNlbmV0ZGV2ID8gbmV0aWZfY2Fycmllcl9vayhwbC1cXHUwMDNlbmV0ZGV2KSA6IHBsLVxcdTAwM2VvbGRfbGlua19zdGF0ZTtcXG4xNjEzOlxcdH1cXG4xNjE0OlxcdFxcbjE2MTU6XFx0c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4xNjE2OlxcdHtcXG4xNjE3OlxcdFxcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XFxuMTYxODpcXHRcXHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XFxuMTYxOTpcXHRcXHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcXG4xNjIwOlxcdFxcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XFxuMTYyMTpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xcbjE2MjI6XFx0XFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcXG4xNjIzOlxcdFxcbjE2MjQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMTYyNTpcXHRcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbjE2MjY6XFx0XFx0aWYgKHBoeSlcXG4xNjI3OlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMTYyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjE2Mjk6XFx0XFx0Y3VyX2xpbmtfc3RhdGUgPSBwaHlsaW5rX2xpbmtfaXNfdXAocGwpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkge1xcbjE2MzI6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XFxuMTYzMzpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbjE2MzQ6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTYzNTpcXHRcXHR9IGVsc2UgaWYgKHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCkge1xcbjE2MzY6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4xNjM3OlxcdFxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbjE2Mzg6XFx0XFx0XFx0cmV0cmlnZ2VyID0gdHJ1ZTtcXG4xNjM5OlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuMTY0MDpcXHRcXHRcXHRwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2NDE6XFx0XFx0XFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcXG4xNjQyOlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX1BIWSkge1xcbjE2NDM6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VwaHlfc3RhdGU7XFxuMTY0NDpcXHRcXHRcXHRtYWNfY29uZmlnID0gbGlua19zdGF0ZS5saW5rO1xcbjE2NDU6XFx0XFx0fSBlbHNlIHtcXG4xNjQ2OlxcdFxcdFxcdHBoeWxpbmtfbWFjX3Bjc19nZXRfc3RhdGUocGwsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG4xNjQ3OlxcdFxcbjE2NDg6XFx0XFx0XFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXFxuMTY0OTpcXHRcXHRcXHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXFxuMTY1MDpcXHRcXHRcXHQgKiBPdGhlcndpc2UsIHJlLXJlYWQgdGhlIFBDUyBzdGF0ZSB0byBnZXQgdGhlIGN1cnJlbnQgc3RhdHVzXFxuMTY1MTpcXHRcXHRcXHQgKiBvZiB0aGUgbGluay5cXG4xNjUyOlxcdFxcdFxcdCAqL1xcbjE2NTM6XFx0XFx0XFx0aWYgKCFsaW5rX3N0YXRlLmxpbmspIHtcXG4xNjU0OlxcdFxcdFxcdFxcdGlmIChjdXJfbGlua19zdGF0ZSlcXG4xNjU1OlxcdFxcdFxcdFxcdFxcdHJldHJpZ2dlciA9IHRydWU7XFxuMTY1NjpcXHRcXHRcXHRcXHRlbHNlXFxuMTY1NzpcXHRcXHRcXHRcXHRcXHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY1ODpcXHRcXHRcXHR9XFxuMTY1OTpcXHRcXG4xNjYwOlxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcXFwidXBcXFwiIHN0YXRlIGlzIHRoZSB1bmlvbiBvZiBib3RoIHRoZVxcbjE2NjE6XFx0XFx0XFx0ICogUEhZIGFuZCB0aGUgTUFDXFxuMTY2MjpcXHRcXHRcXHQgKi9cXG4xNjYzOlxcdFxcdFxcdGlmIChwaHkpXFxuMTY2NDpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgXFx1MDAyNj0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rO1xcbjE2NjU6XFx0XFxuMTY2NjpcXHRcXHRcXHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cXG4xNjY3OlxcdFxcdFxcdGlmIChwaHkgXFx1MDAyNlxcdTAwMjYgcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XFxuMTY2ODpcXHRcXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbjE2Njk6XFx0XFx0XFx0XFx0ICogZXZlbnQgaWYgdGhlIGxpbmsgaXNuJ3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cXG4xNjcwOlxcdFxcdFxcdFxcdCAqL1xcbjE2NzE6XFx0XFx0XFx0XFx0aWYgKGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVxcdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XFxuMTY3MjpcXHRcXHRcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2NzM6XFx0XFx0XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTY3NDpcXHRcXHRcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XFxuMTY3NzpcXHRcXG4xNjc4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBkb2luZyByYXRlIG1hdGNoaW5nLCB0aGVuIHRoZSBsaW5rXFxuMTY3OTpcXHRcXHRcXHRcXHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXFxuMTY4MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjgxOlxcdFxcdFxcdFxcdGlmIChwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcXG4xNjgyOlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XFxuMTY4MzpcXHRcXHRcXHRcXHRcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmc7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnNwZWVkID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcXG4xNjg1OlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XFxuMTY4NjpcXHRcXHRcXHRcXHR9XFxuMTY4NzpcXHRcXG4xNjg4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxcbjE2ODk6XFx0XFx0XFx0XFx0ICogZmxvdyBjb250cm9sIGJpdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjQxLjQwMzA1NTYwOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjg4MjExNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGBwaHlsaW5rX3Jlc29sdmVgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhlIHJlc3Qgb2YgdGhpcyBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gSSd2ZSBnb3QgYSBkZWNlbnQgZ3Jhc3Agb24gdGhlIGluaXRpYWwgcGllY2VzLCBidXQgdGhlIGRldmlsJ3Mgb2Z0ZW4gaW4gdGhlIGRldGFpbHMsIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBlZGdlIGNhc2VzIGFuZCB0aGUgbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSSB3YW50IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYWxnb3JpdGhtLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzLCBjaXJjdWxhciByZWZlcmVuY2VzLCBhbmQgdGhvc2UgbmFzdHksIGRlZXBseSBuZXN0ZWQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmVzIHRoYXQgYWx3YXlzIHNlZW0gdG8gcG9wIHVwLiBJcyBpdCB1c2luZyBhIHJvYnVzdCBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2UgbWVtb2l6YXRpb24gdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb24gbGFyZ2VyIGRlcGVuZGVuY3kgZ3JhcGhzPyBXaGF0J3MgdGhlIGVycm9yIGhhbmRsaW5nIGxpa2U/IElzIGl0IGdyYWNlZnVsLCBvciB3aWxsIGl0IGp1c3QgdGhyb3cgZXhjZXB0aW9ucyBhbGwgb3ZlciB0aGUgcGxhY2U/IEknbSBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgZW1wbG95ZWQgaW50ZXJuYWxseS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgZGljdGlvbmFyeSwgYSBncmFwaCwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IFRoZSBjaG9pY2VzIGhlcmUgaGF2ZSBhIGh1Z2UgaW1wYWN0IG9uIGVmZmljaWVuY3kgYW5kIHNjYWxhYmlsaXR5LiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHJlc291cmNlIGV4aGF1c3Rpb24gb3IgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZlY3RvcnMuIEdvdHRhIGJlIHRob3JvdWdoLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYzNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDMuNjkxMjY5ODAxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2OTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2OTA6XFx0XFx0XFx0XFx0ICovXFxuMTY5MTpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnBhdXNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5wYXVzZTtcXG4xNjkyOlxcdFxcdFxcdFxcdG1hY19jb25maWcgPSB0cnVlO1xcbjE2OTM6XFx0XFx0XFx0fVxcbjE2OTQ6XFx0XFx0fVxcbjE2OTU6XFx0XFxuMTY5NjpcXHRcXHRpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxcbjE2OTc6XFx0XFx0XFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2OTg6XFx0XFxuMTY5OTpcXHRcXHRpZiAoKG1hY19jb25maWcgXFx1MDAyNlxcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcXG4xNzAwOlxcdFxcdCAgICBwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnKSB7XFxuMTcwMTpcXHRcXHRcXHQvKiBUaGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkIG9yIGEgZm9yY2VkIG1ham9yIGNvbmZpZ3VyYXRpb25cXG4xNzAyOlxcdFxcdFxcdCAqIHdhcyByZXF1ZXN0ZWQsIHNvIGZvcmNlIHRoZSBsaW5rIGRvd24gYW5kIHRoZW4gcmVjb25maWd1cmUuXFxuMTcwMzpcXHRcXHRcXHQgKi9cXG4xNzA0OlxcdFxcdFxcdGlmIChjdXJfbGlua19zdGF0ZSkge1xcbjE3MDU6XFx0XFx0XFx0XFx0cGh5bGlua19saW5rX2Rvd24ocGwpO1xcbjE3MDY6XFx0XFx0XFx0XFx0Y3VyX2xpbmtfc3RhdGUgPSBmYWxzZTtcXG4xNzA3OlxcdFxcdFxcdH1cXG4xNzA4OlxcdFxcdFxcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE3MDk6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xcbjE3MTA6XFx0XFx0XFx0cGwtXFx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IGZhbHNlO1xcbjE3MTE6XFx0XFx0fVxcbjE3MTI6XFx0XFxuMTcxMzpcXHRcXHQvKiBJZiBjb25maWd1cmF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgZmFpbGVkLCBmb3JjZSB0aGUgbGluayBkb3duXFxuMTcxNDpcXHRcXHQgKiB1bnRpbCB3ZSBnZXQgYSBzdWNjZXNzZnVsIGNvbmZpZ3VyYXRpb24uXFxuMTcxNTpcXHRcXHQgKi9cXG4xNzE2OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFqb3JfY29uZmlnX2ZhaWxlZClcXG4xNzE3OlxcdFxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbjE3MTg6XFx0XFxuMTcxOTpcXHRcXHRpZiAobGlua19zdGF0ZS5saW5rICE9IGN1cl9saW5rX3N0YXRlKSB7XFxuMTcyMDpcXHRcXHRcXHRwbC1cXHUwMDNlb2xkX2xpbmtfc3RhdGUgPSBsaW5rX3N0YXRlLmxpbms7XFxuMTcyMTpcXHRcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluaylcXG4xNzIyOlxcdFxcdFxcdFxcdHBoeWxpbmtfbGlua19kb3duKHBsKTtcXG4xNzIzOlxcdFxcdFxcdGVsc2VcXG4xNzI0OlxcdFxcdFxcdFxcdHBoeWxpbmtfbGlua191cChwbCwgbGlua19zdGF0ZSk7XFxuMTcyNTpcXHRcXHR9XFxuMTcyNjpcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluayBcXHUwMDI2XFx1MDAyNiByZXRyaWdnZXIpIHtcXG4xNzI3OlxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xcbjE3Mjg6XFx0XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbjE3Mjk6XFx0XFx0fVxcbjE3MzA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjE3MzE6XFx0XFx0aWYgKHBoeSlcXG4xNzMyOlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNzMzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMTczNDpcXHR9XFxuMTczNTpcXHRcXG4xNzM2OlxcdHN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbjE3Mzc6XFx0e1xcbjE3Mzg6XFx0XFx0aWYgKCFwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKVxcbjE3Mzk6XFx0XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbjE3NDA6XFx0fVxcbjE3NDE6XFx0XFxuMTc0MjpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3RhdGUgPSBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlO1xcbjE3NDU6XFx0XFxuMTc0NjpcXHRcXHRzZXRfYml0KGJpdCwgXFx1MDAyNnBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xcbjE3NDc6XFx0XFx0aWYgKHN0YXRlID09IDApIHtcXG4xNzQ4OlxcdFxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG4xNzQ5OlxcdFxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG4xNzUwOlxcdFxcdH1cXG4xNzUxOlxcdH1cXG4xNzUyOlxcdFxcbjE3NTM6XFx0c3RhdGljIHZvaWQgcGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG4xNzU0OlxcdHtcXG4xNzU1OlxcdFxcdGNsZWFyX2JpdChiaXQsIFxcdTAwMjZwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcXG4xNzU2OlxcdFxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbjE3NTc6XFx0fVxcbjE3NTg6XFx0XFxuMTc1OTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuMTc2MDpcXHR7XFxuMTc2MTpcXHRcXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSBjb250YWluZXJfb2YodCwgc3RydWN0IHBoeWxpbmssIGxpbmtfcG9sbCk7XFxuMTc2MjpcXHRcXG4xNzYzOlxcdFxcdG1vZF90aW1lcih0LCBqaWZmaWVzICsgSFopO1xcbjE3NjQ6XFx0XFxuMTc2NTpcXHRcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG4xNzY2OlxcdH1cXG4xNzY3OlxcdFxcbjE3Njg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfdXBzdHJlYW1fb3BzIHNmcF9waHlsaW5rX29wcztcXG4xNzY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0My42OTE1MjU5NjFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM1OTgzMTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHlsaW5rYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3Qgd2hhdCB0aGlzIGRpZmYgaXMgYXR0ZW1wdGluZyB0byBhY2hpZXZlIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBMb29raW5nIGF0IHRoZSBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGlmIChwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpYCBhbmQgYGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKWAgYnJhbmNoZXMsIEknbSBub3RpY2luZyBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBsaW5rX3N0YXRlYCB2YXJpYWJsZSBpcyBhIGxvY2FsIHN0YWNrIHZhcmlhYmxlLCB3aGljaCBpbiB0aGVzZSBzY2VuYXJpb3MsIG9ubHkgaGFzIGl0cyBgbGlua2AgZmllbGQgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBUaGUgcmVtYWluaW5nIGZpZWxkcyB3aXRoaW4gdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3Qg4oCTIHRoaW5ncyBsaWtlIGBpbnRlcmZhY2VgLCBgcGF1c2VgLCBhbmQgYHNwZWVkYCDigJMgYXJlIGxlZnQgYXMgdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnkuXG5cbkxhdGVyLCBpbiB0aGUgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24sIHRoZSBjb2RlIHByb2NlZWRzIHRvIGNhbGwgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgIHdpdGggdGhlIGFkZHJlc3Mgb2YgdGhpcyBwb3RlbnRpYWxseSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgYGxpbmtfc3RhdGVgIHZhcmlhYmxlLiBUaGlzIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZyBsb2dpYywgdGhlbiBwcm9jZWVkcyB0byByZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRoZXNlIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGlzIGlzIGNsYXNzaWMgdW5kZWZpbmVkIGJlaGF2aW9yLCB3aGljaCBjYW4gbGVhZCB0byB1bnByZWRpY3RhYmxlIHJlc3VsdHMsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSB2YWx1ZXMgb2YgYGxpbmtfc3RhdGUuaW50ZXJmYWNlYCwgYGxpbmtfc3RhdGUucGF1c2VgIGV0Yy4gVGhpcyBjb3VsZCBtYW5pZmVzdCBpbiBzdHJhbmdlIGxpbmsgYmVoYXZpb3JzLCBpbnRlcm1pdHRlbnQgZmFpbHVyZXMsIGFuZCBnZW5lcmFsIGluc3RhYmlsaXR5LlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBwYXRjaCBpbnRlbmRzIHRvIGFkZHJlc3MgdGhpcyBpbml0aWFsaXphdGlvbiBpc3N1ZSBhbmQgZW5zdXJlIHRoYXQgYWxsIGZpZWxkcyBvZiBgbGlua19zdGF0ZWAgYXJlIGNvbnNpc3RlbnRseSBzZXQgdG8gYSBrbm93biBzdGF0ZSBiZWZvcmUgdGhleSBhcmUgdXNlZC4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IGZpeGluZyBhIGRhdGEtZGVwZW5kZW50LCBvciByYWNlIGNvbmRpdGlvbiwgb2Ygc29tZSBraW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDcuMDUxMzYxODE2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzMDM1ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19hcHBseV9tYW51YWxfZmxvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODUyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODU0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDc5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ4MDpcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDgxLVxcdGlmIChwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE2MTU9c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY5Ni1cXHRpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5NzpcXHRcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0Ny4xOTE2NzA5OTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUxMzIzNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUEhZIExpbmsgQ29uZmlndXJhdGlvbiBpbiBgcGh5bGluay5jYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgYHBoeWxpbmsuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDg1MyB0aHJvdWdoIDg3MC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBwaHlsaW5rIGhhbmRsZXMgdGhlIG5lZ290aWF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgaW50ZXJmYWNlLiBJIHJlbWVtYmVyIHRoaXMgc2VjdGlvbiBkZWFscyB3aXRoIHRoZSBQSFkgbGluayBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZ2V0dGluZyB0aGUgcmlnaHQgc3BlZWQsIGR1cGxleCwgYW5kIGF1dG9uZWdvdGlhdGlvbiBzZXR0aW5ncy4gSSBzdXNwZWN0IHRoaXMgc25pcHBldCB0b3VjaGVzIHVwb24gdGhlIFBIWSdzIGFkdmVydGlzaW5nIGNhcGFiaWxpdGllcyBhbmQgaG93IHRob3NlIGFyZSByZWNvbmNpbGVkIHdpdGggdGhlIGRyaXZlcidzIHJlcXVlc3RlZCBzZXR0aW5ncy4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgYXJlIGRlYWxpbmcgd2l0aCB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgZGV2aWNlIGFuZCB3aGljaCBzZXR0aW5ncyB0aGUgc3lzdGVtIHRoZW4gc2V0dGxlcyBvbi4gVGhlcmUgY291bGQgYmUgc29tZSBzdWJ0bGV0aWVzIGhlcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdmFyaW91cyBQSFkgdHlwZXMgb3IgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgc29tZSByZXBvcnRlZCBsaW5rIGlzc3Vlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBtaXNtYXRjaGVzIGJldHdlZW4gd2hhdCB0aGUgUEhZIGFkdmVydGlzZXMgYW5kIHdoYXQgdGhlIHVwcGVyLWxheWVyIG5ldHdvcmsgc3RhY2sgZXhwZWN0cy4gQXJlIHRoZXkgcHJpb3JpdGl6aW5nIHRoZSBQSFkncyBjYXBhYmlsaXRpZXMgb3IgdGhlIGRyaXZlcidzIHJlcXVlc3RzLCBhbmQgaG93IGRvZXMgdGhlIGNvZGUgaGFuZGxlIHRoYXQgc2VsZWN0aW9uIHByb2Nlc3M/IEknbSBhbnRpY2lwYXRpbmcgc29tZSBjb25kaXRpb25hbCBsb2dpYyBoZXJlLCBtYXliZSBjaGVja2luZyBmb3Igc3BlY2lmaWMgZmVhdHVyZSBmbGFncyBvciB2ZW5kb3Itc3BlY2lmaWMgY2FwYWJpbGl0aWVzLiBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhdXRvbmVnb3RpYXRpb24gcHJvY2VzcywgYW5kIGFueSBwb3RlbnRpYWwgZm9yY2UtbW9kZSBzZXR0aW5ncywgd2lsbCBiZSBjcml0aWNhbCB3aXRoaW4gdGhpcyBibG9jay4gQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0OS43MDQ5MDc1NDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODUwOlxcdFxcdHJldHVybiAwO1xcbiA4NTE6XFx0fVxcbiA4NTI6XFx0XFxuIDg1MzpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4gODU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbiA4NTU6XFx0e1xcbiA4NTY6XFx0XFx0LyogSWYgYXV0b25lZyBpcyBkaXNhYmxlZCwgcGF1c2UgQU4gaXMgYWxzbyBkaXNhYmxlZCAqL1xcbiA4NTc6XFx0XFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gODU4OlxcdFxcdFxcdFxcdCAgICAgICBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpKVxcbiA4NTk6XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlIFxcdTAwMjY9IH5NTE9fUEFVU0VfQU47XFxuIDg2MDpcXHRcXG4gODYxOlxcdFxcdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXFxuIDg2MjpcXHRcXHRpZiAoIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxcbiA4NjM6XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xcbiA4NjQ6XFx0fVxcbiA4NjU6XFx0XFxuIDg2NjpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuIDg2NzpcXHR7XFxuIDg2ODpcXHRcXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcXG4gODY5OlxcdFxcbiA4NzA6XFx0XFx0aWYgKHN0YXRlLVxcdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcXG4gODcxOlxcdFxcdFxcdGxpbmttb2RlX3Jlc29sdmVfcGF1c2Uoc3RhdGUtXFx1MDAzZWFkdmVydGlzaW5nLFxcbiA4NzI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0YXRlLVxcdTAwM2VscF9hZHZlcnRpc2luZyxcXG4gODczOlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dHhfcGF1c2UsIFxcdTAwMjZyeF9wYXVzZSk7XFxuIDg3NDpcXHRcXHRcXHRpZiAodHhfcGF1c2UpXFxuIDg3NTpcXHRcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgfD0gTUxPX1BBVVNFX1RYO1xcbiA4NzY6XFx0XFx0XFx0aWYgKHJ4X3BhdXNlKVxcbiA4Nzc6XFx0XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9SWDtcXG4gODc4OlxcdFxcdH1cXG4gODc5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDkuNzA1MTgwMzU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNDgxNDYwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVbmluaXRpYWxpemVkIFZhcmlhYmxlIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBgcGh5bGlua19hcHBseV9tYW51YWxfZmxvd2AgaGFzIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUsIHNwZWNpZmljYWxseSB3aXRoIGBsaW5rX3N0YXRlYCBpZiBgcGwtXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnYCBpcyBzZXQuIFRoZSBwYXRjaCBwcm92aWRlZCBzZWVtcyB0byBhZGRyZXNzIHRoaXMgYnkgaW5pdGlhbGl6aW5nIGBsaW5rX3N0YXRlYCB3aXRoIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AgaW4gY2VydGFpbiBzY2VuYXJpb3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCBmaXhpbmcgYW4gdW5pbml0IGJ1ZyFcIi5cblxuQnV0LCB3YWl0LCBJIG5lZWQgdG8gYmUgbW9yZSBtZXRob2RpY2FsIGhlcmUuIERvZXMgZml4aW5nIHRoaXMgd2FycmFudCBhIGBOZWVkc0tNU0FOPXRydWVgIGZsYWc/IExldCdzIHJlZnJlc2ggb3VyIG1lbW9yeSBvbiB0aGUgS01TQU4gZ3VpZGVsaW5lcy4gSXQncyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoICppbnRyb2R1Y2VzKiBvciAqZXhwb3NlcyogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCAqb25seSogS01TQU4gd291bGQgY2F0Y2guIFRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGlmIEtBU0FOIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgY2FuIGNhdGNoIHRoZSBpc3N1ZSwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTi4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgYmVjYXVzZSBvZiB0aGUgcmVzb3VyY2UgY29zdCBhc3NvY2lhdGVkIHdpdGggcnVubmluZyBLTVNBTi5cblxuTXkgaW1tZWRpYXRlIGd1dCByZWFjdGlvbiBpcyB0byBzYXkgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBhIGZpeCwgbm90IGEgbmV3IHByb2JsZW0uIFRoaXMgaXMgYSBjcnVjaWFsIHBvaW50OiBJcyB0aGlzIGEgZml4IG9yIGEgbmV3IGV4cG9zdXJlP1xuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGNyaXRlcmlhIGZvciBgTmVlZHNLTVNBTj10cnVlYC4gSXQncyBhbGwgYWJvdXQgc3RydWN0dXJlcyBnb2luZyB0byB1c2VyIHNwYWNlLCBsb2dpYyByZWx5aW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBhbGxvY2F0aW9uIG9mIGNvbXBsZXggc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIGZpZWxkcywgb3IgbWVzc2luZyB3aXRoIGJvdW5kcyBjaGVja3MgaW4gYSB3YXkgdGhhdCBhbGxvd3MgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgZGF0YS5cblxuQ29udmVyc2VseSwgYE5lZWRzS01TQU49ZmFsc2VgIGFwcGxpZXMgaWYgdGhlIGJ1ZyBpcyBvdXQtb2YtYm91bmRzLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4pLiBBbHNvLCBgTmVlZHNLTVNBTj1mYWxzZWAgaWYgYWxsIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIG9yIHRoZSBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLlxuXG5TbywgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBhc3NpZ25pbmcgYHBsLVx1MDAzZWxpbmtfY29uZmlnYCB0byBgbGlua19zdGF0ZWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgcGwtXHUwMDNlbGlua19jb25maWdgIGl0c2VsZiBpcyBhbHdheXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb3BpZWQuIElmIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgZWxzZXdoZXJlLCB0aGVuIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSBtYXNraW5nIG9uZSB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdpdGggYW5vdGhlciwgYW5kIHRoZSBmaXggaXMgaW5jb21wbGV0ZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgYHBsLVx1MDAzZWxpbmtfY29uZmlnYCBpcyBpbml0aWFsaXplZCB0byBiZSBzdXJlIHRoYXQgdGhlIHBhdGNoIGlzIGVmZmVjdGl2ZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYSBuZXcgdW5pbml0IG1lbW9yeSBjb25kaXRpb24gZWxzZXdoZXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo1NC43NTMzMzAwMDVaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODMzNjAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaW5rX2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE9c3RydWN0IHBoeWxpbmsge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICptYWNfb3BzO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDU6XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Ni1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjAtXFx0LyogVGhlIGxpbmsgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NjE6XFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA9c3RhdGljIHZvaWQgcGh5bGlua19jYXBzX3RvX2xpbmttb2Rlcyh1bnNpZ25lZCBsb25nICpsaW5rbW9kZXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4NC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NTogKiBwaHlsaW5rX2xpbWl0X21hY19zcGVlZCAtIGxpbWl0IHRoZSBwaHlsaW5rX2NvbmZpZyB0byBhIG1heGltdW0gc3BlZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NjogKiBAY29uZmlnOiBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg3LSAqIEBtYXhfc3BlZWQ6IG1heGltdW0gc3BlZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkyOnZvaWQgcGh5bGlua19saW1pdF9tYWNfc3BlZWQoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiBtYXhfc3BlZWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz02NTk9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX2ZpeGVkbGluayhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY3My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NDpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBzcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NTpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gRFVQTEVYX0hBTEY7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02NzYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02NzctXFx0XFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbm9kZSwgXFxcImZ1bGwtZHVwbGV4XFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2Nzg6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IERVUExFWF9GVUxMO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODQtXFx0XFx0XFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY4NTpcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODYtXFx0XFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbm9kZSwgXFxcImFzeW0tcGF1c2VcXFwiKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY4Ny1cXHRcXHRcXHRfX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2ODg6XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MTgtXFx0XFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gcHJvcFsxXSA/XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjAtXFx0XFx0XFx0XFx0XFx0XFx0RFVQTEVYX0ZVTEwgOiBEVVBMRVhfSEFMRjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyMTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBwcm9wWzJdO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzIyLVxcdFxcdFxcdGlmIChwcm9wWzNdKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzIzLVxcdFxcdFxcdFxcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MjQ6XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI1LVxcdFxcdFxcdGlmIChwcm9wWzRdKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI2LVxcdFxcdFxcdFxcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyNzpcXHRcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MzE6XFx0aWYgKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCBcXHUwMDNlIFNQRUVEXzEwMDAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjczMjpcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCAhPSBEVVBMRVhfRlVMTClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczMy1cXHRcXHRwaHlsaW5rX3dhcm4ocGwsIFxcXCJmaXhlZCBsaW5rIHNwZWNpZmllcyBoYWxmIGR1cGxleCBmb3IgJWRNYnBzIGxpbms/XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM0OlxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLnNwZWVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM5OlxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MDpcXHRwaHlsaW5rX3ZhbGlkYXRlKHBsLCBwbC1cXHUwMDNlc3VwcG9ydGVkLCBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MjpcXHRjID0gcGh5X2NhcHNfbG9va3VwKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0My1cXHRcXHRcXHQgICAgcGwtXFx1MDAzZXN1cHBvcnRlZCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1NS1cXHRcXHRsaW5rbW9kZV9vcihwbC1cXHUwMDNlc3VwcG9ydGVkLCBwbC1cXHUwMDNlc3VwcG9ydGVkLCBtYXRjaCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTY6XFx0XFx0bGlua21vZGVfb3IocGwtXFx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzU3OlxcdFxcdFxcdCAgICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcsIG1hdGNoKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzU5LVxcdFxcdHBoeWxpbmtfd2FybihwbCwgXFxcImZpeGVkIGxpbmsgJXMgZHVwbGV4ICVkTWJwcyBub3QgcmVjb2duaXNlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2MDpcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPT0gRFVQTEVYX0ZVTEwgPyBcXFwiZnVsbFxcXCIgOiBcXFwiaGFsZlxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjE6XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzYyLVxcdH1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2NDpcXHRsaW5rbW9kZV9hbmQocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjUtXFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2Ni1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2NzpcXHRwbC1cXHUwMDNlbGlua19jb25maWcubGluayA9IDE7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Njg6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmFuX2NvbXBsZXRlID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA2OlxcdFxcdHN3aXRjaCAocGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA3LVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MjgtXFx0XFx0XFx0Y2FwcyA9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgyOTpcXHRcXHRcXHRjYXBzID0gcGh5bGlua19nZXRfY2FwYWJpbGl0aWVzKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UsIGNhcHMsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0UkFURV9NQVRDSF9OT05FKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODM2LVxcdFxcdFxcdFxcdCAgICBcXFwiaW5jb3JyZWN0IGxpbmsgbW9kZSAlcyBmb3IgaW4tYmFuZCBzdGF0dXNcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4Mzc6XFx0XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg0MC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg0MTpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NDM6XFx0XFx0aWYgKHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFxcdTAwMjZwbC1cXHUwMDNlbGlua19jb25maWcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDQtXFx0XFx0XFx0cGh5bGlua19lcnIocGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODYxLVxcdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NjI6XFx0aWYgKCEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcXHRcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSBwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDIzPXN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDI1LVxcdGlmIChwbC1cXHUwMDNlcGNzIFxcdTAwMjZcXHUwMDI2IGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNjpcXHRcXHRcXHRcXHRcXHQgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNzpcXHQgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDI4LVxcdCAgICBwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKHBsLVxcdTAwM2VhY3RfbGlua19hbl9tb2RlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlxcdFxcdFxcdFxcdCAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzgzLVxcdFxcdCAgICBwaHlsaW5rX2FuX21vZGVfc3RyKHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODQ6XFx0XFx0ICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODU6XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM4NjpcXHRcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg4LVxcdC8qIFJlY29tcHV0ZSB0aGUgUENTIG5lZyBtb2RlICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg5OlxcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cXHUwMDNlcGNzLCBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzkxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NjpcXHRyZXQgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XFx0XFx0XFx0XFx0ICEhKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcXHUwMDI2IE1MT19QQVVTRV9BTikpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQxMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTM6XFx0bGlua21vZGVfY29weShzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE0LVxcdGxpbmttb2RlX3plcm8oc3RhdGUtXFx1MDAzZWxwX2FkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTU6XFx0c3RhdGUtXFx1MDAzZWludGVyZmFjZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDE2OlxcdHN0YXRlLVxcdTAwM2VyYXRlX21hdGNoaW5nID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLnJhdGVfbWF0Y2hpbmc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE3LVxcdHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MjY6XFx0XFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0Mjc6XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI4OlxcdFxcdHN0YXRlLVxcdTAwM2VwYXVzZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ0My17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDQ0OlxcdCpzdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NDUtXFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWdldF9maXhlZF9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ1ND1zdGF0aWMgdm9pZCBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgZm9yY2VfcmVzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ2OC1cXHRjYXNlIE1MT19BTl9JTkJBTkQ6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDY5OlxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDcwLVxcdFxcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE2MTU9c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzMi1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2MzM6XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MzQtXFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM1LVxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWxpbmtfZmFpbGVkKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjM2OlxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM3LVxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5OTpcXHRpZiAoKG1hY19jb25maWcgXFx1MDAyNlxcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MDAtXFx0ICAgIHBsLVxcdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcwOC1cXHRcXHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZmFsc2UsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3MDk6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcxMC1cXHRcXHRwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDM9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxODpcXHRhZHYgPSBwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE5LVxcdGxpbmttb2RlX2FuZChhZHYsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGMtXFx1MDAzZWxpbmttb2Rlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MjEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODIyOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IHN0YXRlLVxcdTAwM2VzcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MjM6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IHN0YXRlLVxcdTAwM2VkdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODI0OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5saW5rID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MjU6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmFuX2NvbXBsZXRlID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzY6ICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNy0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUgZGVzY3JpYmluZyB0aGUgbmV0d29ya1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODk5LVxcdFxcdHBsLVxcdTAwM2VsaW5rX3BvcnQgPSBQT1JUX01JSTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MDA6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGlmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMTpcXHRwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAyOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IFNQRUVEX1VOS05PV047XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAzOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDQtXFx0cGwtXFx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9ET1dOO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA5LVxcdGxpbmttb2RlX2ZpbGwocGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTEwOlxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MTE6XFx0cGh5bGlua192YWxpZGF0ZShwbCwgcGwtXFx1MDAzZXN1cHBvcnRlZCwgXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMDg4PXN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIxMzgtXFx0bGlua21vZGVfY29weShwbC1cXHUwMDNlc3VwcG9ydGVkLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjEzOTpcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIxNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzc9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLVxcdFxcdHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cXHUwMDNlaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI0NDpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUxOlxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjUyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODk9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMxNi1cXHRcXHRwbC1cXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHlfZGV2LVxcdTAwM2VpbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzE3OlxcdFxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cXHUwMDNlbGlua19pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMyOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzMjk6XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5X2RldiwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0Mjk9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzNi1cXHRcXHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUpLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQzNzpcXHRcXHQgICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTUtXFx0XFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5NjpcXHRcXHQgKiB0byB1cGRhdGUgdGhlIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyBzZXR0aW5nczpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTctXFx0XFx0ICogLSB0aGUgY29uZmlndXJhdGlvbiByZXR1cm5lZCB2aWEga3NldHRpbmdzX2dldCgpIHdpbGwgY29tZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5OC1cXHRcXHQgKiAgIGZyb20gcGh5bGliIHdoZW5ldmVyIGEgUEhZIGlzIHByZXNlbnQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTk5OlxcdFxcdCAqIC0gbGlua19jb25maWcuaW50ZXJmYWNlIHdpbGwgYmUgdXBkYXRlZCBieSB0aGUgUEhZIGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDAtXFx0XFx0ICogICBiYWNrIHZpYSBwaHlsaW5rX3BoeV9jaGFuZ2UoKSBhbmQgYSBzdWJzZXF1ZW50IHJlc29sdmUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDYtXFx0XFx0ICogICBpcyBwYXNzZWQgb24gdGhlIGxpbmsgZnJvbSB0aGUgUEhZLCBhbmQgYWxsIG9mXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA3OlxcdFxcdCAqICAgbGlua19jb25maWcue3NwZWVkLGR1cGxleCxhbl9lbmFibGVkLHBhdXNlfSBhcmUgbm90IHVzZWQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA4OlxcdFxcdCAqIC0gdGhlIG9ubHkgcG9zc2libGUgdXNlIHdvdWxkIGJlIGxpbmtfY29uZmlnLmFkdmVydGlzaW5nXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDA5LVxcdFxcdCAqICAgcGF1c2UgbW9kZXMgd2hlbiBpbiAxMDAwYmFzZS1YIG1vZGUgd2l0aCBhIFBIWSwgYnV0IGluXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDE2OlxcdGNvbmZpZyA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMTctXFx0LyogTWFzayBvdXQgdW5zdXBwb3J0ZWQgYWR2ZXJ0aXNlbWVudHMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzNS1cXHRcXHRpZiAocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDM2OlxcdFxcdFxcdGlmIChjLVxcdTAwM2VzcGVlZCAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgfHxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzc6XFx0XFx0XFx0ICAgIGMtXFx1MDAzZWR1cGxleCAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzOC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1Mi1cXHRcXHRcXHRpZiAoIWxpbmttb2RlX2VxdWFsKGNvbmZpZy5hZHZlcnRpc2luZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwNTM6XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZykpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDU0LVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTE3LVxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTE4OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IGNvbmZpZy5zcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMTk6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IGNvbmZpZy5kdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEyMTpcXHRpZiAocGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBjb25maWcuaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIyLVxcdFxcdC8qIFRoZSBpbnRlcmZhY2UgY2hhbmdlZCwgZS5nLiAxMDAwYmFzZS1YIFxcdTAwM2MtXFx1MDAzZSAyNTAwYmFzZS1YICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxMzAtXFx0XFx0XFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcXHUwMDI2Y29uZmlnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzE6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGNvbmZpZy5pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTMyOlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEzMzpcXHR9IGVsc2UgaWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTM0LVxcdFxcdFxcdFxcdCAgIGNvbmZpZy5hZHZlcnRpc2luZykpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzU6XFx0XFx0bGlua21vZGVfY29weShwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTM2LVxcdFxcdHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQocGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc0PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3OC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzk6XFx0cGF1c2UtXFx1MDAzZWF1dG9uZWcgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MDpcXHRwYXVzZS1cXHUwMDNlcnhfcGF1c2UgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MTpcXHRwYXVzZS1cXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfVFgpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTA9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTIte1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MzpcXHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NC1cXHRib29sIG1hbnVhbF9jaGFuZ2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY1PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2NzktXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgwOlxcdGlmICghbGlua21vZGVfZXF1YWwocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgxOlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Mi1cXHRcXHRjaGFuZ2VkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4NS1cXHRpZiAocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUgIT0gbW9kZSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzY4NjpcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg3LVxcdFxcdHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlID0gbW9kZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODg6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo1NC44OTE2NzYwMTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg3MTc2NjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWVtb3J5IEFsbG9jYXRpb24gRGVlcCBEaXZlOiBgcGh5bGlua19jcmVhdGUoKWAgYW5kIGBremFsbG9jYCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYHBsYCwgd2hpY2ggSSdtIGFzc3VtaW5nIGlzIGEgYHN0cnVjdCBwaHlsaW5rYCwgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCB3aXRoaW4gdGhlIGBwaHlsaW5rX2NyZWF0ZSgpYCBmdW5jdGlvbi4gVGhhdCdzIGEgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgdGhvdWdoLiBJJ2QgYmV0dGVyIGNvbmZpcm0gdGhpcyB3aXRoaW4gYHBoeWxpbmtfY3JlYXRlKClgIGl0c2VsZi4gVGhlcmUgYXJlIGEgZmV3IHJlYXNvbnMgd2h5IHRoaXMgd291bGQgYmUgb24gbXkgcmFkYXI6IEZpcnN0LCBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgYXJlIGEgY3JpdGljYWwgYXJlYSBmb3IgcGVyZm9ybWFuY2UgYW5kIGZyYWdtZW50YXRpb24gaXNzdWVzLiBXZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgcmlnaHQgYWxsb2NhdGlvbiBzdHJhdGVneSBpcyB1c2VkLiBga3phbGxvY2AgaXMgdHlwaWNhbGx5IGZpbmUuIEl0IHByb3ZpZGVzIHplcm8taW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB1c3VhbGx5IGV4YWN0bHkgd2hhdCB3ZSB3YW50LCBidXQgaXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGFkZHMgYSBzbGlnaHQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuIElmIHRoZSBzdHJ1Y3R1cmUgaXMgdmVyeSBsYXJnZSBvciBpZiBpdCdzIGluIGEgdmVyeSB0aWdodCBsb29wLCBpdCBtaWdodCBiZSB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGUgbWV0aG9kcyAoaWYgd2UgY2FuIGxpdmUgd2l0aCB0aGUgY29uc2VxdWVuY2VzKS4gU2Vjb25kLCB1bmRlcnN0YW5kaW5nIHRoZSBtZW1vcnkgbW9kZWwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSBpcyBjcml0aWNhbCBpbiBhbnkgbW9kZXJuIE9TIGFuZCBjYW4gYWZmZWN0IG1lbW9yeSBzYWZldHkgaWYgd2UgaGF2ZSBhbnkgdW5kZWZpbmVkIHZhbHVlcy4gRmluYWxseSwgYmVjYXVzZSBgcGh5bGlua19jcmVhdGVgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZXMsIGEgZ29vZCBzYW5pdHkgY2hlY2sgd291bGQgYmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXMgYSBkZWFsbG9jYXRpb24gcGF0aC4gSSBzaG91bGQgcHJvYmFibHkgYmUgcHJlcGFyZWQgdG8gY29uc2lkZXIgd2hlcmUgYHBsYCBpcyBmcmVlZCBsYXRlciBvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NTcuNzYzNDQ2MTM3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODUwOlxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4xODUxOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjE4NTI6XFx0XFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpZmFjZSxcXG4xODUzOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICptYWNfb3BzKVxcbjE4NTQ6XFx0e1xcbjE4NTU6XFx0XFx0c3RydWN0IHBoeWxpbmsgKnBsO1xcbjE4NTY6XFx0XFx0aW50IHJldDtcXG4xODU3OlxcdFxcbjE4NTg6XFx0XFx0LyogVmFsaWRhdGUgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gKi9cXG4xODU5OlxcdFxcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpKSB7XFxuMTg2MDpcXHRcXHRcXHRkZXZfZXJyKGNvbmZpZy1cXHUwMDNlZGV2LFxcbjE4NjE6XFx0XFx0XFx0XFx0XFxcInBoeWxpbms6IGVycm9yOiBlbXB0eSBzdXBwb3J0ZWRfaW50ZXJmYWNlc1xcXFxuXFxcIik7XFxuMTg2MjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4xODYzOlxcdFxcdH1cXG4xODY0OlxcdFxcbjE4NjU6XFx0XFx0cGwgPSBremFsbG9jX29iaigqcGwpO1xcbjE4NjY6XFx0XFx0aWYgKCFwbClcXG4xODY3OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbjE4Njg6XFx0XFxuMTg2OTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4xODcwOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMTg3MTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlLCBwaHlsaW5rX3Jlc29sdmUpO1xcbjE4NzI6XFx0XFxuMTg3MzpcXHRcXHRwbC1cXHUwMDNlY29uZmlnID0gY29uZmlnO1xcbjE4NzQ6XFx0XFx0aWYgKGNvbmZpZy1cXHUwMDNldHlwZSA9PSBQSFlMSU5LX05FVERFVikge1xcbjE4NzU6XFx0XFx0XFx0cGwtXFx1MDAzZW5ldGRldiA9IHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpO1xcbjE4NzY6XFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYocGwtXFx1MDAzZW5ldGRldik7XFxuMTg3NzpcXHRcXHR9IGVsc2UgaWYgKGNvbmZpZy1cXHUwMDNldHlwZSA9PSBQSFlMSU5LX0RFVikge1xcbjE4Nzg6XFx0XFx0XFx0cGwtXFx1MDAzZWRldiA9IGNvbmZpZy1cXHUwMDNlZGV2O1xcbjE4Nzk6XFx0XFx0fSBlbHNlIHtcXG4xODgwOlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTg4MTpcXHRcXHRcXHRnb3RvIGZyZWVfcGw7XFxuMTg4MjpcXHRcXHR9XFxuMTg4MzpcXHRcXG4xODg0OlxcdFxcdHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcyA9IHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKG1hY19vcHMpO1xcbjE4ODU6XFx0XFx0cGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWUgPSBwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMgXFx1MDAyNlxcdTAwMjZcXG4xODg2OlxcdFxcdFxcdFxcdCAgICAgICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzIFxcdTAwMjZcXHUwMDI2XFxuMTg4NzpcXHRcXHRcXHRcXHQgICAgICAgIXBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xcbjE4ODg6XFx0XFxuMTg4OTpcXHRcXHQvKiBTZXQgdGhlIGRlZmF1bHQgRUVFIGNvbmZpZ3VyYXRpb24gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NTcuNzY0OTYyOTc3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NTk0MTcyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQncyBpbml0aWFsaXppbmcgYSBzdGFjayB2YXJpYWJsZSBjYWxsZWQgYGxpbmtfc3RhdGVgIGZyb20gdGhlIGV4aXN0aW5nIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AuIFByZXZpb3VzbHksIGluIHRob3NlIHR3byBzcGVjaWZpYyBicmFuY2hlcywgYGxpbmtfc3RhdGVgIHdhcyBvbmx5IHBhcnRpYWxseSBpbml0aWFsaXplZCDigJMganVzdCB0aGUgYGxpbmtgIGZpZWxkLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBpc3N1ZS4gR29vZC5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoICpvbmx5KiBpbml0aWFsaXplcyBgbGlua19zdGF0ZWAuIEl0J3MgcHVsbGluZyB2YWxpZCBkYXRhIGZyb20gYW4gYWxyZWFkeSBpbml0aWFsaXplZCBzdHJ1Y3R1cmUgKGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2ApLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBpc24ndCBjcmVhdGluZyBuZXcsIHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG5vciBpcyBpdCBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgZGlyZWN0bHkgYWRkcmVzc2VkIGJ5IGluaXRpYWxpemluZyBhbiBvdGhlcndpc2UgdW5pbml0aWFsaXplZCBzdGFjayBzdHJ1Y3QgYGxpbmtfc3RhdGVgLlxuXG5UaGVyZWZvcmUsIEkgdGhpbmsgdGhpcyBpcyBhIGNsZWFyLWN1dCBjYXNlLiBUaGlzIHBhdGNoIGZpeGVzIGFuIGV4aXN0aW5nLCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtIGFuZCBJIHNlZSBubyBuZXcgS01TQU4tZGV0ZWN0YWJsZSByaXNrcyBiZWluZyBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgY29tcGlsZXIgdGVzdGluZywgYWxvbmcgd2l0aCB0aGUgdXN1YWwgc2FuaXRpemVycywgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZS4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzbid0IHdhcnJhbnRlZC4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBtZWV0cyB0aGUgZm9sbG93aW5nIGNyaXRlcmlhOiBhbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZCwgYW5kIHRoZXJlJ3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSBmZWVsIGNvbWZvcnRhYmxlIGNhbGxpbmcgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTIsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6Mzc6MDEuMjI0Mzg0MzY2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXFx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 06:34:12 +0000 UTC FinishedAt: 2026-09-06 06:37:03 +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": "641d03105cc0d2437e32fdeec164f91a4ccef6c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLINK", "PHYLIB", "USB_NET_AX8817X", "USB_LAN78XX", "NET_DSA" ], "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": "641d03105cc0d2437e32fdeec164f91a4ccef6c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PHYLINK", "PHYLIB", "USB_NET_AX8817X", "USB_LAN78XX", "NET_DSA" ], "series_id": "fe8eb401-b8a2-4f17-87da-d31dcf916117" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phylink_resolve", "phylink_start", "phylink_stop" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19yZXNvbHZlJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RhcnQmIzM0OywKICAgICYjMzQ7cGh5bGlua19zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSBvciBwbC1cdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NTI0MzI0MTRiMTk5YjZhYmRmYmJlNWE0YzU4M2QwOTcyZTMzZjM0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNjozNTo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xNjMwLDggJiM0MzsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4mIzQzO1x0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4gXHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuIFx0fSBlbHNlIGlmIChwbC1cdTAwM2VsaW5rX2ZhaWxlZCkge1xuJiM0MztcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuIFx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbiBcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbiBcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfcmVzb2x2ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1NTI0MzI0MTRiMTk5YjZhYmRmYmJlNWE0YzU4M2QwOTcyZTMzZjM0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAwNjozNTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMTYzMCw4ICYjNDM7MTYzMCwxMCBAQCBzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogCiAJaWYgKHBsLSZndDtwaHlsaW5rX2Rpc2FibGVfc3RhdGUpIHsKIAkJcGwtJmd0O2xpbmtfZmFpbGVkID0gZmFsc2U7CiYjNDM7CQlsaW5rX3N0YXRlID0gcGwtJmd0O2xpbmtfY29uZmlnOwogCQlsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTsKIAl9IGVsc2UgaWYgKHBsLSZndDtsaW5rX2ZhaWxlZCkgewomIzQzOwkJbGlua19zdGF0ZSA9IHBsLSZndDtsaW5rX2NvbmZpZzsKIAkJbGlua19zdGF0ZS5saW5rID0gZmFsc2U7CiAJCXJldHJpZ2dlciA9IHRydWU7CiAJfSBlbHNlIGlmIChwbC0mZ3Q7YWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkRpdmluZyBpbnRvIHRoZSBQSFlMSU5LIFBhdGNoKioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0byByZXZpZXcsIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGltcGFjdGluZyB0aGUgYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIGZpbGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGlmZiBpdHNlbGY7IEkmIzM5O2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gcHVsbCBpdCB1cCBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGJlZW4gY2hhbmdlZC4gS25vd2luZyB0aGlzIGNvbnRleHQgaXMga2V5LCBvZiBjb3Vyc2UhCgpPbmNlIEkgaGF2ZSB0aGUgZGlmZiBpbiBmcm9udCBvZiBtZSwgSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgdmlldy4gSSYjMzk7bSBnb2luZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsaW5lcyBhcm91bmQgbGluZSAxNjMwLCB3aGljaCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9uZWQuIERlcGVuZGluZyBvbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UsIEkgbWlnaHQgdXNlIGBncmVwcGVyYCBvciBteSBJREUgdG8gcXVpY2tseSBqdW1wIHRvIHRoZSByZWxldmFudCBjb2RlLiBUaGlzJiMzOTtsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHBpbnBvaW50IHRoZSAqd2h5KiBiZWhpbmQgdGhlIG1vZGlmaWNhdGlvbnMsIGFuZCBzZWUgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGltcGFjdGVkLiBFc3NlbnRpYWxseSwgdW5kZXJzdGFuZGluZyB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgY2hhbmdlcyBpcyBlc3NlbnRpYWwgdG8gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTYxMDpcdHN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNjExOlx0e1xuMTYxMjpcdFx0cmV0dXJuIHBsLVx1MDAzZW5ldGRldiA/IG5ldGlmX2NhcnJpZXJfb2socGwtXHUwMDNlbmV0ZGV2KSA6IHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlO1xuMTYxMzpcdH1cbjE2MTQ6XHRcbjE2MTU6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuMTYxNjpcdHtcbjE2MTc6XHRcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XG4xNjE4Olx0XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XG4xNjE5Olx0XHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcbjE2MjA6XHRcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XG4xNjIxOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuMTYyMjpcdFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcbjE2MjM6XHRcbjE2MjQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE2MjU6XHRcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE2MjY6XHRcdGlmIChwaHkpXG4xNjI3Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTYyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4xNjI5Olx0XHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XG4xNjMwOlx0XG4xNjMxOlx0XHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4xNjMyOlx0XHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4xNjMzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2MzQ6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM1Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4xNjM2Olx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2Mzc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM4Olx0XHRcdHJldHJpZ2dlciA9IHRydWU7XG4xNjM5Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4xNjQwOlx0XHRcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDE6XHRcdFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcbjE2NDI6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XG4xNjQzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VwaHlfc3RhdGU7XG4xNjQ0Olx0XHRcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XG4xNjQ1Olx0XHR9IGVsc2Uge1xuMTY0NjpcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDc6XHRcbjE2NDg6XHRcdFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXG4xNjQ5Olx0XHRcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cbjE2NTA6XHRcdFx0ICogT3RoZXJ3aXNlLCByZS1yZWFkIHRoZSBQQ1Mgc3RhdGUgdG8gZ2V0IHRoZSBjdXJyZW50IHN0YXR1c1xuMTY1MTpcdFx0XHQgKiBvZiB0aGUgbGluay5cbjE2NTI6XHRcdFx0ICovXG4xNjUzOlx0XHRcdGlmICghbGlua19zdGF0ZS5saW5rKSB7XG4xNjU0Olx0XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKVxuMTY1NTpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NTY6XHRcdFx0XHRlbHNlXG4xNjU3Olx0XHRcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NTg6XHRcdFx0fVxuMTY1OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgRGVlcGVyIGludG8gYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGBsaW5rX3N0YXRlYCoqCgpBbHJpZ2h0LCBJJiMzOTttIGF0IHRoZSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBpbml0aWFsIGdsYW5jZSBhdCBgcGh5bGlua19yZXNvbHZlYCBoYXMgZ2l2ZW4gbWUgc29tZSBjbHVlcywgYnV0IEkgbmVlZCB0byBzZWUgdGhlIGVudGlyZSBmdW5jdGlvbiwgaG93IGl0JiMzOTtzIGltcGxlbWVudGVkIGFuZCB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZSBgbGlua19zdGF0ZWAgdmFyaWFibGUgaXMgbWFuYWdlZCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBoYXZlIGEgaHVuY2ggdGhhdCB0aGlzIGBsaW5rX3N0YXRlYCBpcyBtb3JlIHRoYW4gbWVldHMgdGhlIGV5ZSwgYW5kIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgaXMgZ29pbmcgdG8gYmUga2V5IHRvIGdyYXNwaW5nIHRoZSBiZWhhdmlvciBvZiB0aGlzIHBhcnQgb2YgdGhlIHN0YWNrLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMsIHdoYXQgdHJpZ2dlcnMgdGhlbSwgYW5kIGhvdyBpdCBpbXBhY3RzIHRoZSBvdGhlciBsYXllcnMuIFRoaXMgbWVhbnMgbG9va2luZyBhdCBib3RoIGhvdyBpdCYjMzk7cyBzZXQgYnkgYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGhvdyBpdCBpcyBsYXRlciB1c2VkIGJ5IHRoZSByZXN0IG9mIHRoZSByZWxldmFudCBjb2RlLiBUaGVyZSBoYXMgdG8gYmUgYSBzdGF0ZSBtYWNoaW5lIGhlcmUsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNjYwOlx0XHRcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcJiMzNDt1cFwmIzM0OyBzdGF0ZSBpcyB0aGUgdW5pb24gb2YgYm90aCB0aGVcbjE2NjE6XHRcdFx0ICogUEhZIGFuZCB0aGUgTUFDXG4xNjYyOlx0XHRcdCAqL1xuMTY2MzpcdFx0XHRpZiAocGh5KVxuMTY2NDpcdFx0XHRcdGxpbmtfc3RhdGUubGluayBcdTAwMjY9IHBsLVx1MDAzZXBoeV9zdGF0ZS5saW5rO1xuMTY2NTpcdFxuMTY2NjpcdFx0XHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cbjE2Njc6XHRcdFx0aWYgKHBoeSBcdTAwMjZcdTAwMjYgcGwtXHUwMDNlcGh5X3N0YXRlLmxpbmspIHtcbjE2Njg6XHRcdFx0XHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxuMTY2OTpcdFx0XHRcdCAqIGV2ZW50IGlmIHRoZSBsaW5rIGlzbiYjMzk7dCBhbHJlYWR5IGRvd24sIGFuZCByZS1yZXNvbHZlLlxuMTY3MDpcdFx0XHRcdCAqL1xuMTY3MTpcdFx0XHRcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XG4xNjcyOlx0XHRcdFx0XHRyZXRyaWdnZXIgPSB0cnVlO1xuMTY3MzpcdFx0XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjc0Olx0XHRcdFx0fVxuMTY3NTpcdFxuMTY3NjpcdFx0XHRcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZTtcbjE2Nzc6XHRcbjE2Nzg6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZG9pbmcgcmF0ZSBtYXRjaGluZywgdGhlbiB0aGUgbGlua1xuMTY3OTpcdFx0XHRcdCAqIHNwZWVkL2R1cGxleCBjb21lcyBmcm9tIHRoZSBQSFlcbjE2ODA6XHRcdFx0XHQgKi9cbjE2ODE6XHRcdFx0XHRpZiAocGwtXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcbjE2ODI6XHRcdFx0XHRcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XG4xNjgzOlx0XHRcdFx0XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nO1xuMTY4NDpcdFx0XHRcdFx0bGlua19zdGF0ZS5zcGVlZCA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcbjE2ODU6XHRcdFx0XHRcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXHUwMDNlcGh5X3N0YXRlLmR1cGxleDtcbjE2ODY6XHRcdFx0XHR9XG4xNjg3Olx0XG4xNjg4Olx0XHRcdFx0LyogSWYgd2UgaGF2ZSBhIFBIWSwgd2UgbmVlZCB0byB1cGRhdGUgd2l0aCB0aGUgUEhZXG4xNjg5Olx0XHRcdFx0ICogZmxvdyBjb250cm9sIGJpdHMuXG4xNjkwOlx0XHRcdFx0ICovXG4xNjkxOlx0XHRcdFx0bGlua19zdGF0ZS5wYXVzZSA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZTtcbjE2OTI6XHRcdFx0XHRtYWNfY29uZmlnID0gdHJ1ZTtcbjE2OTM6XHRcdFx0fVxuMTY5NDpcdFx0fVxuMTY5NTpcdFxuMTY5NjpcdFx0aWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxuMTY5NzpcdFx0XHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2OTg6XHRcbjE2OTk6XHRcdGlmICgobWFjX2NvbmZpZyBcdTAwMjZcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB8fFxuMTcwMDpcdFx0ICAgIHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZykge1xuMTcwMTpcdFx0XHQvKiBUaGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkIG9yIGEgZm9yY2VkIG1ham9yIGNvbmZpZ3VyYXRpb25cbjE3MDI6XHRcdFx0ICogd2FzIHJlcXVlc3RlZCwgc28gZm9yY2UgdGhlIGxpbmsgZG93biBhbmQgdGhlbiByZWNvbmZpZ3VyZS5cbjE3MDM6XHRcdFx0ICovXG4xNzA0Olx0XHRcdGlmIChjdXJfbGlua19zdGF0ZSkge1xuMTcwNTpcdFx0XHRcdHBoeWxpbmtfbGlua19kb3duKHBsKTtcbjE3MDY6XHRcdFx0XHRjdXJfbGlua19zdGF0ZSA9IGZhbHNlO1xuMTcwNzpcdFx0XHR9XG4xNzA4Olx0XHRcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXHUwMDI2bGlua19zdGF0ZSk7XG4xNzA5Olx0XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xuMTcxMDpcdFx0XHRwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcgPSBmYWxzZTtcbjE3MTE6XHRcdH1cbjE3MTI6XHRcbjE3MTM6XHRcdC8qIElmIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGludGVyZmFjZSBmYWlsZWQsIGZvcmNlIHRoZSBsaW5rIGRvd25cbjE3MTQ6XHRcdCAqIHVudGlsIHdlIGdldCBhIHN1Y2Nlc3NmdWwgY29uZmlndXJhdGlvbi5cbjE3MTU6XHRcdCAqL1xuMTcxNjpcdFx0aWYgKHBsLVx1MDAzZW1ham9yX2NvbmZpZ19mYWlsZWQpXG4xNzE3Olx0XHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuMTcxODpcdFxuMTcxOTpcdFx0aWYgKGxpbmtfc3RhdGUubGluayAhPSBjdXJfbGlua19zdGF0ZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNDIKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQaHlsaW5rIFN0YXRlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIExvb2tpbmcgYXQgdGhpcyBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBsLSZndDtwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBwbC0mZ3Q7bGlua19mYWlsZWRgIGNvbmRpdGlvbmFsIGJsb2NrcywgaXQmIzM5O3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCB0aGUgYGxpbmtfc3RhdGVgIHZhcmlhYmxlIHdhc24mIzM5O3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQgaW4gdGhvc2Ugc2NlbmFyaW9zLiBJdCBsb29rcyBsaWtlIGl0IHdhcyBqdXN0IGEgbG9jYWwsIHVuaW5pdGlhbGl6ZWQgYHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtgLiBUaGUgbG9naWMgc2V0cyBgbGlua19zdGF0ZS5saW5rID0gZmFsc2U7YCwgYnV0IHRoZSAqcmVzdCogb2YgYGxpbmtfc3RhdGVgJiMzOTtzIGZpZWxkcyDigJMgbGlrZSBgaW50ZXJmYWNlYCwgYHBhdXNlYCBhbmQgc28gb24sIHdlcmUgbGVmdCBhcyBnYXJiYWdlIG1lbW9yeS4KCkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvdWxkIGNhdXNlIGlzc3VlcyBkb3duIHRoZSBsaW5lLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgLCBvciB0aG9zZSBjb21wYXJpc29ucyB3aXRoIGBwbC0mZ3Q7bGlua19jb25maWdgLiBUaG9zZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgYW5kIHN1YnRsZSwgaGFyZC10by1kZWJ1ZyBwcm9ibGVtcy4gVGhlIHBhdGNoJiMzOTtzIGNoYW5nZSwgd2hlcmUgYGxpbmtfc3RhdGUgPSBwbC0mZ3Q7bGlua19jb25maWc7YCAqYmVmb3JlKiB0aGUgbW9kaWZpY2F0aW9uLCBzZWVtcyBjb3JyZWN0IHRvIGVuc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgcG9wdWxhdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXggdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbiB0byB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBhIHBvdGVudGlhbCBpc3N1ZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgUUVNVSBvciBzeXprYWxsZXI/IElmIHRoaXMgaXMgdXNlZCBpbiB0aGVzZSBzZXR1cHMsIHVuaW5pdGlhbGl6ZWQgc3RhdGVzIGNvdWxkIGxlYWQgdG8gYSBjcmFzaCBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiBUaW1lIHRvIGNoZWNrIHJlYWNoYWJpbGl0eS4gTGV0IG1lIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWFyY2ggdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBmb3IgYW55IGNhbGxzIHRvIGBwaHlsaW5rX2NyZWF0ZWAgb3IgcmVsYXRlZCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIGhvdyB3aWRlbHkgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTIzPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQyOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQzLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTQ1Olx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDYtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTA6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4NzA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODcxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04ODEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE2MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mzc1MTpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMTpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc3MD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5Ni0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNTogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM2LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OS0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTEtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzODpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQxLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjEtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDU9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMy0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYwLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2Mi0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc5LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4MS0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3OS0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODEtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDEyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyMi0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4OC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyMi0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTEtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTUyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTMtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTA9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTk3LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTk4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTktICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjQ5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjUyLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3Ny0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2Nzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY3OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcxNz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzU3LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTktICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODY9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTAzLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTQ9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5NzY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDUtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTY3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzAtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzItICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg4LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI2OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3My0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3NS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTUtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTctICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMxOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzIxLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzIyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjMtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5Mj1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTAtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTExOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTItICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1ODktICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5MS0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM2OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzczLSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc1LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NC0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3My1cbm5ldC9kc2EvdXNlci5jOjI2NzQ6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzgwNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFBoeWxpbmsgVXNhZ2UqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwsIGFuZCBJJiMzOTt2ZSBjb21lIGFjcm9zcyBhIGNvdXBsZSBvZiBpbnRlcmVzdGluZyBmaWxlczogYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGF4ODg3NzJfcGh5bGlua19zZXR1cGAgZnVuY3Rpb24sIGFuZCBgZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguY2AsIGZvY3VzaW5nIG9uIHRoZSBgbGFuNzh4eF9waHlsaW5rX3NldHVwYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBib3RoIG9mIHRoZXNlIFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIHVzaW5nIHBoeWxpbmssIHdoaWNoIGlzIHNpZ25pZmljYW50LiBUaGlzIGxpa2VseSBtZWFucyB0aGV5JiMzOTtyZSBiZWluZyB0ZXN0ZWQgZWZmZWN0aXZlbHkgdmlhIHN5emthbGxlciwgb3IgcG90ZW50aWFsbHkgbGV2ZXJhZ2VkIGluIFVTQiByYXcgbW9kZSBvciBnYWRnZXQgY29uZmlndXJhdGlvbnMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBzaG91bGQgYmUgbG9va2luZyBhdCBob3cgdGhleSYjMzk7cmUgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBuZXR3b3JraW5nIGNvbXBvbmVudHMsIHN1Y2ggYXMgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSwgZXRodG9vbCBpb2N0bHMvbmV0bGluayBpbnRlcmFjdGlvbnMsIGFuZCB0aGUgbmV0ZGV2IHVwL2Rvd24gbGlmZWN5Y2xlLiBJIG5lZWQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgcGh5bGluayBlbmFibGVzIGhlcmUuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IEtjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgcGh5bGluaz8gTGV0IG1lIHNlYXJjaCBmb3IgJiMzNDtQSFlMSU5LJiMzNDsgZGlyZWN0bHkgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBkaXJlY3Qgd2F5IHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjk4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIFBIWSBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgUEhZIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgbGV0JiMzOTtzIGZvY3VzIG9uIHRoZSBmaXJzdCB0aGlydHkgbGluZXMg4oCTIHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgY29yZSBkZWZpbml0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBsYWlkIG91dC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gc3ltYm9sIGZvciBlbmFibGluZyBQSFkgc3VwcG9ydCwgbWF5YmUgc29tZSBnZW5lcmFsIG9wdGlvbnMgZm9yIHNlbGVjdGluZyBiZXR3ZWVuIGRpZmZlcmVudCBQSFkgaW50ZXJmYWNlcyAobGlrZSBNSUksIFJHTUlJLCBTR01JSSwgZXRjLiksIGFuZCBvZiBjb3Vyc2UsIHRob3NlIGNydWNpYWwgZGVwZW5kZW5jaWVzIG9uIHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suIFVuZGVyc3RhbmRpbmcgdGhpcyBpbml0aWFsIHNlY3Rpb24gd2lsbCBwcm92aWRlIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZ3Jhc3BpbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZm9yIHRoZXNlIHBoeXNpY2FsIGxheWVyIHRyYW5zY2VpdmVycy4gSSBhbnRpY2lwYXRlIGEgd2VsbC1zdHJ1Y3R1cmVkIHNlcmllcyBvZiBgY29uZmlnYCBibG9ja3MsIG1heWJlIHNvbWUgYG1lbnVjb25maWdgIG9wdGlvbnMgZm9yIHRoZSB1c2VyIHRvIHNlbGVjdCBzcGVjaWZpYyBmZWF0dXJlcyBvciBQSFkgdHlwZXMsIGFuZCBob3BlZnVsbHksIHNvbWUgY2xlYXIgZXhwbGFuYXRpb25zIGluIHRoZSBjb21tZW50cyB0byBndWlkZSBkZXZlbG9wZXJzLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgYmFja2JvbmUgZm9yIGludGVncmF0aW5nIHZhcmlvdXMgUEhZIGRldmljZXMsIHNvIGEgZGVlcCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBzdHJ1Y3R1cmUgYW5kIGxvZ2ljIGlzIGVzc2VudGlhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4OTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSBnZXR0aW5nIGNob3NlbiB3aGVuIHNvbWVvbmUgc3BlY2lmaWVzIFBIWUxJTksuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY29tbW9uIHN1c3BlY3RzIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMsIHJlYWxseSDigJMgZHJpdmVycyBsaWtlIFVTQl9MQU43OFhYLCBVU0JfTkVUX0FYODgxNzlfMTc4QSwgb3IgbWF5YmUgb25lIG9mIHRoZSBBU0lYIGRyaXZlcnMuIFRob3NlIGFyZSB0aGUgb25lcyBJJiMzOTtkIGV4cGVjdCB0byBzZWUuCgpUbyBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgbG9naWMgZGljdGF0aW5nIHdoaWNoIGRyaXZlcnMgYXJlIGNvbXBpbGVkIGJhc2VkIG9uIHZhcmlvdXMgb3B0aW9ucyBpcyBkZWZpbmVkLiBUaGF0JiMzOTtsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHNlbGVjdGlvbiBydWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBIWUxJTksmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC05MS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6OTI6XHRzZWxlY3QgUEhZTElOS1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC05My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctNi1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnOjc6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnLTIyLVx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXHRpbXBseSBORVRfU0VMRlRFU1RTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjI2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTgzLVx0c2VsZWN0IEZTTF9QUV9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo4NDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFx1MDAyNlx1MDAyNiBGU0xfRk1BTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNi1cdHNlbGVjdCBQQ1NfTFlOWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTI9Y29uZmlnIEZTTF9EUEFBMl9FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTIFx1MDAyNlx1MDAyNiBGU0xfTUNfRFBJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6NTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy02LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcdTAwMjZcdTAwMjYgRlNMX01DX0RQSU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjM4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM3LVx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjM4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01NS1cdHNlbGVjdCBOWFBfTlRNUFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NTY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTcxLVx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo3MjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy01LVx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy01LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZzo2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Mi1cdHNlbGVjdCBNVk1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjQtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy04OS1cdHNlbGVjdCBNVk1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTEtXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnPTY9Y29uZmlnIFBSRVNURVJBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE3LVx0c2VsZWN0IFBJTkNUUkxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xOS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTMxLVx0c2VsZWN0IFBMRE1GV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnPTQ1PWNvbmZpZyBMQU43NDNYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTEtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTctXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc9MT1jb25maWcgU1BBUlg1X1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy04LVx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0xMC1cdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZz0xNT1jb25maWcgTVNDQ19PQ0VMT1RfU1dJVENIX0xJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xOS1cdHNlbGVjdCBQQUNLSU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9NDI9Y29uZmlnIFJFTkVTQVNfRVRIRVJfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ3LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00OS1cdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05LVx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExLVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc9MjY9Y29uZmlnIFRFSFVUSV9UTjQwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDItXHRzZWxlY3QgUEFHRV9QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWc9MjY9Y29uZmlnIFhJTElOWF9BWElfRU1BQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI5LVx0ZGVwZW5kcyBvbiBYSUxJTlhfRE1BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0zMS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZz04PWNvbmZpZyBQQ1NfWFBDU1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgWFBDU1wmIzM0O1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNS1cdHNlbGVjdCBNSUlcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExNjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY5LVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNzA6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVx0c2VsZWN0IEFYODg3OTZCX1BIWVxuLS1cbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy05LVx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbm5ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWctMTEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzMjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBJbnF1aXJ5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JraW5nIGRyaXZlcnMgLSBzcGVjaWZpY2FsbHkgYFVTQl9MQU43OFhYYCwgYFVTQl9ORVRfQVg4ODE3WGAsIGFuZCBgTkVUX0RTQWAuIFRoZXkgYWxsIHNlZW0gdG8gdGllIGludG8gYFBIWUxJTktgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgd29ydGggZGlnZ2luZyBpbnRvLiBJIGtub3cgc3l6a2FsbGVyIGFuZCBVU0IgZnV6emluZyBhcmUgdXNlZCB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCBhbmQgRFNBLCB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSwgZ2V0cyBhIGxvdCBvZiBmdXp6aW5nIGF0dGVudGlvbiB0aHJvdWdoIG5ldGxpbmssIHN3aXRjaGRldiwgYW5kIHRoZSBsaWtlLiBOb3csIGBwaHlsaW5rYCBpdHNlbGYgaXMsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgYSBwcmV0dHkgY29yZSBwaWVjZSBvZiBuZXR3b3JraW5nLiBJdCBzaXRzIHJpZ2h0IGluIHRoZSBkcml2ZXIgUEhZIGxheWVyLgoKU28sIHdoZXJlIGlzIHRoaXMgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkPyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGNhbGxlciBhbmQgaG93IGl0JiMzOTtzIGludm9rZWQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgc28gSSYjMzk7bGwgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciAmIzM0O3Jlc29sdmUmIzM0OyBkaXJlY3RseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBhbmQgdGhlIGltbWVkaWF0ZSBjb250ZXh0LiBGcm9tIHRoZXJlLCBJIGNhbiB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCBzZWUgd2hlcmUgdGhlIHZ1bG5lcmFiaWxpdGllcyBjb3VsZCBleGlzdCwgZ2l2ZW4gdGhlIGZ1enppbmcgZWZmb3J0cyBiZWluZyBkb25lIG9uIHRoZXNlIHJlbGF0ZWQgYXJlYXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc29sdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE9c3RydWN0IHBoeWxpbmsge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzAtXHRzdHJ1Y3QgbXV0ZXggc3RhdGVfbXV0ZXg7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOlx0LyogU2VyaWFsaXplIHVwZGF0ZXMgdG8gcGwtXHUwMDNlcGh5ZGV2IHdpdGggcGh5bGlua19yZXNvbHZlKCkgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzItXHRzdHJ1Y3QgbXV0ZXggcGh5ZGV2X211dGV4O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQtXHR1bnNpZ25lZCBpbnQgcGh5X2liX21vZGU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc1Olx0c3RydWN0IHdvcmtfc3RydWN0IHJlc29sdmU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2LVx0dW5zaWduZWQgaW50IHBjc19uZWdfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2NS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODY2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZV9hbl9wYXVzZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODY3LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg3MC1cdGlmIChzdGF0ZS1cdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODcxOlx0XHRsaW5rbW9kZV9yZXNvbHZlX3BhdXNlKHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NzItXHRcdFx0XHQgICAgICAgc3RhdGUtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTAtXHRzdGF0ZS1cdTAwM2VwYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDUxOlx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1Mi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNjEwPXN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjE0LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE1OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTYte1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE3Olx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYxOC1cdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NDgtXHRcdC8qIFRoZSBQQ1MgbWF5IGhhdmUgYSBsYXRjaGluZyBsaW5rLWZhaWwgaW5kaWNhdG9yLiBJZiB0aGUgbGlua1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjQ5Olx0XHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NTAtXHRcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2NjgtXHRcdFx0LyogSWYgdGhlIGludGVyZmFjZSBoYXMgY2hhbmdlZCwgZm9yY2UgYSBsaW5rIGRvd25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY2OTpcdFx0XHQgKiBldmVudCBpZiB0aGUgbGluayBpc24mIzM5O3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY3MC1cdFx0XHQgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MjctXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mjg6XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MjktXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM3LXtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTczOC1cdGlmICghcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM5Olx0XHRxdWV1ZV93b3JrKHN5c3RlbV9wb3dlcl9lZmZpY2llbnRfd3EsIFx1MDAyNnBsLVx1MDAzZXJlc29sdmUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQwLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0MS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0MjpzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQ3LVx0aWYgKHN0YXRlID09IDApIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0ODpcdFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0OTpcdFx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NTM6c3RhdGljIHZvaWQgcGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1NC17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTUtXHRjbGVhcl9iaXQoYml0LCBcdTAwMjZwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzU2Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc1OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzY0LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzY1Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NjYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTg1MD1zdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODcwLVx0bXV0ZXhfaW5pdChcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NzE6XHRJTklUX1dPUksoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSwgcGh5bGlua19yZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg3Mi1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NDk9dm9pZCBwaHlsaW5rX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk1NC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1NTpcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTYtXHRrZnJlZShwbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTc3PXN0YXRpYyB2b2lkIHBoeWxpbmtfcGh5X2NoYW5nZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIHVwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjAwMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjAwMzpcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDA0LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM0ND12b2lkIHBoeWxpbmtfZGlzY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM2My1cdGlmIChwaHkpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM2NDpcdFx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM2NS1cdFx0cGh5X2Rpc2Nvbm5lY3QocGh5KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3My1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc0Olx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzUtXHRwaHlsaW5rX2RiZyhwbCwgXCYjMzQ7JXMgbGluayAlc1xcblwmIzM0Oywgd2hhdCwgdXAgPyBcJiMzNDt1cFwmIzM0OyA6IFwmIzM0O2Rvd25cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxMj1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MTUtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MTY6XHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0Mjk9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0NTYtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0NTc6XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0OTk9dm9pZCBwaHlsaW5rX3N0b3Aoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxMi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxMzpcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUxNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2MTM9dm9pZCBwaHlsaW5rX3N1c3BlbmQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIG1hY193b2wpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjIzLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjI0Olx0XHQvKiBTdG9wIHRoZSByZXNvbHZlciBicmluZ2luZyB0aGUgbGluayB1cCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjI1LVx0XHRfX3NldF9iaXQoUEhZTElOS19ESVNBQkxFX01BQ19XT0wsIFx1MDAyNnBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMwLVx0XHRcdCAqIGJ1dCBvbmUgd291bGQgaG9wZSBhbGwgcGFja2V0cyBoYXZlIGJlZW4gc2VudC4gVGhpc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjMxOlx0XHRcdCAqIGFsc28gbWVhbnMgcGh5bGlua19yZXNvbHZlKCkgd2lsbCBkbyBub3RoaW5nLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMyLVx0XHRcdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Mz12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2OTgtXHRcdFx0ICogdGhlIHRydWUgbGluayBzdGF0ZSB3aWxsIGJlIHByaW50ZWQgd2hlbiB3ZSBydW4gYVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjk5Olx0XHRcdCAqIHJlc29sdmUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MDAtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzEwLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzExOlx0XHQvKiBSZS1lbmFibGUgYW5kIHJlLXJlc29sdmUgdGhlIGxpbmsgcGFyYW1ldGVycyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlx0XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9NQUNfV09MKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTk5LVx0XHQgKiAtIGxpbmtfY29uZmlnLmludGVyZmFjZSB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhlIFBIWSBjYWxsaW5nXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMDA6XHRcdCAqICAgYmFjayB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIGEgc3Vic2VxdWVudCByZXNvbHZlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDAxLVx0XHQgKiAtIGluaXRpYWwgbGluayBjb25maWd1cmF0aW9uIGZvciBQSFkgbW9kZSBjb21lcyBmcm9tIHRoZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE5MD1pbnQgcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTAtXHQgKiBjYXVzZSBwaHlsaWIgdG8gcmVuZWdvdGlhdGUgKGlmIEFOIGlzIGVuYWJsZWQpIHdoaWNoIHdpbGwgaW4gdHVyblxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjUxOlx0ICogY2FsbCBvdXIgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIHRyaWdnZXIgYSByZXNvbHZlLiAgTm90ZSB0aGF0XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTItXHQgKiB3ZSBjYW4mIzM5O3QgaG9sZCBvdXIgc3RhdGUgbXV0ZXggd2hpbGUgY2FsbGluZyBwaHlfc2V0X2FzeW1fcGF1c2UoKS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTgtXHQvKiBJZiB0aGUgbWFudWFsIHBhdXNlIHNldHRpbmdzIGNoYW5nZWQsIG1ha2Ugc3VyZSB3ZSB0cmlnZ2VyIGFcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI1OTpcdCAqIHJlc29sdmUgdG8gdXBkYXRlIHRoZWlyIHN0YXRlOyB3ZSBjYW4gbm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjYwLVx0ICogbGluayB3aWxsIGN5Y2xlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2My1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjY0Olx0XHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2NS1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MDE9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua19kb3duKHZvaWQgKnVwc3RyZWFtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkwNzpcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9MSU5LKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwOC19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTEwPXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfdXAodm9pZCAqdXBzdHJlYW0pXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTE1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozOTE2Olx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5MTctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk2OD1zdGF0aWMgc3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM5ODMtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5ODQ6dm9pZCBwaHlsaW5rX3Jlc29sdmVfYzczKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMDItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMDM6XHRwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDAwNTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc29sdmVfYzczKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDAwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDAwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV9jMzdfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMjctXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMjg6XHRwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDI5LX1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzODQ9dm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzODctXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzODg6XHRwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHBsLCBQSFlMSU5LX0RJU0FCTEVfUkVQTEFZKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OS19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00NDA3PXZvaWQgcGh5bGlua19yZXBsYXlfbGlua19lbmQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQxNi1cdHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IHRydWU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MTc6XHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9SRVBMQVkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE4Olx0Zmx1c2hfd29yayhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQxOS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Nzc3CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDU2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgUGh5bGluayBGaXgmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBleGVjdXRhYmxlIGxvZ2ljIHdpdGhpbiB0aGUgY29yZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmdXp6aW5nIHRhcmdldCwgcmlwZSBmb3IgY2F0Y2hpbmcgdW5leHBlY3RlZCBzdGF0ZXMgb3IgZGF0YSBjb3JydXB0aW9uLiBUaGUgZmFjdCB0aGF0IGBwaHlsaW5rX3Jlc29sdmVgIGdldHMgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGEgcmFuZ2Ugb2YgZXZlbnRzLCBsaWtlIGxpbmsgc3RhdGUgY2hhbmdlcywgcGh5bGluayBzdGFydC9zdG9wLCBhbmQgZXZlbiBldGh0b29sIGNvbW1hbmRzLCBtYWtlcyBpdCBhbiBhdHRyYWN0aXZlIHRhcmdldCBkdWUgdG8gaXRzIGJyb2FkIGV4cG9zdXJlLiBQbHVzLCBJIGtub3cgdGhpcyBjb2RlIGlzIGFsc28gcmVhY2hhYmxlIHRocm91Z2ggdmlydHVhbGl6ZWQgbmV0d29yayBkZXZpY2VzIOKAkyB0aGluayBVU0IgYWRhcHRlcnMgb3IgRFNBIHN3aXRjaGVzIOKAkyB3aGljaCBhcmUgZWFzaWx5IHNwdW4gdXAgaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIHNpZ25pZmljYW50bHkgc2ltcGxpZmllcyB0aGUgZnV6emluZyBzZXR1cC4KCkkmIzM5O3ZlIGRldGVybWluZWQgdGhlIGZvbGxvd2luZzogdGhpcyBpcyBhICpXb3J0aEZ1enppbmcqIHNpdHVhdGlvbi4gSSBpZGVudGlmaWVkIHRoZSAqRm9jdXNTeW1ib2xzKiBhcyBgcGh5bGlua19yZXNvbHZlYCBpdHNlbGYsIGFuZCBwZXJoYXBzIGFsc28gYHBoeWxpbmtfc3RhcnRgIGFuZCBgcGh5bGlua19zdG9wYCBhcyBsaWtlbHkgZW50cnkgcG9pbnRzLiBUaGUgKkVuYWJsZUNvbmZpZ3MqIGluY2x1ZGUgYFBIWUxJTktgLCBgUEhZTElCYCwgYW5kIGVpdGhlciBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIG9yIGBVU0JfTkVUX0FYODgxN1hgLiBJdCBhcHBlYXJzIGBQSFlMSU5LYCBpcyB0cmlzdGF0ZSBhbmQgc2VsZWN0ZWQgYnkgYFBIWUxJQmAgYW5kIGBTV1BIWWAsIHNvIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBlbmFibGVkLCBvciBwb3NzaWJseSBqdXN0IGVuYWJsZSBgUEhZTElOS2AgZGlyZWN0bHkgaWYgdGhhdCYjMzk7cyBhbiBvcHRpb24uIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIG15IHdvcmsgYWdhaW5zdCB0aGUgZ3VpZGVsaW5lczogdGhlIHJlYWNoYWJpbGl0eSBpcyB0aGVyZSwgdGhlIHJlYXNvbmluZyBpcyBzb2xpZCwgYW5kIEkmIzM5O3ZlIHRhcmdldGVkIG5vbi11YmlxdWl0b3VzLCBwYXRjaC1zcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgSSYjMzk7bSByZWFkeSB0byBjcmFmdCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQSFlMSU5LJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX0xBTjc4WFgmIzM0OywKICAgICYjMzQ7TkVUX0RTQSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeWxpbmtfcmVzb2x2ZSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BIWUxJTksmIzM0OywKICAgICYjMzQ7UEhZTElCJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfTEFONzhYWCYjMzQ7LAogICAgJiMzNDtORVRfRFNBJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5bGlua19yZXNvbHZlJiMzNDssCiAgICAmIzM0O3BoeWxpbmtfc3RhcnQmIzM0OywKICAgICYjMzQ7cGh5bGlua19zdG9wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwaHlsaW5rX3Jlc29sdmVgIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZSBgbGlua19zdGF0ZWAgc3RydWN0dXJlIGZyb20gYHBsLVx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgc3RhY2sgdmFyaWFibGUgYnVnIGluIHBoeWxpbmtfcmVzb2x2ZSgpIGJ5IGluaXRpYWxpemluZyBsaW5rX3N0YXRlIHdpdGggcGwtXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXHUwMDNlbGlua19mYWlsZWQgaXMgc2V0LCBwcmlvciB0byBzZXR0aW5nIGxpbmtfc3RhdGUubGluayA9IGZhbHNlIGFuZCBwYXNzaW5nIGxpbmtfc3RhdGUgdG8gZG93bnN0cmVhbSBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgcGh5bGluayBzdHJ1Y3R1cmUgaXMgemVyby1hbGxvY2F0ZWQgdmlhIGt6YWxsb2MgdXBvbiBjcmVhdGlvbiwgYW5kIGxpbmtfc3RhdGUgaXMgbm93IGZ1bGx5IGluaXRpYWxpemVkIG9uIGFsbCBicmFuY2hlcyBiZWZvcmUgYW55IG9mIGl0cyBmaWVsZHMgYXJlIHJlYWQuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcGF0aHMsIGRhdGEgc3RydWN0dXJlcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xNjMwLDggJiM0MzsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAKIAlpZiAocGwtJmd0O3BoeWxpbmtfZGlzYWJsZV9zdGF0ZSkgewogCQlwbC0mZ3Q7bGlua19mYWlsZWQgPSBmYWxzZTsKJiM0MzsJCWxpbmtfc3RhdGUgPSBwbC0mZ3Q7bGlua19jb25maWc7CiAJCWxpbmtfc3RhdGUubGluayA9IGZhbHNlOwogCX0gZWxzZSBpZiAocGwtJmd0O2xpbmtfZmFpbGVkKSB7CiYjNDM7CQlsaW5rX3N0YXRlID0gcGwtJmd0O2xpbmtfY29uZmlnOwogCQlsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTsKIAkJcmV0cmlnZ2VyID0gdHJ1ZTsKIAl9IGVsc2UgaWYgKHBsLSZndDthY3RfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCB0aGlua2luZyBhbG91ZCBhcyBJIGdvOgoKKipJbnNwZWN0aW5nIHRoZSBgcGh5bGluay5jYCBDb2RlKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXRjaC4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbiwgYXJvdW5kIGxpbmUgMTYzMC4gR2l2ZW4gdGhlIGNvbnRleHQsIHRoaXMgc291bmRzIGxpa2UgdGhlIGxpa2VseSBwb2ludCB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgaW50ZXJhY3Rpb25zIGFyZSB0YWtpbmcgcGxhY2UuIEkmIzM5O2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQsIGlmIGF2YWlsYWJsZSwgb3IganVzdCBvcGVuIHRoZSBmaWxlIGFuZCBzY3JvbGwgdGhlcmUgbWFudWFsbHksIHRvIGdldCBhIHByZWNpc2UgbG9vay4gRnJvbSB0aGVyZSBJJiMzOTtsbCBiZSBhYmxlIHRvIHRyYWNlIGV4YWN0bHkgd2hhdCBpcyBoYXBwZW5pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTYxMDpcdHN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNjExOlx0e1xuMTYxMjpcdFx0cmV0dXJuIHBsLVx1MDAzZW5ldGRldiA/IG5ldGlmX2NhcnJpZXJfb2socGwtXHUwMDNlbmV0ZGV2KSA6IHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlO1xuMTYxMzpcdH1cbjE2MTQ6XHRcbjE2MTU6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuMTYxNjpcdHtcbjE2MTc6XHRcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XG4xNjE4Olx0XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XG4xNjE5Olx0XHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcbjE2MjA6XHRcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XG4xNjIxOlx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xuMTYyMjpcdFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcbjE2MjM6XHRcbjE2MjQ6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE2MjU6XHRcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE2MjY6XHRcdGlmIChwaHkpXG4xNjI3Olx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTYyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4xNjI5Olx0XHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XG4xNjMwOlx0XG4xNjMxOlx0XHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4xNjMyOlx0XHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4xNjMzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2MzQ6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM1Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4xNjM2Olx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbjE2Mzc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNjM4Olx0XHRcdHJldHJpZ2dlciA9IHRydWU7XG4xNjM5Olx0XHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4xNjQwOlx0XHRcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDE6XHRcdFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcbjE2NDI6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XG4xNjQzOlx0XHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VwaHlfc3RhdGU7XG4xNjQ0Olx0XHRcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XG4xNjQ1Olx0XHR9IGVsc2Uge1xuMTY0NjpcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NDc6XHRcbjE2NDg6XHRcdFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXG4xNjQ5Olx0XHRcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cbjE2NTA6XHRcdFx0ICogT3RoZXJ3aXNlLCByZS1yZWFkIHRoZSBQQ1Mgc3RhdGUgdG8gZ2V0IHRoZSBjdXJyZW50IHN0YXR1c1xuMTY1MTpcdFx0XHQgKiBvZiB0aGUgbGluay5cbjE2NTI6XHRcdFx0ICovXG4xNjUzOlx0XHRcdGlmICghbGlua19zdGF0ZS5saW5rKSB7XG4xNjU0Olx0XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKVxuMTY1NTpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NTY6XHRcdFx0XHRlbHNlXG4xNjU3Olx0XHRcdFx0XHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE2NTg6XHRcdFx0fVxuMTY1OTpcdFxuMTY2MDpcdFx0XHQvKiBJZiB3ZSBoYXZlIGEgcGh5LCB0aGUgXCYjMzQ7dXBcJiMzNDsgc3RhdGUgaXMgdGhlIHVuaW9uIG9mIGJvdGggdGhlXG4xNjYxOlx0XHRcdCAqIFBIWSBhbmQgdGhlIE1BQ1xuMTY2MjpcdFx0XHQgKi9cbjE2NjM6XHRcdFx0aWYgKHBoeSlcbjE2NjQ6XHRcdFx0XHRsaW5rX3N0YXRlLmxpbmsgXHUwMDI2PSBwbC1cdTAwM2VwaHlfc3RhdGUubGluaztcbjE2NjU6XHRcbjE2NjY6XHRcdFx0LyogT25seSB1cGRhdGUgaWYgdGhlIFBIWSBsaW5rIGlzIHVwICovXG4xNjY3Olx0XHRcdGlmIChwaHkgXHUwMDI2XHUwMDI2IHBsLVx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XG4xNjY4Olx0XHRcdFx0LyogSWYgdGhlIGludGVyZmFjZSBoYXMgY2hhbmdlZCwgZm9yY2UgYSBsaW5rIGRvd25cbjE2Njk6XHRcdFx0XHQgKiBldmVudCBpZiB0aGUgbGluayBpc24mIzM5O3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cbjE2NzA6XHRcdFx0XHQgKi9cbjE2NzE6XHRcdFx0XHRpZiAobGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSkge1xuMTY3MjpcdFx0XHRcdFx0cmV0cmlnZ2VyID0gdHJ1ZTtcbjE2NzM6XHRcdFx0XHRcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xuMTY3NDpcdFx0XHRcdH1cbjE2NzU6XHRcbjE2NzY6XHRcdFx0XHRsaW5rX3N0YXRlLmludGVyZmFjZSA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XG4xNjc3Olx0XG4xNjc4Olx0XHRcdFx0LyogSWYgd2UgYXJlIGRvaW5nIHJhdGUgbWF0Y2hpbmcsIHRoZW4gdGhlIGxpbmtcbjE2Nzk6XHRcdFx0XHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXG4xNjgwOlx0XHRcdFx0ICovXG4xNjgxOlx0XHRcdFx0aWYgKHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nKSB7XG4xNjgyOlx0XHRcdFx0XHRsaW5rX3N0YXRlLnJhdGVfbWF0Y2hpbmcgPVxuMTY4MzpcdFx0XHRcdFx0XHRwbC1cdTAwM2VwaHlfc3RhdGUucmF0ZV9tYXRjaGluZztcbjE2ODQ6XHRcdFx0XHRcdGxpbmtfc3RhdGUuc3BlZWQgPSBwbC1cdTAwM2VwaHlfc3RhdGUuc3BlZWQ7XG4xNjg1Olx0XHRcdFx0XHRsaW5rX3N0YXRlLmR1cGxleCA9IHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XG4xNjg2Olx0XHRcdFx0fVxuMTY4NzpcdFxuMTY4ODpcdFx0XHRcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxuMTY4OTpcdFx0XHRcdCAqIGZsb3cgY29udHJvbCBiaXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byBgcGh5bGlua19yZXNvbHZlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhlIHJlc3Qgb2YgdGhpcyBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gSSYjMzk7dmUgZ290IGEgZGVjZW50IGdyYXNwIG9uIHRoZSBpbml0aWFsIHBpZWNlcywgYnV0IHRoZSBkZXZpbCYjMzk7cyBvZnRlbiBpbiB0aGUgZGV0YWlscywgYW5kIEkgbmVlZCB0byBzZWUgaG93IGl0IGhhbmRsZXMgdGhlIGVkZ2UgY2FzZXMgYW5kIHRoZSBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLiBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhbGdvcml0aG0uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzLCBjaXJjdWxhciByZWZlcmVuY2VzLCBhbmQgdGhvc2UgbmFzdHksIGRlZXBseSBuZXN0ZWQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmVzIHRoYXQgYWx3YXlzIHNlZW0gdG8gcG9wIHVwLiBJcyBpdCB1c2luZyBhIHJvYnVzdCBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2UgbWVtb2l6YXRpb24gdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb24gbGFyZ2VyIGRlcGVuZGVuY3kgZ3JhcGhzPyBXaGF0JiMzOTtzIHRoZSBlcnJvciBoYW5kbGluZyBsaWtlPyBJcyBpdCBncmFjZWZ1bCwgb3Igd2lsbCBpdCBqdXN0IHRocm93IGV4Y2VwdGlvbnMgYWxsIG92ZXIgdGhlIHBsYWNlPyBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyBlbXBsb3llZCBpbnRlcm5hbGx5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBkaWN0aW9uYXJ5LCBhIGdyYXBoLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gVGhlIGNob2ljZXMgaGVyZSBoYXZlIGEgaHVnZSBpbXBhY3Qgb24gZWZmaWNpZW5jeSBhbmQgc2NhbGFiaWxpdHkuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGltcGxlbWVudGF0aW9uIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gcmVzb3VyY2UgZXhoYXVzdGlvbiBvciBwb3RlbnRpYWwgZGVuaWFsLW9mLXNlcnZpY2UgdmVjdG9ycy4gR290dGEgYmUgdGhvcm91Z2guIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE2OTA6XHRcdFx0XHQgKi9cbjE2OTE6XHRcdFx0XHRsaW5rX3N0YXRlLnBhdXNlID0gcGwtXHUwMDNlcGh5X3N0YXRlLnBhdXNlO1xuMTY5MjpcdFx0XHRcdG1hY19jb25maWcgPSB0cnVlO1xuMTY5MzpcdFx0XHR9XG4xNjk0Olx0XHR9XG4xNjk1Olx0XG4xNjk2Olx0XHRpZiAocGwtXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSAhPSBNTE9fQU5fRklYRUQpXG4xNjk3Olx0XHRcdHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3cocGwsIFx1MDAyNmxpbmtfc3RhdGUpO1xuMTY5ODpcdFxuMTY5OTpcdFx0aWYgKChtYWNfY29uZmlnIFx1MDAyNlx1MDAyNiBsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIHx8XG4xNzAwOlx0XHQgICAgcGwtXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnKSB7XG4xNzAxOlx0XHRcdC8qIFRoZSBpbnRlcmZhY2UgaGFzIGNoYW5nZWQgb3IgYSBmb3JjZWQgbWFqb3IgY29uZmlndXJhdGlvblxuMTcwMjpcdFx0XHQgKiB3YXMgcmVxdWVzdGVkLCBzbyBmb3JjZSB0aGUgbGluayBkb3duIGFuZCB0aGVuIHJlY29uZmlndXJlLlxuMTcwMzpcdFx0XHQgKi9cbjE3MDQ6XHRcdFx0aWYgKGN1cl9saW5rX3N0YXRlKSB7XG4xNzA1Olx0XHRcdFx0cGh5bGlua19saW5rX2Rvd24ocGwpO1xuMTcwNjpcdFx0XHRcdGN1cl9saW5rX3N0YXRlID0gZmFsc2U7XG4xNzA3Olx0XHRcdH1cbjE3MDg6XHRcdFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE3MDk6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gbGlua19zdGF0ZS5pbnRlcmZhY2U7XG4xNzEwOlx0XHRcdHBsLVx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IGZhbHNlO1xuMTcxMTpcdFx0fVxuMTcxMjpcdFxuMTcxMzpcdFx0LyogSWYgY29uZmlndXJhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIGZhaWxlZCwgZm9yY2UgdGhlIGxpbmsgZG93blxuMTcxNDpcdFx0ICogdW50aWwgd2UgZ2V0IGEgc3VjY2Vzc2Z1bCBjb25maWd1cmF0aW9uLlxuMTcxNTpcdFx0ICovXG4xNzE2Olx0XHRpZiAocGwtXHUwMDNlbWFqb3JfY29uZmlnX2ZhaWxlZClcbjE3MTc6XHRcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNzE4Olx0XG4xNzE5Olx0XHRpZiAobGlua19zdGF0ZS5saW5rICE9IGN1cl9saW5rX3N0YXRlKSB7XG4xNzIwOlx0XHRcdHBsLVx1MDAzZW9sZF9saW5rX3N0YXRlID0gbGlua19zdGF0ZS5saW5rO1xuMTcyMTpcdFx0XHRpZiAoIWxpbmtfc3RhdGUubGluaylcbjE3MjI6XHRcdFx0XHRwaHlsaW5rX2xpbmtfZG93bihwbCk7XG4xNzIzOlx0XHRcdGVsc2VcbjE3MjQ6XHRcdFx0XHRwaHlsaW5rX2xpbmtfdXAocGwsIGxpbmtfc3RhdGUpO1xuMTcyNTpcdFx0fVxuMTcyNjpcdFx0aWYgKCFsaW5rX3N0YXRlLmxpbmsgXHUwMDI2XHUwMDI2IHJldHJpZ2dlcikge1xuMTcyNzpcdFx0XHRwbC1cdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xuMTcyODpcdFx0XHRxdWV1ZV93b3JrKHN5c3RlbV9wb3dlcl9lZmZpY2llbnRfd3EsIFx1MDAyNnBsLVx1MDAzZXJlc29sdmUpO1xuMTcyOTpcdFx0fVxuMTczMDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjE3MzE6XHRcdGlmIChwaHkpXG4xNzMyOlx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4xNzMzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjE3MzQ6XHR9XG4xNzM1Olx0XG4xNzM2Olx0c3RhdGljIHZvaWQgcGh5bGlua19ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwpXG4xNzM3Olx0e1xuMTczODpcdFx0aWYgKCFwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpXG4xNzM5Olx0XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzQwOlx0fVxuMTc0MTpcdFxuMTc0MjpcdHN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUoc3RydWN0IHBoeWxpbmsgKnBsLCBpbnQgYml0KVxuMTc0MzpcdHtcbjE3NDQ6XHRcdHVuc2lnbmVkIGxvbmcgc3RhdGUgPSBwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGU7XG4xNzQ1Olx0XG4xNzQ2Olx0XHRzZXRfYml0KGJpdCwgXHUwMDI2cGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcbjE3NDc6XHRcdGlmIChzdGF0ZSA9PSAwKSB7XG4xNzQ4Olx0XHRcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzQ5Olx0XHRcdGZsdXNoX3dvcmsoXHUwMDI2cGwtXHUwMDNlcmVzb2x2ZSk7XG4xNzUwOlx0XHR9XG4xNzUxOlx0fVxuMTc1MjpcdFxuMTc1MzpcdHN0YXRpYyB2b2lkIHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwsIGludCBiaXQpXG4xNzU0Olx0e1xuMTc1NTpcdFx0Y2xlYXJfYml0KGJpdCwgXHUwMDI2cGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcbjE3NTY6XHRcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xuMTc1NzpcdH1cbjE3NTg6XHRcbjE3NTk6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG4xNzYwOlx0e1xuMTc2MTpcdFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHQsIHN0cnVjdCBwaHlsaW5rLCBsaW5rX3BvbGwpO1xuMTc2MjpcdFxuMTc2MzpcdFx0bW9kX3RpbWVyKHQsIGppZmZpZXMgJiM0MzsgSFopO1xuMTc2NDpcdFxuMTc2NTpcdFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XG4xNzY2Olx0fVxuMTc2NzpcdFxuMTc2ODpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3Vwc3RyZWFtX29wcyBzZnBfcGh5bGlua19vcHM7XG4xNzY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGh5bGlua2AgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3Qgd2hhdCB0aGlzIGRpZmYgaXMgYXR0ZW1wdGluZyB0byBhY2hpZXZlIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBMb29raW5nIGF0IHRoZSBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGlmIChwbC0mZ3Q7cGh5bGlua19kaXNhYmxlX3N0YXRlKWAgYW5kIGBlbHNlIGlmIChwbC0mZ3Q7bGlua19mYWlsZWQpYCBicmFuY2hlcywgSSYjMzk7bSBub3RpY2luZyBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBsaW5rX3N0YXRlYCB2YXJpYWJsZSBpcyBhIGxvY2FsIHN0YWNrIHZhcmlhYmxlLCB3aGljaCBpbiB0aGVzZSBzY2VuYXJpb3MsIG9ubHkgaGFzIGl0cyBgbGlua2AgZmllbGQgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBUaGUgcmVtYWluaW5nIGZpZWxkcyB3aXRoaW4gdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3Qg4oCTIHRoaW5ncyBsaWtlIGBpbnRlcmZhY2VgLCBgcGF1c2VgLCBhbmQgYHNwZWVkYCDigJMgYXJlIGxlZnQgYXMgdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnkuCgpMYXRlciwgaW4gdGhlIGBwaHlsaW5rX3Jlc29sdmVgIGZ1bmN0aW9uLCB0aGUgY29kZSBwcm9jZWVkcyB0byBjYWxsIGBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93YCB3aXRoIHRoZSBhZGRyZXNzIG9mIHRoaXMgcG90ZW50aWFsbHkgcGFydGlhbGx5IGluaXRpYWxpemVkIGBsaW5rX3N0YXRlYCB2YXJpYWJsZS4gVGhpcyBmdW5jdGlvbiwgYW5kIHRoZSBmb2xsb3dpbmcgbG9naWMsIHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBmcm9tIGFuZCB3cml0ZSB0byB0aGVzZSB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGhpcyBpcyBjbGFzc2ljIHVuZGVmaW5lZCBiZWhhdmlvciwgd2hpY2ggY2FuIGxlYWQgdG8gdW5wcmVkaWN0YWJsZSByZXN1bHRzLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB0aGUgdmFsdWVzIG9mIGBsaW5rX3N0YXRlLmludGVyZmFjZWAsIGBsaW5rX3N0YXRlLnBhdXNlYCBldGMuIFRoaXMgY291bGQgbWFuaWZlc3QgaW4gc3RyYW5nZSBsaW5rIGJlaGF2aW9ycywgaW50ZXJtaXR0ZW50IGZhaWx1cmVzLCBhbmQgZ2VuZXJhbCBpbnN0YWJpbGl0eS4KCk15IGltbWVkaWF0ZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIHBhdGNoIGludGVuZHMgdG8gYWRkcmVzcyB0aGlzIGluaXRpYWxpemF0aW9uIGlzc3VlIGFuZCBlbnN1cmUgdGhhdCBhbGwgZmllbGRzIG9mIGBsaW5rX3N0YXRlYCBhcmUgY29uc2lzdGVudGx5IHNldCB0byBhIGtub3duIHN0YXRlIGJlZm9yZSB0aGV5IGFyZSB1c2VkLiBUaGUgcGF0Y2ggaXMgcHJvYmFibHkgZml4aW5nIGEgZGF0YS1kZXBlbmRlbnQsIG9yIHJhY2UgY29uZGl0aW9uLCBvZiBzb21lIGtpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg1Mi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NTQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE0NTQ9c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDc5LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDgwOlx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0ODEtXHRpZiAocGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTYxNT1zdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY5Ni1cdGlmIChwbC1cdTAwM2VhY3RfbGlua19hbl9tb2RlICE9IE1MT19BTl9GSVhFRClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5NzpcdFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2OTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQSFkgTGluayBDb25maWd1cmF0aW9uIGluIGBwaHlsaW5rLmNgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhlIGBwaHlsaW5rLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA4NTMgdGhyb3VnaCA4NzAuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgcGh5bGluayBoYW5kbGVzIHRoZSBuZWdvdGlhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgUEhZIGludGVyZmFjZS4gSSByZW1lbWJlciB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgUEhZIGxpbmsgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgY3JpdGljYWwgZm9yIGdldHRpbmcgdGhlIHJpZ2h0IHNwZWVkLCBkdXBsZXgsIGFuZCBhdXRvbmVnb3RpYXRpb24gc2V0dGluZ3MuIEkgc3VzcGVjdCB0aGlzIHNuaXBwZXQgdG91Y2hlcyB1cG9uIHRoZSBQSFkmIzM5O3MgYWR2ZXJ0aXNpbmcgY2FwYWJpbGl0aWVzIGFuZCBob3cgdGhvc2UgYXJlIHJlY29uY2lsZWQgd2l0aCB0aGUgZHJpdmVyJiMzOTtzIHJlcXVlc3RlZCBzZXR0aW5ncy4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgYXJlIGRlYWxpbmcgd2l0aCB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgZGV2aWNlIGFuZCB3aGljaCBzZXR0aW5ncyB0aGUgc3lzdGVtIHRoZW4gc2V0dGxlcyBvbi4gVGhlcmUgY291bGQgYmUgc29tZSBzdWJ0bGV0aWVzIGhlcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdmFyaW91cyBQSFkgdHlwZXMgb3IgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgc29tZSByZXBvcnRlZCBsaW5rIGlzc3Vlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgb24gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWwgbWlzbWF0Y2hlcyBiZXR3ZWVuIHdoYXQgdGhlIFBIWSBhZHZlcnRpc2VzIGFuZCB3aGF0IHRoZSB1cHBlci1sYXllciBuZXR3b3JrIHN0YWNrIGV4cGVjdHMuIEFyZSB0aGV5IHByaW9yaXRpemluZyB0aGUgUEhZJiMzOTtzIGNhcGFiaWxpdGllcyBvciB0aGUgZHJpdmVyJiMzOTtzIHJlcXVlc3RzLCBhbmQgaG93IGRvZXMgdGhlIGNvZGUgaGFuZGxlIHRoYXQgc2VsZWN0aW9uIHByb2Nlc3M/IEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgY29uZGl0aW9uYWwgbG9naWMgaGVyZSwgbWF5YmUgY2hlY2tpbmcgZm9yIHNwZWNpZmljIGZlYXR1cmUgZmxhZ3Mgb3IgdmVuZG9yLXNwZWNpZmljIGNhcGFiaWxpdGllcy4gSSBoYXZlIGEgZmVlbGluZyB0aGUgYXV0b25lZ290aWF0aW9uIHByb2Nlc3MsIGFuZCBhbnkgcG90ZW50aWFsIGZvcmNlLW1vZGUgc2V0dGluZ3MsIHdpbGwgYmUgY3JpdGljYWwgd2l0aGluIHRoaXMgYmxvY2suIEFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NTA6XHRcdHJldHVybiAwO1xuIDg1MTpcdH1cbiA4NTI6XHRcbiA4NTM6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbiA4NTQ6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuIDg1NTpcdHtcbiA4NTY6XHRcdC8qIElmIGF1dG9uZWcgaXMgZGlzYWJsZWQsIHBhdXNlIEFOIGlzIGFsc28gZGlzYWJsZWQgKi9cbiA4NTc6XHRcdGlmICghbGlua21vZGVfdGVzdF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXV0b25lZ19CSVQsXG4gODU4Olx0XHRcdFx0ICAgICAgIHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nKSlcbiA4NTk6XHRcdFx0c3RhdGUtXHUwMDNlcGF1c2UgXHUwMDI2PSB+TUxPX1BBVVNFX0FOO1xuIDg2MDpcdFxuIDg2MTpcdFx0LyogTWFudWFsIGNvbmZpZ3VyYXRpb24gb2YgcGF1c2UgbW9kZXMgKi9cbiA4NjI6XHRcdGlmICghKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxuIDg2MzpcdFx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuIDg2NDpcdH1cbiA4NjU6XHRcbiA4NjY6XHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG4gODY3Olx0e1xuIDg2ODpcdFx0Ym9vbCB0eF9wYXVzZSwgcnhfcGF1c2U7XG4gODY5Olx0XG4gODcwOlx0XHRpZiAoc3RhdGUtXHUwMDNlZHVwbGV4ID09IERVUExFWF9GVUxMKSB7XG4gODcxOlx0XHRcdGxpbmttb2RlX3Jlc29sdmVfcGF1c2Uoc3RhdGUtXHUwMDNlYWR2ZXJ0aXNpbmcsXG4gODcyOlx0XHRcdFx0XHQgICAgICAgc3RhdGUtXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXG4gODczOlx0XHRcdFx0XHQgICAgICAgXHUwMDI2dHhfcGF1c2UsIFx1MDAyNnJ4X3BhdXNlKTtcbiA4NzQ6XHRcdFx0aWYgKHR4X3BhdXNlKVxuIDg3NTpcdFx0XHRcdHN0YXRlLVx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9UWDtcbiA4NzY6XHRcdFx0aWYgKHJ4X3BhdXNlKVxuIDg3NzpcdFx0XHRcdHN0YXRlLVx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9SWDtcbiA4Nzg6XHRcdH1cbiA4Nzk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVbmluaXRpYWxpemVkIFZhcmlhYmxlIEJ1ZyBGaXgqKgoKT2theSwgc28gYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgIGhhcyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGlzc3VlLCBzcGVjaWZpY2FsbHkgd2l0aCBgbGlua19zdGF0ZWAgaWYgYHBsLSZndDtmb3JjZV9tYWpvcl9jb25maWdgIGlzIHNldC4gVGhlIHBhdGNoIHByb3ZpZGVkIHNlZW1zIHRvIGFkZHJlc3MgdGhpcyBieSBpbml0aWFsaXppbmcgYGxpbmtfc3RhdGVgIHdpdGggYHBsLSZndDtsaW5rX2NvbmZpZ2AgaW4gY2VydGFpbiBzY2VuYXJpb3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCBmaXhpbmcgYW4gdW5pbml0IGJ1ZyEmIzM0Oy4KCkJ1dCwgd2FpdCwgSSBuZWVkIHRvIGJlIG1vcmUgbWV0aG9kaWNhbCBoZXJlLiBEb2VzIGZpeGluZyB0aGlzIHdhcnJhbnQgYSBgTmVlZHNLTVNBTj10cnVlYCBmbGFnPyBMZXQmIzM5O3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIHRoZSBLTVNBTiBndWlkZWxpbmVzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoICppbnRyb2R1Y2VzKiBvciAqZXhwb3NlcyogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCAqb25seSogS01TQU4gd291bGQgY2F0Y2guIFRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGlmIEtBU0FOIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgY2FuIGNhdGNoIHRoZSBpc3N1ZSwgdGhlcmUmIzM5O3Mgbm8gbmVlZCBmb3IgS01TQU4uIFRoaXMgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIGJlY2F1c2Ugb2YgdGhlIHJlc291cmNlIGNvc3QgYXNzb2NpYXRlZCB3aXRoIHJ1bm5pbmcgS01TQU4uCgpNeSBpbW1lZGlhdGUgZ3V0IHJlYWN0aW9uIGlzIHRvIHNheSBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBsb29rcyBsaWtlIGEgZml4LCBub3QgYSBuZXcgcHJvYmxlbS4gVGhpcyBpcyBhIGNydWNpYWwgcG9pbnQ6IElzIHRoaXMgYSBmaXggb3IgYSBuZXcgZXhwb3N1cmU/CgpOb3csIGxldCYjMzk7cyBicmVhayBkb3duIHRoZSBjcml0ZXJpYSBmb3IgYE5lZWRzS01TQU49dHJ1ZWAuIEl0JiMzOTtzIGFsbCBhYm91dCBzdHJ1Y3R1cmVzIGdvaW5nIHRvIHVzZXIgc3BhY2UsIGxvZ2ljIHJlbHlpbmcgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIGFsbG9jYXRpb24gb2YgY29tcGxleCBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBvciBtZXNzaW5nIHdpdGggYm91bmRzIGNoZWNrcyBpbiBhIHdheSB0aGF0IGFsbG93cyBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBkYXRhLgoKQ29udmVyc2VseSwgYE5lZWRzS01TQU49ZmFsc2VgIGFwcGxpZXMgaWYgdGhlIGJ1ZyBpcyBvdXQtb2YtYm91bmRzLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4pLiBBbHNvLCBgTmVlZHNLTVNBTj1mYWxzZWAgaWYgYWxsIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIG9yIHRoZSBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4KClNvLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBhc3NpZ25pbmcgYHBsLSZndDtsaW5rX2NvbmZpZ2AgdG8gYGxpbmtfc3RhdGVgLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXRzZWxmIGlzIGFsd2F5cyBmdWxseSBpbml0aWFsaXplZCB3aGVuIGNvcGllZC4gSWYgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXNuJiMzOTt0IHByb3Blcmx5IGluaXRpYWxpemVkIGVsc2V3aGVyZSwgdGhlbiB0aGUgcGF0Y2ggaXMgZXNzZW50aWFsbHkgbWFza2luZyBvbmUgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3aXRoIGFub3RoZXIsIGFuZCB0aGUgZml4IGlzIGluY29tcGxldGUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgYHBsLSZndDtsaW5rX2NvbmZpZ2AgaXMgaW5pdGlhbGl6ZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBwYXRjaCBpcyBlZmZlY3RpdmUgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhIG5ldyB1bmluaXQgbWVtb3J5IGNvbmRpdGlvbiBlbHNld2hlcmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpbmtfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQxPXN0cnVjdCBwaHlsaW5rIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0LVx0Y29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqbWFjX29wcztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDU6XHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDYtXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYwLVx0LyogVGhlIGxpbmsgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2MTpcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19jb25maWc7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwPXN0YXRpYyB2b2lkIHBoeWxpbmtfY2Fwc190b19saW5rbW9kZXModW5zaWduZWQgbG9uZyAqbGlua21vZGVzLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODU6ICogcGh5bGlua19saW1pdF9tYWNfc3BlZWQgLSBsaW1pdCB0aGUgcGh5bGlua19jb25maWcgdG8gYSBtYXhpbXVtIHNwZWVkXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NjogKiBAY29uZmlnOiBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4Ny0gKiBAbWF4X3NwZWVkOiBtYXhpbXVtIHNwZWVkXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5Mjp2b2lkIHBoeWxpbmtfbGltaXRfbWFjX3NwZWVkKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1MzIgbWF4X3NwZWVkKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NjU5PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9maXhlZGxpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjczLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2NzQ6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gc3BlZWQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NTpcdFx0cGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gRFVQTEVYX0hBTEY7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY3Ni1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc3LVx0XHRpZiAoZndub2RlX3Byb3BlcnR5X3JlYWRfYm9vbChmaXhlZF9ub2RlLCBcJiMzNDtmdWxsLWR1cGxleFwmIzM0OykpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3ODpcdFx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBEVVBMRVhfRlVMTDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg0LVx0XHRcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY4NTpcdFx0XHRcdCAgcGwtXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODYtXHRcdGlmIChmd25vZGVfcHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX25vZGUsIFwmIzM0O2FzeW0tcGF1c2VcJiMzNDspKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODctXHRcdFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2ODg6XHRcdFx0XHQgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzE4LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MTk6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gcHJvcFsxXSA/XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyMC1cdFx0XHRcdFx0XHREVVBMRVhfRlVMTCA6IERVUExFWF9IQUxGO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MjE6XHRcdFx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBwcm9wWzJdO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjItXHRcdFx0aWYgKHByb3BbM10pXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyMy1cdFx0XHRcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyNDpcdFx0XHRcdFx0ICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcyNS1cdFx0XHRpZiAocHJvcFs0XSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI2LVx0XHRcdFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Mjc6XHRcdFx0XHRcdCAgcGwtXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjgtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczMC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzMxOlx0aWYgKHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkIFx1MDAzZSBTUEVFRF8xMDAwIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MzI6XHQgICAgcGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4ICE9IERVUExFWF9GVUxMKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzMtXHRcdHBoeWxpbmtfd2FybihwbCwgXCYjMzQ7Zml4ZWQgbGluayBzcGVjaWZpZXMgaGFsZiBkdXBsZXggZm9yICVkTWJwcyBsaW5rP1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM0Olx0XHRcdCAgICAgcGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjczOTpcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MDpcdHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVx1MDAzZXN1cHBvcnRlZCwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NDEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MjpcdGMgPSBwaHlfY2Fwc19sb29rdXAocGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQzLVx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIHRydWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzU1LVx0XHRsaW5rbW9kZV9vcihwbC1cdTAwM2VzdXBwb3J0ZWQsIHBsLVx1MDAzZXN1cHBvcnRlZCwgbWF0Y2gpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTY6XHRcdGxpbmttb2RlX29yKHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTc6XHRcdFx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLCBtYXRjaCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OS1cdFx0cGh5bGlua193YXJuKHBsLCBcJiMzNDtmaXhlZCBsaW5rICVzIGR1cGxleCAlZE1icHMgbm90IHJlY29nbmlzZWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2MDpcdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9PSBEVVBMRVhfRlVMTCA/IFwmIzM0O2Z1bGxcJiMzNDsgOiBcJiMzNDtoYWxmXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjE6XHRcdFx0ICAgICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2Mi1cdH1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzYzLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjQ6XHRsaW5rbW9kZV9hbmQocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjUtXHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzY2LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Njc6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5saW5rID0gMTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzY4Olx0cGwtXHUwMDNlbGlua19jb25maWcuYW5fY29tcGxldGUgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzM9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDY6XHRcdHN3aXRjaCAocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwNy1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MjgtXHRcdFx0Y2FwcyA9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODI5Olx0XHRcdGNhcHMgPSBwaHlsaW5rX2dldF9jYXBhYmlsaXRpZXMocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlLCBjYXBzLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzAtXHRcdFx0XHRcdFx0XHRSQVRFX01BVENIX05PTkUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODM2LVx0XHRcdFx0ICAgIFwmIzM0O2luY29ycmVjdCBsaW5rIG1vZGUgJXMgZm9yIGluLWJhbmQgc3RhdHVzXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4Mzc6XHRcdFx0XHQgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg0MTpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODQyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NDM6XHRcdGlmIChwaHlsaW5rX3ZhbGlkYXRlKHBsLCBwbC1cdTAwM2VzdXBwb3J0ZWQsIFx1MDAyNnBsLVx1MDAzZWxpbmtfY29uZmlnKSkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDQtXHRcdFx0cGh5bGlua19lcnIocGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz04NTM9c3RhdGljIHZvaWQgcGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjEtXHQvKiBNYW51YWwgY29uZmlndXJhdGlvbiBvZiBwYXVzZSBtb2RlcyAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NjI6XHRpZiAoIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX0FOKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODYzOlx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAyMz1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMjUtXHRpZiAocGwtXHUwMDNlcGNzIFx1MDAyNlx1MDAyNiBsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNjpcdFx0XHRcdFx0IHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNzpcdCAgICBwaHlfaW50ZXJmYWNlX21vZGVfaXNfODAyM3oocGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAyOC1cdCAgICBwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUpKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjAtXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXHUwMDNlcGNzLCBwbC1cdTAwM2VwY3NfbmVnX21vZGUsIHN0YXRlLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlx0XHRcdFx0ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMi1cdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEzNzU9c3RhdGljIGludCBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODMtXHRcdCAgICBwaHlsaW5rX2FuX21vZGVfc3RyKHBsLVx1MDAzZXJlcV9saW5rX2FuX21vZGUpLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg0Olx0XHQgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODU6XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg2Olx0XHQgICAgcGwtXHUwMDNlbGlua19jb25maWcucGF1c2UpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg4LVx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM4OTpcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5MS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzOTUtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NjpcdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE0MDc9c3RhdGljIHZvaWQgcGh5bGlua19tYWNfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDEyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDEzOlx0bGlua21vZGVfY29weShzdGF0ZS1cdTAwM2VhZHZlcnRpc2luZywgcGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE0LVx0bGlua21vZGVfemVybyhzdGF0ZS1cdTAwM2VscF9hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTU6XHRzdGF0ZS1cdTAwM2VpbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTY6XHRzdGF0ZS1cdTAwM2VyYXRlX21hdGNoaW5nID0gcGwtXHUwMDNlbGlua19jb25maWcucmF0ZV9tYXRjaGluZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQxNy1cdHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID0gMDtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjUtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI2Olx0XHRzdGF0ZS1cdTAwM2VzcGVlZCA9ICBwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQyNzpcdFx0c3RhdGUtXHUwMDNlZHVwbGV4ID0gcGwtXHUwMDNlbGlua19jb25maWcuZHVwbGV4O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI4Olx0XHRzdGF0ZS1cdTAwM2VwYXVzZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDI5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ0MT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDQzLXtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ0NDpcdCpzdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDQ1LVx0aWYgKHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VnZXRfZml4ZWRfc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ2OC1cdGNhc2UgTUxPX0FOX0lOQkFORDpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ2OTpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDcwLVx0XHRpZiAobGlua19zdGF0ZS5pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTYxNT1zdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzMi1cdFx0cGwtXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTYzMzpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM0LVx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzNS1cdH0gZWxzZSBpZiAocGwtXHUwMDNlbGlua19mYWlsZWQpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTYzNjpcdFx0bGlua19zdGF0ZSA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM3LVx0XHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2OTgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2OTk6XHRpZiAoKG1hY19jb25maWcgXHUwMDI2XHUwMDI2IGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcwMC1cdCAgICBwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MDgtXHRcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXHUwMDI2bGlua19zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3MDk6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzEwLVx0XHRwbC1cdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDM9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgxNy1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxODpcdGFkdiA9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE5LVx0bGlua21vZGVfYW5kKGFkdiwgcGwtXHUwMDNlc3VwcG9ydGVkLCBjLVx1MDAzZWxpbmttb2Rlcyk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODIxLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODIyOlx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBzdGF0ZS1cdTAwM2VzcGVlZDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgyMzpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IHN0YXRlLVx1MDAzZWR1cGxleDtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgyNDpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmxpbmsgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODI1Olx0cGwtXHUwMDNlbGlua19jb25maWcuYW5fY29tcGxldGUgPSAxO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODI2LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNjogKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNy0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZSBkZXNjcmliaW5nIHRoZSBuZXR3b3JrXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODUwOnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4OTktXHRcdHBsLVx1MDAzZWxpbmtfcG9ydCA9IFBPUlRfTUlJO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAwOlx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gaWZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MDE6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMjpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMzpcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA0LVx0cGwtXHUwMDNlcGNzX3N0YXRlID0gUENTX1NUQVRFX0RPV047XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA5LVx0bGlua21vZGVfZmlsbChwbC1cdTAwM2VzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTEwOlx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkxMTpcdHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVx1MDAzZXN1cHBvcnRlZCwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTEyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjA4OD1zdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjEzOC1cdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlc3VwcG9ydGVkLCBzdXBwb3J0ZWQpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMTM5Olx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjE0MC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzc9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0My1cdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHktXHUwMDNlaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjQ0Olx0XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cdTAwM2VsaW5rX2ludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0NS1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTAtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNTE6XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI4OT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMxNi1cdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHlfZGV2LVx1MDAzZWludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMxNzpcdFx0cGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXHUwMDNlbGlua19pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMTgtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzI4LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzI5Olx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5X2RldiwgcGwtXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDI5PXZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM2LVx0XHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0Mzc6XHRcdCAgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk3OT1pbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5NS1cdFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTk2Olx0XHQgKiB0byB1cGRhdGUgdGhlIHBsLVx1MDAzZWxpbmtfY29uZmlnIHNldHRpbmdzOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTk3LVx0XHQgKiAtIHRoZSBjb25maWd1cmF0aW9uIHJldHVybmVkIHZpYSBrc2V0dGluZ3NfZ2V0KCkgd2lsbCBjb21lXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTgtXHRcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5OTpcdFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDAwLVx0XHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDYtXHRcdCAqICAgaXMgcGFzc2VkIG9uIHRoZSBsaW5rIGZyb20gdGhlIFBIWSwgYW5kIGFsbCBvZlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA3Olx0XHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA4Olx0XHQgKiAtIHRoZSBvbmx5IHBvc3NpYmxlIHVzZSB3b3VsZCBiZSBsaW5rX2NvbmZpZy5hZHZlcnRpc2luZ1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDA5LVx0XHQgKiAgIHBhdXNlIG1vZGVzIHdoZW4gaW4gMTAwMGJhc2UtWCBtb2RlIHdpdGggYSBQSFksIGJ1dCBpblxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAxNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzAxNjpcdGNvbmZpZyA9IHBsLVx1MDAzZWxpbmtfY29uZmlnO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDE3LVx0LyogTWFzayBvdXQgdW5zdXBwb3J0ZWQgYWR2ZXJ0aXNlbWVudHMgKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMzUtXHRcdGlmIChwbC1cdTAwM2VyZXFfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCkge1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDM2Olx0XHRcdGlmIChjLVx1MDAzZXNwZWVkICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLnNwZWVkIHx8XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzc6XHRcdFx0ICAgIGMtXHUwMDNlZHVwbGV4ICE9IHBsLVx1MDAzZWxpbmtfY29uZmlnLmR1cGxleClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzOC1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1Mi1cdFx0XHRpZiAoIWxpbmttb2RlX2VxdWFsKGNvbmZpZy5hZHZlcnRpc2luZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzA1MzpcdFx0XHRcdFx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1NC1cdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzExNy1cdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTE4Olx0cGwtXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBjb25maWcuc3BlZWQ7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMTk6XHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBjb25maWcuZHVwbGV4O1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIwLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTIxOlx0aWYgKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBjb25maWcuaW50ZXJmYWNlKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxMjItXHRcdC8qIFRoZSBpbnRlcmZhY2UgY2hhbmdlZCwgZS5nLiAxMDAwYmFzZS1YIFx1MDAzYy1cdTAwM2UgMjUwMGJhc2UtWCAqL1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzMC1cdFx0XHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZmFsc2UsIFx1MDAyNmNvbmZpZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzE6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGNvbmZpZy5pbnRlcmZhY2U7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzI6XHRcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzM6XHR9IGVsc2UgaWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzNC1cdFx0XHRcdCAgIGNvbmZpZy5hZHZlcnRpc2luZykpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEzNTpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzEzNi1cdFx0cGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChwbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc0PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzk6XHRwYXVzZS1cdTAwM2VhdXRvbmVnID0gISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODA6XHRwYXVzZS1cdTAwM2VyeF9wYXVzZSA9ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgxOlx0cGF1c2UtXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4Mi19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkwPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5Mi17XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTM6XHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcdTAwMjZwbC1cdTAwM2VsaW5rX2NvbmZpZztcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NC1cdGJvb2wgbWFudWFsX2NoYW5nZWQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY1PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjc5LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgwOlx0aWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgc3RhdGUtXHUwMDNlYWR2ZXJ0aXNpbmcpKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODE6XHRcdGxpbmttb2RlX2NvcHkocGwtXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIHN0YXRlLVx1MDAzZWFkdmVydGlzaW5nKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Mi1cdFx0Y2hhbmdlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg1LVx0aWYgKHBsLVx1MDAzZXJlcV9saW5rX2FuX21vZGUgIT0gbW9kZSB8fFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjg2Olx0ICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Ny1cdFx0cGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSA9IG1vZGU7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODg6XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHN0YXRlLVx1MDAzZWludGVyZmFjZTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3ODMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNZW1vcnkgQWxsb2NhdGlvbiBEZWVwIERpdmU6IGBwaHlsaW5rX2NyZWF0ZSgpYCBhbmQgYGt6YWxsb2NgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyB3aXRoIGBwbGAsIHdoaWNoIEkmIzM5O20gYXNzdW1pbmcgaXMgYSBgc3RydWN0IHBoeWxpbmtgLCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgIHdpdGhpbiB0aGUgYHBoeWxpbmtfY3JlYXRlKClgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgdGhvdWdoLiBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoaXMgd2l0aGluIGBwaHlsaW5rX2NyZWF0ZSgpYCBpdHNlbGYuIFRoZXJlIGFyZSBhIGZldyByZWFzb25zIHdoeSB0aGlzIHdvdWxkIGJlIG9uIG15IHJhZGFyOiBGaXJzdCwgYWxsb2NhdGlvbiBzdHJhdGVnaWVzIGFyZSBhIGNyaXRpY2FsIGFyZWEgZm9yIHBlcmZvcm1hbmNlIGFuZCBmcmFnbWVudGF0aW9uIGlzc3Vlcy4gV2UgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgdGhlIHJpZ2h0IGFsbG9jYXRpb24gc3RyYXRlZ3kgaXMgdXNlZC4gYGt6YWxsb2NgIGlzIHR5cGljYWxseSBmaW5lLiBJdCBwcm92aWRlcyB6ZXJvLWluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgdXN1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGF0IHRoaXMgYWRkcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBvdmVyaGVhZC4gSWYgdGhlIHN0cnVjdHVyZSBpcyB2ZXJ5IGxhcmdlIG9yIGlmIGl0JiMzOTtzIGluIGEgdmVyeSB0aWdodCBsb29wLCBpdCBtaWdodCBiZSB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGUgbWV0aG9kcyAoaWYgd2UgY2FuIGxpdmUgd2l0aCB0aGUgY29uc2VxdWVuY2VzKS4gU2Vjb25kLCB1bmRlcnN0YW5kaW5nIHRoZSBtZW1vcnkgbW9kZWwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSBpcyBjcml0aWNhbCBpbiBhbnkgbW9kZXJuIE9TIGFuZCBjYW4gYWZmZWN0IG1lbW9yeSBzYWZldHkgaWYgd2UgaGF2ZSBhbnkgdW5kZWZpbmVkIHZhbHVlcy4gRmluYWxseSwgYmVjYXVzZSBgcGh5bGlua19jcmVhdGVgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZXMsIGEgZ29vZCBzYW5pdHkgY2hlY2sgd291bGQgYmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXMgYSBkZWFsbG9jYXRpb24gcGF0aC4gSSBzaG91bGQgcHJvYmFibHkgYmUgcHJlcGFyZWQgdG8gY29uc2lkZXIgd2hlcmUgYHBsYCBpcyBmcmVlZCBsYXRlciBvbi4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NTA6XHRzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4xODUxOlx0XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xODUyOlx0XHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpZmFjZSxcbjE4NTM6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqbWFjX29wcylcbjE4NTQ6XHR7XG4xODU1Olx0XHRzdHJ1Y3QgcGh5bGluayAqcGw7XG4xODU2Olx0XHRpbnQgcmV0O1xuMTg1NzpcdFxuMTg1ODpcdFx0LyogVmFsaWRhdGUgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gKi9cbjE4NTk6XHRcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcykpIHtcbjE4NjA6XHRcdFx0ZGV2X2Vycihjb25maWctXHUwMDNlZGV2LFxuMTg2MTpcdFx0XHRcdFwmIzM0O3BoeWxpbms6IGVycm9yOiBlbXB0eSBzdXBwb3J0ZWRfaW50ZXJmYWNlc1xcblwmIzM0Oyk7XG4xODYyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuMTg2MzpcdFx0fVxuMTg2NDpcdFxuMTg2NTpcdFx0cGwgPSBremFsbG9jX29iaigqcGwpO1xuMTg2NjpcdFx0aWYgKCFwbClcbjE4Njc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4xODY4Olx0XG4xODY5Olx0XHRtdXRleF9pbml0KFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4xODcwOlx0XHRtdXRleF9pbml0KFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjE4NzE6XHRcdElOSVRfV09SSyhcdTAwMjZwbC1cdTAwM2VyZXNvbHZlLCBwaHlsaW5rX3Jlc29sdmUpO1xuMTg3MjpcdFxuMTg3MzpcdFx0cGwtXHUwMDNlY29uZmlnID0gY29uZmlnO1xuMTg3NDpcdFx0aWYgKGNvbmZpZy1cdTAwM2V0eXBlID09IFBIWUxJTktfTkVUREVWKSB7XG4xODc1Olx0XHRcdHBsLVx1MDAzZW5ldGRldiA9IHRvX25ldF9kZXYoY29uZmlnLVx1MDAzZWRldik7XG4xODc2Olx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVx1MDAzZW5ldGRldik7XG4xODc3Olx0XHR9IGVsc2UgaWYgKGNvbmZpZy1cdTAwM2V0eXBlID09IFBIWUxJTktfREVWKSB7XG4xODc4Olx0XHRcdHBsLVx1MDAzZWRldiA9IGNvbmZpZy1cdTAwM2VkZXY7XG4xODc5Olx0XHR9IGVsc2Uge1xuMTg4MDpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuMTg4MTpcdFx0XHRnb3RvIGZyZWVfcGw7XG4xODgyOlx0XHR9XG4xODgzOlx0XG4xODg0Olx0XHRwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcyA9IHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKG1hY19vcHMpO1xuMTg4NTpcdFx0cGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSA9IHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzIFx1MDAyNlx1MDAyNlxuMTg4NjpcdFx0XHRcdCAgICAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlbHBpX2NhcGFiaWxpdGllcyBcdTAwMjZcdTAwMjZcbjE4ODc6XHRcdFx0XHQgICAgICAgIXBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9pbnRlcmZhY2VzKTtcbjE4ODg6XHRcbjE4ODk6XHRcdC8qIFNldCB0aGUgZGVmYXVsdCBFRUUgY29uZmlndXJhdGlvbiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjc5MgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAyNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVW5pbml0aWFsaXplZCBNZW1vcnkgUmlza3MqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgaW5pdGlhbGl6aW5nIGEgc3RhY2sgdmFyaWFibGUgY2FsbGVkIGBsaW5rX3N0YXRlYCBmcm9tIHRoZSBleGlzdGluZyBgcGwtJmd0O2xpbmtfY29uZmlnYC4gUHJldmlvdXNseSwgaW4gdGhvc2UgdHdvIHNwZWNpZmljIGJyYW5jaGVzLCBgbGlua19zdGF0ZWAgd2FzIG9ubHkgcGFydGlhbGx5IGluaXRpYWxpemVkIOKAkyBqdXN0IHRoZSBgbGlua2AgZmllbGQuIFRoaXMgZGlyZWN0bHkgYWRkcmVzc2VzIHRoZSB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGlzc3VlLiBHb29kLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhpcyBwYXRjaCAqb25seSogaW5pdGlhbGl6ZXMgYGxpbmtfc3RhdGVgLiBJdCYjMzk7cyBwdWxsaW5nIHZhbGlkIGRhdGEgZnJvbSBhbiBhbHJlYWR5IGluaXRpYWxpemVkIHN0cnVjdHVyZSAoYHBsLSZndDtsaW5rX2NvbmZpZ2ApLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBpc24mIzM5O3QgY3JlYXRpbmcgbmV3LCB1bmluaXRpYWxpemVkIGFsbG9jYXRpb25zLCBub3IgaXMgaXQgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBpc3N1ZSBoZXJlIGlzIGRpcmVjdGx5IGFkZHJlc3NlZCBieSBpbml0aWFsaXppbmcgYW4gb3RoZXJ3aXNlIHVuaW5pdGlhbGl6ZWQgc3RhY2sgc3RydWN0IGBsaW5rX3N0YXRlYC4KClRoZXJlZm9yZSwgSSB0aGluayB0aGlzIGlzIGEgY2xlYXItY3V0IGNhc2UuIFRoaXMgcGF0Y2ggZml4ZXMgYW4gZXhpc3RpbmcsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW0gYW5kIEkgc2VlIG5vIG5ldyBLTVNBTi1kZXRlY3RhYmxlIHJpc2tzIGJlaW5nIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOIGFuZCBjb21waWxlciB0ZXN0aW5nLCBhbG9uZyB3aXRoIHRoZSB1c3VhbCBzYW5pdGl6ZXJzLCBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXNuJiMzOTt0IHdhcnJhbnRlZC4gSSYjMzk7bSBnb2luZyB0byBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgbWVldHMgdGhlIGZvbGxvd2luZyBjcml0ZXJpYTogYWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIGFyZSBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQsIGFuZCB0aGVyZSYjMzk7cyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBJIGZlZWwgY29tZm9ydGFibGUgY2FsbGluZyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVx1MDAzZWxpbmtfY29uZmlnIHdoZW4gcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVx1MDAzZWxpbmtfY29uZmlnIHdoZW4gcGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjAxLjE1MzQ5MzA2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDcwOTM0NDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfcmVzb2x2ZVwiLFxuICAgIFwicGh5bGlua19zdGFydFwiLFxuICAgIFwicGh5bGlua19zdG9wXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXFx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeWxpbmtfcmVzb2x2ZWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3R1cmUgZnJvbSBgcGwtXFx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MDEuMTUzNDk5OTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU3ODE4MDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTUyNDMyNDE0YjE5OWI2YWJkZmJiZTVhNGM1ODNkMDk3MmUzM2YzNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggM2VjM2JiNDM5MTA5NS4uYTE0NThkYTgxMTFiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xNjMwLDggKzE2MzAsMTAgQEAgc3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4gXFxuIFxcdGlmIChwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XFxuIFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xcbitcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbiBcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4gXFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbGlua19mYWlsZWQpIHtcXG4rXFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4gXFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuIFxcdFxcdHJldHJpZ2dlciA9IHRydWU7XFxuIFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjAyLjcxMjIzMDE5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzQxNzYxMjA5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEhZTElOS1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9MQU43OFhYXCIsXG4gICAgXCJORVRfRFNBXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5bGlua19yZXNvbHZlXCIsXG4gICAgXCJwaHlsaW5rX3N0YXJ0XCIsXG4gICAgXCJwaHlsaW5rX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGh5bGlua19yZXNvbHZlYCBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgYGxpbmtfc3RhdGVgIHN0cnVjdHVyZSBmcm9tIGBwbC1cXHUwMDNlbGlua19jb25maWdgIHdoZW4gYHBoeWxpbmtfZGlzYWJsZV9zdGF0ZWAgb3IgYGxpbmtfZmFpbGVkYCBpcyBzZXQsIHByZXZlbnRpbmcgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBkdXJpbmcgbGluayByZXNvbHV0aW9uLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBuZXR3b3JrIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGFuZCBsaW5rIHN0YXRlIGNoYW5nZXMgb24gZW11bGF0ZWQgVVNCIG5ldHdvcmsgZGV2aWNlcyBhbmQgRFNBIHN3aXRjaCBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTYzMCw4ICsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHRcdHJldHJpZ2dlciA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowMi43MTIyMzQyMjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MjIyODAxODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEaXZpbmcgaW50byB0aGUgUEhZTElOSyBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHRvIHJldmlldywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBpbXBhY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBnZXQgbXkgYmVhcmluZ3MuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgZGlmZiBpdHNlbGY7IEknbGwgdXNlIGEgYHJlYWQtZmlsZWAgY29tbWFuZCB0byBwdWxsIGl0IHVwIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBiZWVuIGNoYW5nZWQuIEtub3dpbmcgdGhpcyBjb250ZXh0IGlzIGtleSwgb2YgY291cnNlIVxuXG5PbmNlIEkgaGF2ZSB0aGUgZGlmZiBpbiBmcm9udCBvZiBtZSwgSSdsbCBuZWVkIHRvIGV4cGFuZCBteSB2aWV3LiBJJ20gZ29pbmcgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbGluZXMgYXJvdW5kIGxpbmUgMTYzMCwgd2hpY2ggdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbmVkLiBEZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlLCBJIG1pZ2h0IHVzZSBgZ3JlcHBlcmAgb3IgbXkgSURFIHRvIHF1aWNrbHkganVtcCB0byB0aGUgcmVsZXZhbnQgY29kZS4gVGhpcydsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIsIHBpbnBvaW50IHRoZSAqd2h5KiBiZWhpbmQgdGhlIG1vZGlmaWNhdGlvbnMsIGFuZCBzZWUgaG93IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlzIGltcGFjdGVkLiBFc3NlbnRpYWxseSwgdW5kZXJzdGFuZGluZyB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgY2hhbmdlcyBpcyBlc3NlbnRpYWwgdG8gZ2V0dGluZyB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowOS45MzUwNDAwNjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY3MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTYxMDpcXHRzdGF0aWMgYm9vbCBwaHlsaW5rX2xpbmtfaXNfdXAoc3RydWN0IHBoeWxpbmsgKnBsKVxcbjE2MTE6XFx0e1xcbjE2MTI6XFx0XFx0cmV0dXJuIHBsLVxcdTAwM2VuZXRkZXYgPyBuZXRpZl9jYXJyaWVyX29rKHBsLVxcdTAwM2VuZXRkZXYpIDogcGwtXFx1MDAzZW9sZF9saW5rX3N0YXRlO1xcbjE2MTM6XFx0fVxcbjE2MTQ6XFx0XFxuMTYxNTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbjE2MTY6XFx0e1xcbjE2MTc6XFx0XFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcXG4xNjE4OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcXG4xNjE5OlxcdFxcdGJvb2wgbWFjX2NvbmZpZyA9IGZhbHNlO1xcbjE2MjA6XFx0XFx0Ym9vbCByZXRyaWdnZXIgPSBmYWxzZTtcXG4xNjIxOlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHk7XFxuMTYyMjpcXHRcXHRib29sIGN1cl9saW5rX3N0YXRlO1xcbjE2MjM6XFx0XFxuMTYyNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4xNjI1OlxcdFxcdHBoeSA9IHBsLVxcdTAwM2VwaHlkZXY7XFxuMTYyNjpcXHRcXHRpZiAocGh5KVxcbjE2Mjc6XFx0XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNjI4OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMTYyOTpcXHRcXHRjdXJfbGlua19zdGF0ZSA9IHBoeWxpbmtfbGlua19pc191cChwbCk7XFxuMTYzMDpcXHRcXG4xNjMxOlxcdFxcdGlmIChwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XFxuMTYzMjpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG4xNjMzOlxcdFxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuMTYzNDpcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4xNjM1OlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWxpbmtfZmFpbGVkKSB7XFxuMTYzNjpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbjE2Mzc6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTYzODpcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2Mzk6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpIHtcXG4xNjQwOlxcdFxcdFxcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY0MTpcXHRcXHRcXHRtYWNfY29uZmlnID0gbGlua19zdGF0ZS5saW5rO1xcbjE2NDI6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fUEhZKSB7XFxuMTY0MzpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZTtcXG4xNjQ0OlxcdFxcdFxcdG1hY19jb25maWcgPSBsaW5rX3N0YXRlLmxpbms7XFxuMTY0NTpcXHRcXHR9IGVsc2Uge1xcbjE2NDY6XFx0XFx0XFx0cGh5bGlua19tYWNfcGNzX2dldF9zdGF0ZShwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2NDc6XFx0XFxuMTY0ODpcXHRcXHRcXHQvKiBUaGUgUENTIG1heSBoYXZlIGEgbGF0Y2hpbmcgbGluay1mYWlsIGluZGljYXRvci4gSWYgdGhlIGxpbmtcXG4xNjQ5OlxcdFxcdFxcdCAqIHdhcyB1cCwgYnJpbmcgdGhlIGxpbmsgZG93biBhbmQgcmUtdHJpZ2dlciB0aGUgcmVzb2x2ZS5cXG4xNjUwOlxcdFxcdFxcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcXG4xNjUxOlxcdFxcdFxcdCAqIG9mIHRoZSBsaW5rLlxcbjE2NTI6XFx0XFx0XFx0ICovXFxuMTY1MzpcXHRcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluaykge1xcbjE2NTQ6XFx0XFx0XFx0XFx0aWYgKGN1cl9saW5rX3N0YXRlKVxcbjE2NTU6XFx0XFx0XFx0XFx0XFx0cmV0cmlnZ2VyID0gdHJ1ZTtcXG4xNjU2OlxcdFxcdFxcdFxcdGVsc2VcXG4xNjU3OlxcdFxcdFxcdFxcdFxcdHBoeWxpbmtfbWFjX3Bjc19nZXRfc3RhdGUocGwsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG4xNjU4OlxcdFxcdFxcdH1cXG4xNjU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjowOS45MzcyMTA5NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDA1NjE4Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gYHBoeWxpbmtfcmVzb2x2ZWAgYW5kIGBsaW5rX3N0YXRlYCoqXG5cbkFscmlnaHQsIEknbSBhdCB0aGUgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgaW5pdGlhbCBnbGFuY2UgYXQgYHBoeWxpbmtfcmVzb2x2ZWAgaGFzIGdpdmVuIG1lIHNvbWUgY2x1ZXMsIGJ1dCBJIG5lZWQgdG8gc2VlIHRoZSBlbnRpcmUgZnVuY3Rpb24sIGhvdyBpdCdzIGltcGxlbWVudGVkIGFuZCB1c2VkLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgaG93IHRoZSBgbGlua19zdGF0ZWAgdmFyaWFibGUgaXMgbWFuYWdlZCBhbmQgaG93IGl0J3MgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLiBJIGhhdmUgYSBodW5jaCB0aGF0IHRoaXMgYGxpbmtfc3RhdGVgIGlzIG1vcmUgdGhhbiBtZWV0cyB0aGUgZXllLCBhbmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBpcyBnb2luZyB0byBiZSBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGJlaGF2aW9yIG9mIHRoaXMgcGFydCBvZiB0aGUgc3RhY2suIEkgd2FudCB0byBzZWUgaG93IHRoZSBzdGF0ZSB0cmFuc2l0aW9ucywgd2hhdCB0cmlnZ2VycyB0aGVtLCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGxheWVycy4gVGhpcyBtZWFucyBsb29raW5nIGF0IGJvdGggaG93IGl0J3Mgc2V0IGJ5IGBwaHlsaW5rX3Jlc29sdmVgIGFuZCBob3cgaXQgaXMgbGF0ZXIgdXNlZCBieSB0aGUgcmVzdCBvZiB0aGUgcmVsZXZhbnQgY29kZS4gVGhlcmUgaGFzIHRvIGJlIGEgc3RhdGUgbWFjaGluZSBoZXJlLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQ2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjoxMy4zNDI4MzM3NjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjYwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjYwOlxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcXFwidXBcXFwiIHN0YXRlIGlzIHRoZSB1bmlvbiBvZiBib3RoIHRoZVxcbjE2NjE6XFx0XFx0XFx0ICogUEhZIGFuZCB0aGUgTUFDXFxuMTY2MjpcXHRcXHRcXHQgKi9cXG4xNjYzOlxcdFxcdFxcdGlmIChwaHkpXFxuMTY2NDpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgXFx1MDAyNj0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rO1xcbjE2NjU6XFx0XFxuMTY2NjpcXHRcXHRcXHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cXG4xNjY3OlxcdFxcdFxcdGlmIChwaHkgXFx1MDAyNlxcdTAwMjYgcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XFxuMTY2ODpcXHRcXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbjE2Njk6XFx0XFx0XFx0XFx0ICogZXZlbnQgaWYgdGhlIGxpbmsgaXNuJ3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cXG4xNjcwOlxcdFxcdFxcdFxcdCAqL1xcbjE2NzE6XFx0XFx0XFx0XFx0aWYgKGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVxcdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XFxuMTY3MjpcXHRcXHRcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2NzM6XFx0XFx0XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTY3NDpcXHRcXHRcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XFxuMTY3NzpcXHRcXG4xNjc4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBkb2luZyByYXRlIG1hdGNoaW5nLCB0aGVuIHRoZSBsaW5rXFxuMTY3OTpcXHRcXHRcXHRcXHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXFxuMTY4MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjgxOlxcdFxcdFxcdFxcdGlmIChwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcXG4xNjgyOlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XFxuMTY4MzpcXHRcXHRcXHRcXHRcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmc7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnNwZWVkID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcXG4xNjg1OlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XFxuMTY4NjpcXHRcXHRcXHRcXHR9XFxuMTY4NzpcXHRcXG4xNjg4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxcbjE2ODk6XFx0XFx0XFx0XFx0ICogZmxvdyBjb250cm9sIGJpdHMuXFxuMTY5MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjkxOlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucGF1c2UgPSBwbC1cXHUwMDNlcGh5X3N0YXRlLnBhdXNlO1xcbjE2OTI6XFx0XFx0XFx0XFx0bWFjX2NvbmZpZyA9IHRydWU7XFxuMTY5MzpcXHRcXHRcXHR9XFxuMTY5NDpcXHRcXHR9XFxuMTY5NTpcXHRcXG4xNjk2OlxcdFxcdGlmIChwbC1cXHUwMDNlYWN0X2xpbmtfYW5fbW9kZSAhPSBNTE9fQU5fRklYRUQpXFxuMTY5NzpcXHRcXHRcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY5ODpcXHRcXG4xNjk5OlxcdFxcdGlmICgobWFjX2NvbmZpZyBcXHUwMDI2XFx1MDAyNiBsaW5rX3N0YXRlLmludGVyZmFjZSAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSB8fFxcbjE3MDA6XFx0XFx0ICAgIHBsLVxcdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcXG4xNzAxOlxcdFxcdFxcdC8qIFRoZSBpbnRlcmZhY2UgaGFzIGNoYW5nZWQgb3IgYSBmb3JjZWQgbWFqb3IgY29uZmlndXJhdGlvblxcbjE3MDI6XFx0XFx0XFx0ICogd2FzIHJlcXVlc3RlZCwgc28gZm9yY2UgdGhlIGxpbmsgZG93biBhbmQgdGhlbiByZWNvbmZpZ3VyZS5cXG4xNzAzOlxcdFxcdFxcdCAqL1xcbjE3MDQ6XFx0XFx0XFx0aWYgKGN1cl9saW5rX3N0YXRlKSB7XFxuMTcwNTpcXHRcXHRcXHRcXHRwaHlsaW5rX2xpbmtfZG93bihwbCk7XFxuMTcwNjpcXHRcXHRcXHRcXHRjdXJfbGlua19zdGF0ZSA9IGZhbHNlO1xcbjE3MDc6XFx0XFx0XFx0fVxcbjE3MDg6XFx0XFx0XFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTcwOTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gbGlua19zdGF0ZS5pbnRlcmZhY2U7XFxuMTcxMDpcXHRcXHRcXHRwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnID0gZmFsc2U7XFxuMTcxMTpcXHRcXHR9XFxuMTcxMjpcXHRcXG4xNzEzOlxcdFxcdC8qIElmIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGludGVyZmFjZSBmYWlsZWQsIGZvcmNlIHRoZSBsaW5rIGRvd25cXG4xNzE0OlxcdFxcdCAqIHVudGlsIHdlIGdldCBhIHN1Y2Nlc3NmdWwgY29uZmlndXJhdGlvbi5cXG4xNzE1OlxcdFxcdCAqL1xcbjE3MTY6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWpvcl9jb25maWdfZmFpbGVkKVxcbjE3MTc6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTcxODpcXHRcXG4xNzE5OlxcdFxcdGlmIChsaW5rX3N0YXRlLmxpbmsgIT0gY3VyX2xpbmtfc3RhdGUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTMuMzQzMjkzMjExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzNDM2NzUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBoeWxpbmsgU3RhdGUgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIExvb2tpbmcgYXQgdGhpcyBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZWAgb3IgYHBsLVx1MDAzZWxpbmtfZmFpbGVkYCBjb25kaXRpb25hbCBibG9ja3MsIGl0J3MgaW1tZWRpYXRlbHkgYXBwYXJlbnQgdGhhdCB0aGUgYGxpbmtfc3RhdGVgIHZhcmlhYmxlIHdhc24ndCBiZWluZyBwcm9wZXJseSBpbml0aWFsaXplZCBpbiB0aG9zZSBzY2VuYXJpb3MuIEl0IGxvb2tzIGxpa2UgaXQgd2FzIGp1c3QgYSBsb2NhbCwgdW5pbml0aWFsaXplZCBgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO2AuIFRoZSBsb2dpYyBzZXRzIGBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtgLCBidXQgdGhlICpyZXN0KiBvZiBgbGlua19zdGF0ZWAncyBmaWVsZHMg4oCTIGxpa2UgYGludGVyZmFjZWAsIGBwYXVzZWAgYW5kIHNvIG9uLCB3ZXJlIGxlZnQgYXMgZ2FyYmFnZSBtZW1vcnkuXG5cbkkgY2FuIHNlZSB3aGVyZSB0aGlzIGNvdWxkIGNhdXNlIGlzc3VlcyBkb3duIHRoZSBsaW5lLCBlc3BlY2lhbGx5IHdpdGggdGhvc2UgY2FsbHMgdG8gZnVuY3Rpb25zIGxpa2UgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgLCBvciB0aG9zZSBjb21wYXJpc29ucyB3aXRoIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AuIFRob3NlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBhbmQgc3VidGxlLCBoYXJkLXRvLWRlYnVnIHByb2JsZW1zLiBUaGUgcGF0Y2gncyBjaGFuZ2UsIHdoZXJlIGBsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7YCAqYmVmb3JlKiB0aGUgbW9kaWZpY2F0aW9uLCBzZWVtcyBjb3JyZWN0IHRvIGVuc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSBpcyBjb3JyZWN0bHkgcG9wdWxhdGVkLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXggdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yLlxuXG5Ob3csIGxldCdzIG1vdmUgb24gdG8gdGhlIHByYWN0aWNhbCBpbXBsaWNhdGlvbnMuIElzIHRoaXMgYSBwb3RlbnRpYWwgaXNzdWUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3Igc3l6a2FsbGVyPyBJZiB0aGlzIGlzIHVzZWQgaW4gdGhlc2Ugc2V0dXBzLCB1bmluaXRpYWxpemVkIHN0YXRlcyBjb3VsZCBsZWFkIHRvIGEgY3Jhc2ggb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGltZSB0byBjaGVjayByZWFjaGFiaWxpdHkuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkgZm9yIGFueSBjYWxscyB0byBgcGh5bGlua19jcmVhdGVgIG9yIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIGRldGVybWluZSBob3cgd2lkZWx5IHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjQyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTYuODc3NjYzNjM4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTg1OTYzMDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnBoeWxpbmtfb3BzKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXFx0XFx0XFx0XFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc0LVxcdG1hY19kZXYtXFx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzU6XFx0bWFjX2Rldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWNfZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHQgIGRldl9md25vZGUobWFjX2Rldi1cXHUwMDNlZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cXHRcXHRcXHRcXHQgZHBtYWNfbm9kZSwgbWFjLVxcdTAwM2VpZl9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTkyMz1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0MjpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0My1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0NC1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk0NTpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTQ2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk1MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1MS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzg1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODY4OlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg2OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg3MDpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04NzktXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg4MDplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9NDE5PUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQyMi1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cXHRwZi1cXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IG1hY19jYXBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwZi1cXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2My1cXHRcXHRcXHRcXHQgcGYtXFx1MDAzZWlmX21vZGUsIG9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDcyLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaDoxMzppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jPTg1Mz1zdGF0aWMgaW50IGZzX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM6OTMzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmVwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShmZXAtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jPTM0MTk9c3RhdGljIGludCB1Y2NfZ2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM6MzU3NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnVnZXRoLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2X2Z3bm9kZShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzUtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2UsIFxcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NTk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU2MDAtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XFx0XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0OS1cXHRcXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdnBwMl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcXHRcXHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlfY29uZmlnLCBmd25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVxcdFxcdFxcdFxcdFxcdCAgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk3MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcXHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM2LVxcdFxcdGZyZWVfbmV0ZGV2KG5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cXHRcXHRcXHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oOjExMzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYz0xNzc9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZmJuaWNfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE4NzogKiBmYm5pY19waHlsaW5rX2NyZWF0ZSAtIFBoeWxpbmsgZGV2aWNlIGNyZWF0aW9uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5Ni0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZmJuLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzMtXFx0XFx0XFx0XFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXFx1MDAzZWF1aSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTYwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMjEzLVxcdFxcdFxcdCAgICBhZGFwdGVyLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2OTE9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzUxOlxcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTItXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVxcdFxcdFxcdFxcdCBwb3J0bnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnNweDVfcG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM5MC1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXFx1MDAzZW5vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpwb3J0bnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4MjE6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XFx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4ODEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MTM3ND1zdGF0aWMgaW50IHN0bW1hY19waHlsaW5rX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjE0NjY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVxcdTAwM2VkZXZpY2UpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2Ny1cXHRcXHRcXHRcXHQgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlcGh5X2ludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgUEhZX0lOVEVSRkFDRV9NT0RFX1hBVUksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXFx0XFx0XFx0XFx0IFxcdTAwMjZ0bjQwX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDUtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cXHUwMDNlc2xhdmUucG9ydF9ucCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNm5nYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wc19hbWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTIxOlxcdGxwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmxwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXFx0XFx0XFx0XFx0ICAgICBscC1cXHUwMDNlcGh5X21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXFx0XFx0cmV0ID0gUFRSX0VSUihscC1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTI2OlxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInBoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTI3LVxcdFxcdGdvdG8gY2xlYW51cF9tZGlvO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTU9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMwLVxcdGlmIChwY3MpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcXHRcXHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOD1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19wY3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc3MD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NC0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk2LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTgzMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NldF9maXhlZF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzU6ICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzYtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5Mzg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0MS0gKiBwaHlsaW5rX2Rlc3Ryb3koKSAtIGNsZWFudXAgYW5kIGRlc3Ryb3kgdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MS0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjA1PXN0YXRpYyBpbnQgcGh5bGlua19hdHRhY2hfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyMy0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjAtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYyLSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3OS0gKiBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgZndub2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODEtICogQGZ3bm9kZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzM1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMzOS0gKiAgIGluc3RhbmNlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM0MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3MD1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNzktICogcGh5bGlua19tYWNfY2hhbmdlKCkgLSBub3RpZnkgcGh5bGluayBvZiBhIGNoYW5nZSBpbiBNQUMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgxLSAqIEB1cDogaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxpbmsgaXMgY3VycmVudGx5IHVwLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDEyPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDIyLSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQ4NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0YXJ0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4OC0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTE5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjItICogcGh5bGlua19yeF9jbGtfc3RvcF9ibG9jaygpIC0gYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrIGluIExQSVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyMzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1MjQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU0OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1MS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTUyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1My0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTkwPXN0YXRpYyBib29sIHBoeWxpbmtfcGh5X3BtX3NwZWVkX2N0cmwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTk3LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OTktICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NDk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1Mi0gKiBwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKCkgLSBwcmVwYXJlIHRvIHJlc3VtZSBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjUzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY1NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc3LSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2Nzg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjc5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3MTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXN1bWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIwLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyB0byBob2xkIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1ND1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NTctICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzU4OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc1OS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4Nj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDEtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19nZXQoKSAtIGdldCB0aGUgY3VycmVudCBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTAyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwMy0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTU0PXN0YXRpYyBib29sIHBoeWxpbmtfdmFsaWRhdGVfcGNzX2luYmFuZF9hdXRvbmVnKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3NS0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTc2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIGZvciB0aGUgZGVzaXJlZCBtb2Rlc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0NS0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE2Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzAtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE3MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzItICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODYtICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODgtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjY5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzMtICogICBjb3VudGVyXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNzUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5NS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5Ny0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzE4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyMS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X2VlZSgpIC0gc2V0IHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzIzLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM0OTI9c3RhdGljIGludCBwaHlsaW5rX21paV93cml0ZShzdHJ1Y3QgcGh5bGluayAqcGwsIHVuc2lnbmVkIGludCBwaHlfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTAtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzUxMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTItICogQGlmcjogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBpZnJlcSBmb3Igc29ja2V0IGlvY3Rsc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU4OS0gKiAgIGxpbmsgcGFydG5lcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTkxLSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM2MTA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zcGVlZF9kb3duKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNC0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjE1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzY5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3My0gKlxcdFxcdFxcdFxcdCB3aGljaCBsb3NlcyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NC0gKlxcdFxcdFxcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzk1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cXHRcXHRcXHRcXHQgcGh5X2lmX21vZGUsIFxcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShwYywgZGV2LVxcdTAwM2VuZXQtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODQwLVxcdFxcdFxcdFxcdCBkZXYtXFx1MDAzZWludGVyZmFjZSwgXFx1MDAyNmxhbjc4eHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMy1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKixcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTYxNi1cXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbm5ldC9kc2EvcG9ydC5jLTE2MTgte1xcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cXG5uZXQvZHNhL3BvcnQuYzoxNjQ3OlxcdHBsID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUoZHAtXFx1MDAzZWRuKSwgbW9kZSxcXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVxcdFxcdFxcdCAgICBtYWNfb3BzKTtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxcbi0tXFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG5uZXQvZHNhL3BvcnQuYzoxNjc0OlxcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3BvcnQuYy0xNjc1LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvZHNhL3BvcnQuaD0xMDA9aW50IGRzYV9wb3J0X21ycF9kZWxfcmluZ19yb2xlKGNvbnN0IHN0cnVjdCBkc2FfcG9ydCAqZHAsXFxubmV0L2RzYS9wb3J0LmgtMTAxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxubmV0L2RzYS9wb3J0LmgtMTAzLXZvaWQgZHNhX3BvcnRfcGh5bGlua19kZXN0cm95KHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbi0tXFxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXFxuLS1cXG5uZXQvZHNhL3VzZXIuYy0yNjczLVxcbm5ldC9kc2EvdXNlci5jOjI2NzQ6XFx0cmV0ID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvdXNlci5jLTI2NzUtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MTkuMDM2MjY5MjExWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ1NDY0OTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFBoeWxpbmsgVXNhZ2UqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIEkndmUgYmVlbiBkaWdnaW5nIGludG8gdGhlIGtlcm5lbCwgYW5kIEkndmUgY29tZSBhY3Jvc3MgYSBjb3VwbGUgb2YgaW50ZXJlc3RpbmcgZmlsZXM6IGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBheDg4NzcyX3BoeWxpbmtfc2V0dXBgIGZ1bmN0aW9uLCBhbmQgYGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmNgLCBmb2N1c2luZyBvbiB0aGUgYGxhbjc4eHhfcGh5bGlua19zZXR1cGAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgYm90aCBvZiB0aGVzZSBVU0IgbmV0d29yayBkcml2ZXJzIGFyZSB1c2luZyBwaHlsaW5rLCB3aGljaCBpcyBzaWduaWZpY2FudC4gVGhpcyBsaWtlbHkgbWVhbnMgdGhleSdyZSBiZWluZyB0ZXN0ZWQgZWZmZWN0aXZlbHkgdmlhIHN5emthbGxlciwgb3IgcG90ZW50aWFsbHkgbGV2ZXJhZ2VkIGluIFVTQiByYXcgbW9kZSBvciBnYWRnZXQgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiBJIHNob3VsZCBiZSBsb29raW5nIGF0IGhvdyB0aGV5J3JlIGludGVyYWN0aW5nIHdpdGggb3RoZXIgbmV0d29ya2luZyBjb21wb25lbnRzLCBzdWNoIGFzIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSksIGV0aHRvb2wgaW9jdGxzL25ldGxpbmsgaW50ZXJhY3Rpb25zLCBhbmQgdGhlIG5ldGRldiB1cC9kb3duIGxpZmVjeWNsZS4gSSBuZWVkIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHBoeWxpbmsgZW5hYmxlcyBoZXJlLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCB3aGF0IEtjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgcGh5bGluaz8gTGV0IG1lIHNlYXJjaCBmb3IgXCJQSFlMSU5LXCIgZGlyZWN0bHkgaW4gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBtb3N0IGRpcmVjdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc4MDYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjEuNDkwOTIxMzM2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzMzY1MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBIWUxJTktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY6Y29uZmlnIFBIWUxJTktcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjIxLjU5NzI2MjEwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTkyNDk4OTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUEhZIEtjb25maWcgRmlsZSoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IFBIWSBkcml2ZXJzIGFyZSBjb25maWd1cmVkIHdpdGhpbiB0aGlzIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGxldCdzIGZvY3VzIG9uIHRoZSBmaXJzdCB0aGlydHkgbGluZXMg4oCTIHRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBjb3JlIGRlZmluaXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxhaWQgb3V0LiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIHN5bWJvbCBmb3IgZW5hYmxpbmcgUEhZIHN1cHBvcnQsIG1heWJlIHNvbWUgZ2VuZXJhbCBvcHRpb25zIGZvciBzZWxlY3RpbmcgYmV0d2VlbiBkaWZmZXJlbnQgUEhZIGludGVyZmFjZXMgKGxpa2UgTUlJLCBSR01JSSwgU0dNSUksIGV0Yy4pLCBhbmQgb2YgY291cnNlLCB0aG9zZSBjcnVjaWFsIGRlcGVuZGVuY2llcyBvbiB0aGUgY29yZSBuZXR3b3JrIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoaXMgaW5pdGlhbCBzZWN0aW9uIHdpbGwgcHJvdmlkZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGdyYXNwaW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIGZvciB0aGVzZSBwaHlzaWNhbCBsYXllciB0cmFuc2NlaXZlcnMuIEkgYW50aWNpcGF0ZSBhIHdlbGwtc3RydWN0dXJlZCBzZXJpZXMgb2YgYGNvbmZpZ2AgYmxvY2tzLCBtYXliZSBzb21lIGBtZW51Y29uZmlnYCBvcHRpb25zIGZvciB0aGUgdXNlciB0byBzZWxlY3Qgc3BlY2lmaWMgZmVhdHVyZXMgb3IgUEhZIHR5cGVzLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGNsZWFyIGV4cGxhbmF0aW9ucyBpbiB0aGUgY29tbWVudHMgdG8gZ3VpZGUgZGV2ZWxvcGVycy4gVGhpcyBLY29uZmlnIGZpbGUgaXMgdGhlIGJhY2tib25lIGZvciBpbnRlZ3JhdGluZyB2YXJpb3VzIFBIWSBkZXZpY2VzLCBzbyBhIGRlZXAgdW5kZXJzdGFuZGluZyBvZiBpdHMgc3RydWN0dXJlIGFuZCBsb2dpYyBpcyBlc3NlbnRpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4Mjk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjQuMTg5NzYyNzdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIFBIWUxJTktcXG4gICA3OlxcdFxcdHRyaXN0YXRlXFxuICAgODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAgOTpcXHRcXHRzZWxlY3QgU1dQSFlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXFxuICAxMjpcXHRcXHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcXG4gIDEzOlxcdFxcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRtZW51Y29uZmlnIFBIWUxJQlxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlBIWSBEZXZpY2Ugc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmVcXFwiXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIEV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSB1c3VhbGx5IGF0dGFjaGVkIHRvIFBIWVxcbiAgMTk6XFx0XFx0ICBkZXZpY2VzLiAgVGhpcyBvcHRpb24gcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgZm9yXFxuICAyMDpcXHRcXHQgIG1hbmFnaW5nIFBIWSBkZXZpY2VzLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRpZiBQSFlMSUJcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIFNXUEhZXFxuICAyNTpcXHRcXHRib29sXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBQSFlfUEFDS0FHRVxcbiAgMjg6XFx0XFx0IHRyaXN0YXRlXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MjQuMTg5ODMzMzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk0ODk1MTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVVNCIE5ldHdvcmsgRHJpdmVyIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIFVTQiBuZXR3b3JrIGRyaXZlcnMgYXJlIGdldHRpbmcgY2hvc2VuIHdoZW4gc29tZW9uZSBzcGVjaWZpZXMgUEhZTElOSy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBjb21tb24gc3VzcGVjdHMg4oCTIHRoZSB1c3VhbCBzdXNwZWN0cywgcmVhbGx5IOKAkyBkcml2ZXJzIGxpa2UgVVNCX0xBTjc4WFgsIFVTQl9ORVRfQVg4ODE3OV8xNzhBLCBvciBtYXliZSBvbmUgb2YgdGhlIEFTSVggZHJpdmVycy4gVGhvc2UgYXJlIHRoZSBvbmVzIEknZCBleHBlY3QgdG8gc2VlLlxuXG5UbyBmaWd1cmUgdGhpcyBvdXQgZGVmaW5pdGl2ZWx5LCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLiBUaGF0J3Mgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGRpY3RhdGluZyB3aGljaCBkcml2ZXJzIGFyZSBjb21waWxlZCBiYXNlZCBvbiB2YXJpb3VzIG9wdGlvbnMgaXMgZGVmaW5lZC4gVGhhdCdsbCBnaXZlIG1lIHRoZSBwcmVjaXNlIHNlbGVjdGlvbiBydWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4OTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjI2LjEzODc4OTI4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4OTQ1MDY3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEhZTElOS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTEtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDo5MjpcXHRzZWxlY3QgUEhZTElOS1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZz0yPWNvbmZpZyBBTFRFUkFfVFNFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZzo3OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWctOC1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZz0yMD1jb25maWcgQUc3MVhYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXFx0ZGVwZW5kcyBvbiBBVEg3OSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWc6MjM6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjQtXFx0aW1wbHkgTkVUX1NFTEZURVNUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnPTIyPWNvbmZpZyBNQUNCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTgwPWNvbmZpZyBVQ0NfR0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXFx0c2VsZWN0IEZTTF9QUV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6ODQ6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnPTI9bWVudWNvbmZpZyBGU0xfRFBBQV9FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9EUEFBIFxcdTAwMjZcXHUwMDI2IEZTTF9GTUFOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNC1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctNi1cXHRzZWxlY3QgUENTX0xZTlhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnPTMzPWNvbmZpZyBGU0xfRFBBQTJfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXFx1MDAyNlxcdTAwMjYgRlNMX01DX0RQSU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9MzA9Y29uZmlnIEZTTF9FTkVUQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXFx0c2VsZWN0IE5YUF9FTkVUQ19QRl9DT01NT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzozODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTM5LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NDg9Y29uZmlnIE5YUF9FTkVUQzRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVxcdHNlbGVjdCBOWFBfTlRNUFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjU2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTctXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc9NjY9Y29uZmlnIEZTTF9FTkVUQ19WRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXFx0c2VsZWN0IEZTTF9FTkVUQ19NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NzI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03My1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnPTI9Y29uZmlnIEZTTF9GTUFOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy03LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZz0yPWNvbmZpZyBGU19FTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWc6NjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjItXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2MzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctODktXFx0c2VsZWN0IE1WTURJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo5MDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc6MTE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0xNy1cXHRzZWxlY3QgUElOQ1RSTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MTg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6MzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXFx0c2VsZWN0IFBMRE1GV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTUxLVxcdHNlbGVjdCBDUkMzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjUyOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy03LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctOC1cXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzo5OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlfU1BBUlg1X1NFUkRFU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMTktXFx0c2VsZWN0IFBBQ0tJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc6MjA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy00Ny1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjQ4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVxcdHNlbGVjdCBSRU5FU0FTX0dFTjRfUFRQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOS1cXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXFx0c2VsZWN0IENSQzMyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMC1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDE6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZy0yOS1cXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXFxcIlxcbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWctMTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTEzPWNvbmZpZyBVU0JfTEFONzhYWFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTctXFx0c2VsZWN0IE1JQ1JPQ0hJUF9QSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTE2Nj1jb25maWcgVVNCX05FVF9BWDg4MTdYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTcwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTcxLVxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxcbi0tXFxubmV0L2RzYS9LY29uZmlnLTktXFx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcXG5uZXQvZHNhL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5uZXQvZHNhL0tjb25maWctMTEtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjI4LjMyODI0NDg5N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDA1MzI0NzEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmtpbmcgZHJpdmVycyAtIHNwZWNpZmljYWxseSBgVVNCX0xBTjc4WFhgLCBgVVNCX05FVF9BWDg4MTdYYCwgYW5kIGBORVRfRFNBYC4gVGhleSBhbGwgc2VlbSB0byB0aWUgaW50byBgUEhZTElOS2AuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHdvcnRoIGRpZ2dpbmcgaW50by4gSSBrbm93IHN5emthbGxlciBhbmQgVVNCIGZ1enppbmcgYXJlIHVzZWQgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcywgYW5kIERTQSwgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUsIGdldHMgYSBsb3Qgb2YgZnV6emluZyBhdHRlbnRpb24gdGhyb3VnaCBuZXRsaW5rLCBzd2l0Y2hkZXYsIGFuZCB0aGUgbGlrZS4gTm93LCBgcGh5bGlua2AgaXRzZWxmIGlzLCBpZiBJIHJlY2FsbCBjb3JyZWN0bHksIGEgcHJldHR5IGNvcmUgcGllY2Ugb2YgbmV0d29ya2luZy4gSXQgc2l0cyByaWdodCBpbiB0aGUgZHJpdmVyIFBIWSBsYXllci5cblxuU28sIHdoZXJlIGlzIHRoaXMgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24gYmVpbmcgY2FsbGVkPyBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB0aGUgY2FsbGVyIGFuZCBob3cgaXQncyBpbnZva2VkLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dCwgc28gSSdsbCBzdGFydCBieSBzZWFyY2hpbmcgZm9yIFwicmVzb2x2ZVwiIGRpcmVjdGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGVudHJ5IHBvaW50IGFuZCB0aGUgaW1tZWRpYXRlIGNvbnRleHQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgYW5kIHNlZSB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0aWVzIGNvdWxkIGV4aXN0LCBnaXZlbiB0aGUgZnV6emluZyBlZmZvcnRzIGJlaW5nIGRvbmUgb24gdGhlc2UgcmVsYXRlZCBhcmVhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzMjIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6MzAuNzMzNTczM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2NTk4MTI3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNvbHZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MT1zdHJ1Y3QgcGh5bGluayB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTcwLVxcdHN0cnVjdCBtdXRleCBzdGF0ZV9tdXRleDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOlxcdC8qIFNlcmlhbGl6ZSB1cGRhdGVzIHRvIHBsLVxcdTAwM2VwaHlkZXYgd2l0aCBwaHlsaW5rX3Jlc29sdmUoKSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzItXFx0c3RydWN0IG11dGV4IHBoeWRldl9tdXRleDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzQtXFx0dW5zaWduZWQgaW50IHBoeV9pYl9tb2RlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzU6XFx0c3RydWN0IHdvcmtfc3RydWN0IHJlc29sdmU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03Ni1cXHR1bnNpZ25lZCBpbnQgcGNzX25lZ19tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz04NTM9c3RhdGljIHZvaWQgcGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2NS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2NjpzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04Njcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NzAtXFx0aWYgKHN0YXRlLVxcdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg3MTpcXHRcXHRsaW5rbW9kZV9yZXNvbHZlX3BhdXNlKHN0YXRlLVxcdTAwM2VhZHZlcnRpc2luZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg3Mi1cXHRcXHRcXHRcXHQgICAgICAgc3RhdGUtXFx1MDAzZWxwX2FkdmVydGlzaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1MC1cXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSBNTE9fUEFVU0VfTk9ORTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0NTE6XFx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTItfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNjEwPXN0YXRpYyBib29sIHBoeWxpbmtfbGlua19pc191cChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjE1OnN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjE2LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2MTc6XFx0c3RydWN0IHBoeWxpbmsgKnBsID0gY29udGFpbmVyX29mKHcsIHN0cnVjdCBwaHlsaW5rLCByZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MTgtXFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjQ4LVxcdFxcdC8qIFRoZSBQQ1MgbWF5IGhhdmUgYSBsYXRjaGluZyBsaW5rLWZhaWwgaW5kaWNhdG9yLiBJZiB0aGUgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY0OTpcXHRcXHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjUwLVxcdFxcdCAqIE90aGVyd2lzZSwgcmUtcmVhZCB0aGUgUENTIHN0YXRlIHRvIGdldCB0aGUgY3VycmVudCBzdGF0dXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY2OC1cXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY2OTpcXHRcXHRcXHQgKiBldmVudCBpZiB0aGUgbGluayBpc24ndCBhbHJlYWR5IGRvd24sIGFuZCByZS1yZXNvbHZlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY3MC1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcyNy1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mjg6XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcyOS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MzUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzM2OnN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTczNy17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzM4LVxcdGlmICghcGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3Mzk6XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc0MC19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQxLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc0MjpzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzQ3LVxcdGlmIChzdGF0ZSA9PSAwKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzQ4OlxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NDk6XFx0XFx0Zmx1c2hfd29yayhcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShzdHJ1Y3QgcGh5bGluayAqcGwsIGludCBiaXQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzU0LXtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTUtXFx0Y2xlYXJfYml0KGJpdCwgXFx1MDAyNnBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc1NjpcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3NTctfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzU5PXN0YXRpYyB2b2lkIHBoeWxpbmtfZml4ZWRfcG9sbChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc2NC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3NjU6XFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTg1MD1zdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NzAtXFx0bXV0ZXhfaW5pdChcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NzE6XFx0SU5JVF9XT1JLKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSwgcGh5bGlua19yZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NzItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NDk9dm9pZCBwaHlsaW5rX2Rlc3Ryb3koc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk1NTpcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU2LVxcdGtmcmVlKHBsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk3Nz1zdGF0aWMgdm9pZCBwaHlsaW5rX3BoeV9jaGFuZ2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCB1cClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjAwMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIwMDM6XFx0cGh5bGlua19ydW5fcmVzb2x2ZShwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMDA0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzQ0PXZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNjMtXFx0aWYgKHBoeSkge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM2NDpcXHRcXHRmbHVzaF93b3JrKFxcdTAwMjZwbC1cXHUwMDNlcmVzb2x2ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzY1LVxcdFxcdHBoeV9kaXNjb25uZWN0KHBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzA9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzczLVxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IHRydWU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzc0OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM3NS1cXHRwaHlsaW5rX2RiZyhwbCwgXFxcIiVzIGxpbmsgJXNcXFxcblxcXCIsIHdoYXQsIHVwID8gXFxcInVwXFxcIiA6IFxcXCJkb3duXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTI9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDE2OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQyOT12b2lkIHBoeWxpbmtfc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDU2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ1NzpcXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0NTgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0OTk9dm9pZCBwaHlsaW5rX3N0b3Aoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUxMzpcXHRwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHBsLCBQSFlMSU5LX0RJU0FCTEVfU1RPUFBFRCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjEzPXZvaWQgcGh5bGlua19zdXNwZW5kKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBtYWNfd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjIzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYyNDpcXHRcXHQvKiBTdG9wIHRoZSByZXNvbHZlciBicmluZ2luZyB0aGUgbGluayB1cCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYyNS1cXHRcXHRfX3NldF9iaXQoUEhZTElOS19ESVNBQkxFX01BQ19XT0wsIFxcdTAwMjZwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYzMC1cXHRcXHRcXHQgKiBidXQgb25lIHdvdWxkIGhvcGUgYWxsIHBhY2tldHMgaGF2ZSBiZWVuIHNlbnQuIFRoaXNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MzE6XFx0XFx0XFx0ICogYWxzbyBtZWFucyBwaHlsaW5rX3Jlc29sdmUoKSB3aWxsIGRvIG5vdGhpbmcuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjMyLVxcdFxcdFxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjgzPXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjk4LVxcdFxcdFxcdCAqIHRoZSB0cnVlIGxpbmsgc3RhdGUgd2lsbCBiZSBwcmludGVkIHdoZW4gd2UgcnVuIGFcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2OTk6XFx0XFx0XFx0ICogcmVzb2x2ZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MDAtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzExOlxcdFxcdC8qIFJlLWVuYWJsZSBhbmQgcmUtcmVzb2x2ZSB0aGUgbGluayBwYXJhbWV0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlxcdFxcdHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShwbCwgUEhZTElOS19ESVNBQkxFX01BQ19XT0wpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTktXFx0XFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzAwMDpcXHRcXHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDEtXFx0XFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE5MD1pbnQgcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI1MC1cXHQgKiBjYXVzZSBwaHlsaWIgdG8gcmVuZWdvdGlhdGUgKGlmIEFOIGlzIGVuYWJsZWQpIHdoaWNoIHdpbGwgaW4gdHVyblxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI1MTpcXHQgKiBjYWxsIG91ciBwaHlsaW5rX3BoeV9jaGFuZ2UoKSBhbmQgdHJpZ2dlciBhIHJlc29sdmUuICBOb3RlIHRoYXRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNTItXFx0ICogd2UgY2FuJ3QgaG9sZCBvdXIgc3RhdGUgbXV0ZXggd2hpbGUgY2FsbGluZyBwaHlfc2V0X2FzeW1fcGF1c2UoKS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI1OC1cXHQvKiBJZiB0aGUgbWFudWFsIHBhdXNlIHNldHRpbmdzIGNoYW5nZWQsIG1ha2Ugc3VyZSB3ZSB0cmlnZ2VyIGFcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNTk6XFx0ICogcmVzb2x2ZSB0byB1cGRhdGUgdGhlaXIgc3RhdGU7IHdlIGNhbiBub3QgZ3VhcmFudGVlIHRoYXQgdGhlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjYwLVxcdCAqIGxpbmsgd2lsbCBjeWNsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI2My1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI2NDpcXHRcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyNjUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zOTAxPXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX2xpbmtfZG93bih2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MDc6XFx0cGh5bGlua19ydW5fcmVzb2x2ZV9hbmRfZGlzYWJsZShwbCwgUEhZTElOS19ESVNBQkxFX0xJTkspO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM5MTA9c3RhdGljIHZvaWQgcGh5bGlua19zZnBfbGlua191cCh2b2lkICp1cHN0cmVhbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxNS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5MTY6XFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfTElOSyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTE3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzk2OD1zdGF0aWMgc3RydWN0IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk4My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM5ODQ6dm9pZCBwaHlsaW5rX3Jlc29sdmVfYzczKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzk4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MDAzOlxcdHBoeWxpbmtfcmVzb2x2ZV9hbl9wYXVzZShzdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMDU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXNvbHZlX2M3Myk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MDA2LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDAwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV9jMzdfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDAyNy1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQwMjg6XFx0cGh5bGlua19yZXNvbHZlX2FuX3BhdXNlKHN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQwMjktfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzg0PXZvaWQgcGh5bGlua19yZXBsYXlfbGlua19iZWdpbihzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzODctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzg4OlxcdHBoeWxpbmtfcnVuX3Jlc29sdmVfYW5kX2Rpc2FibGUocGwsIFBIWUxJTktfRElTQUJMRV9SRVBMQVkpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQ0MDc9dm9pZCBwaHlsaW5rX3JlcGxheV9saW5rX2VuZChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MTYtXFx0cGwtXFx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IHRydWU7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE3OlxcdHBoeWxpbmtfZW5hYmxlX2FuZF9ydW5fcmVzb2x2ZShwbCwgUEhZTElOS19ESVNBQkxFX1JFUExBWSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0NDE4OlxcdGZsdXNoX3dvcmsoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MTktfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozMi4wOTk1NTgyNjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDY4NDczNzQwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoaXMgUGh5bGluayBGaXgncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggbW9kaWZ5aW5nIHRoZSBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCdzIGVzc2VudGlhbGx5IGV4ZWN1dGFibGUgbG9naWMgd2l0aGluIHRoZSBjb3JlIGBwaHlsaW5rX3Jlc29sdmVgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFRoYXQncyBhIGNsYXNzaWMgZnV6emluZyB0YXJnZXQsIHJpcGUgZm9yIGNhdGNoaW5nIHVuZXhwZWN0ZWQgc3RhdGVzIG9yIGRhdGEgY29ycnVwdGlvbi4gVGhlIGZhY3QgdGhhdCBgcGh5bGlua19yZXNvbHZlYCBnZXRzIGNhbGxlZCBpbiByZXNwb25zZSB0byBhIHJhbmdlIG9mIGV2ZW50cywgbGlrZSBsaW5rIHN0YXRlIGNoYW5nZXMsIHBoeWxpbmsgc3RhcnQvc3RvcCwgYW5kIGV2ZW4gZXRodG9vbCBjb21tYW5kcywgbWFrZXMgaXQgYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZHVlIHRvIGl0cyBicm9hZCBleHBvc3VyZS4gUGx1cywgSSBrbm93IHRoaXMgY29kZSBpcyBhbHNvIHJlYWNoYWJsZSB0aHJvdWdoIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlcyDigJMgdGhpbmsgVVNCIGFkYXB0ZXJzIG9yIERTQSBzd2l0Y2hlcyDigJMgd2hpY2ggYXJlIGVhc2lseSBzcHVuIHVwIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gVGhpcyBzaWduaWZpY2FudGx5IHNpbXBsaWZpZXMgdGhlIGZ1enppbmcgc2V0dXAuXG5cbkkndmUgZGV0ZXJtaW5lZCB0aGUgZm9sbG93aW5nOiB0aGlzIGlzIGEgKldvcnRoRnV6emluZyogc2l0dWF0aW9uLiBJIGlkZW50aWZpZWQgdGhlICpGb2N1c1N5bWJvbHMqIGFzIGBwaHlsaW5rX3Jlc29sdmVgIGl0c2VsZiwgYW5kIHBlcmhhcHMgYWxzbyBgcGh5bGlua19zdGFydGAgYW5kIGBwaHlsaW5rX3N0b3BgIGFzIGxpa2VseSBlbnRyeSBwb2ludHMuIFRoZSAqRW5hYmxlQ29uZmlncyogaW5jbHVkZSBgUEhZTElOS2AsIGBQSFlMSUJgLCBhbmQgZWl0aGVyIGBORVRfRFNBYCwgYFVTQl9MQU43OFhYYCwgb3IgYFVTQl9ORVRfQVg4ODE3WGAuIEl0IGFwcGVhcnMgYFBIWUxJTktgIGlzIHRyaXN0YXRlIGFuZCBzZWxlY3RlZCBieSBgUEhZTElCYCBhbmQgYFNXUEhZYCwgc28gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgZW5hYmxlZCwgb3IgcG9zc2libHkganVzdCBlbmFibGUgYFBIWUxJTktgIGRpcmVjdGx5IGlmIHRoYXQncyBhbiBvcHRpb24uIEkndmUgZG91YmxlLWNoZWNrZWQgbXkgd29yayBhZ2FpbnN0IHRoZSBndWlkZWxpbmVzOiB0aGUgcmVhY2hhYmlsaXR5IGlzIHRoZXJlLCB0aGUgcmVhc29uaW5nIGlzIHNvbGlkLCBhbmQgSSd2ZSB0YXJnZXRlZCBub24tdWJpcXVpdG91cywgcGF0Y2gtc3BlY2lmaWMgZnVuY3Rpb25zLiBOb3csIEknbSByZWFkeSB0byBjcmFmdCB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2Nzc3LCJPdXRwdXRUb2tlbnMiOjE3OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi43ODQyOTgwOTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQwNDk4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBIWUxJTktcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfTEFONzhYWFwiLFxuICAgIFwiTkVUX0RTQVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeWxpbmtfcmVzb2x2ZVwiLFxuICAgIFwicGh5bGlua19zdGFydFwiLFxuICAgIFwicGh5bGlua19zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBoeWxpbmtfcmVzb2x2ZWAgaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgIHRvIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3R1cmUgZnJvbSBgcGwtXFx1MDAzZWxpbmtfY29uZmlnYCB3aGVuIGBwaHlsaW5rX2Rpc2FibGVfc3RhdGVgIG9yIGBsaW5rX2ZhaWxlZGAgaXMgc2V0LCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgZHVyaW5nIGxpbmsgcmVzb2x1dGlvbi4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiBhbmQgbGluayBzdGF0ZSBjaGFuZ2VzIG9uIGVtdWxhdGVkIFVTQiBuZXR3b3JrIGRldmljZXMgYW5kIERTQSBzd2l0Y2ggaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQSFlMSU5LXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlVTQl9ORVRfQVg4ODE3WFwiLFxuICAgIFwiVVNCX0xBTjc4WFhcIixcbiAgICBcIk5FVF9EU0FcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlsaW5rX3Jlc29sdmVcIixcbiAgICBcInBoeWxpbmtfc3RhcnRcIixcbiAgICBcInBoeWxpbmtfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwaHlsaW5rX3Jlc29sdmVgIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZSBgbGlua19zdGF0ZWAgc3RydWN0dXJlIGZyb20gYHBsLVxcdTAwM2VsaW5rX2NvbmZpZ2Agd2hlbiBgcGh5bGlua19kaXNhYmxlX3N0YXRlYCBvciBgbGlua19mYWlsZWRgIGlzIHNldCwgcHJldmVudGluZyB1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIGR1cmluZyBsaW5rIHJlc29sdXRpb24uIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIGxpbmsgc3RhdGUgY2hhbmdlcyBvbiBlbXVsYXRlZCBVU0IgbmV0d29yayBkZXZpY2VzIGFuZCBEU0Egc3dpdGNoIGludGVyZmFjZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjM2Ljg4ODM1NDY1NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMzYwNTk3MzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi44ODg3NjUzNzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDMzNTY0MjcyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1MjQzMjQxNGIxOTliNmFiZGZiYmU1YTRjNTgzZDA5NzJlMzNmMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjM1OjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbmluZGV4IDNlYzNiYjQzOTEwOTUuLmExNDU4ZGE4MTExYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5AQCAtMTYzMCw4ICsxNjMwLDEwIEBAIHN0YXRpYyB2b2lkIHBoeWxpbmtfcmVzb2x2ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gXG4gXHRpZiAocGwtXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKSB7XG4gXHRcdHBsLVx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKSB7XG4rXHRcdGxpbmtfc3RhdGUgPSBwbC1cdTAwM2VsaW5rX2NvbmZpZztcbiBcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4gXHRcdHJldHJpZ2dlciA9IHRydWU7XG4gXHR9IGVsc2UgaWYgKHBsLVx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjozNi44ODg3NjYxNTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDUxNDAzMTI5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgdGhpbmtpbmcgYWxvdWQgYXMgSSBnbzpcblxuKipJbnNwZWN0aW5nIHRoZSBgcGh5bGluay5jYCBDb2RlKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIHBhdGNoLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZmlsZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24sIGFyb3VuZCBsaW5lIDE2MzAuIEdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIHNvdW5kcyBsaWtlIHRoZSBsaWtlbHkgcG9pbnQgd2hlcmUgdGhlIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBhcmUgdGFraW5nIHBsYWNlLiBJJ2xsIHVzZSBhIGByZWFkLWZpbGVgIGNvbW1hbmQsIGlmIGF2YWlsYWJsZSwgb3IganVzdCBvcGVuIHRoZSBmaWxlIGFuZCBzY3JvbGwgdGhlcmUgbWFudWFsbHksIHRvIGdldCBhIHByZWNpc2UgbG9vay4gRnJvbSB0aGVyZSBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgZXhhY3RseSB3aGF0IGlzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDEuNDAyODAwNjU5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2MTA6XFx0c3RhdGljIGJvb2wgcGh5bGlua19saW5rX2lzX3VwKHN0cnVjdCBwaHlsaW5rICpwbClcXG4xNjExOlxcdHtcXG4xNjEyOlxcdFxcdHJldHVybiBwbC1cXHUwMDNlbmV0ZGV2ID8gbmV0aWZfY2Fycmllcl9vayhwbC1cXHUwMDNlbmV0ZGV2KSA6IHBsLVxcdTAwM2VvbGRfbGlua19zdGF0ZTtcXG4xNjEzOlxcdH1cXG4xNjE0OlxcdFxcbjE2MTU6XFx0c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4xNjE2OlxcdHtcXG4xNjE3OlxcdFxcdHN0cnVjdCBwaHlsaW5rICpwbCA9IGNvbnRhaW5lcl9vZih3LCBzdHJ1Y3QgcGh5bGluaywgcmVzb2x2ZSk7XFxuMTYxODpcXHRcXHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlIGxpbmtfc3RhdGU7XFxuMTYxOTpcXHRcXHRib29sIG1hY19jb25maWcgPSBmYWxzZTtcXG4xNjIwOlxcdFxcdGJvb2wgcmV0cmlnZ2VyID0gZmFsc2U7XFxuMTYyMTpcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5O1xcbjE2MjI6XFx0XFx0Ym9vbCBjdXJfbGlua19zdGF0ZTtcXG4xNjIzOlxcdFxcbjE2MjQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMTYyNTpcXHRcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbjE2MjY6XFx0XFx0aWYgKHBoeSlcXG4xNjI3OlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMTYyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjE2Mjk6XFx0XFx0Y3VyX2xpbmtfc3RhdGUgPSBwaHlsaW5rX2xpbmtfaXNfdXAocGwpO1xcbjE2MzA6XFx0XFxuMTYzMTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkge1xcbjE2MzI6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfZmFpbGVkID0gZmFsc2U7XFxuMTYzMzpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbjE2MzQ6XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTYzNTpcXHRcXHR9IGVsc2UgaWYgKHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCkge1xcbjE2MzY6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4xNjM3OlxcdFxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbjE2Mzg6XFx0XFx0XFx0cmV0cmlnZ2VyID0gdHJ1ZTtcXG4xNjM5OlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuMTY0MDpcXHRcXHRcXHRwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2NDE6XFx0XFx0XFx0bWFjX2NvbmZpZyA9IGxpbmtfc3RhdGUubGluaztcXG4xNjQyOlxcdFxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgPT0gTUxPX0FOX1BIWSkge1xcbjE2NDM6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VwaHlfc3RhdGU7XFxuMTY0NDpcXHRcXHRcXHRtYWNfY29uZmlnID0gbGlua19zdGF0ZS5saW5rO1xcbjE2NDU6XFx0XFx0fSBlbHNlIHtcXG4xNjQ2OlxcdFxcdFxcdHBoeWxpbmtfbWFjX3Bjc19nZXRfc3RhdGUocGwsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG4xNjQ3OlxcdFxcbjE2NDg6XFx0XFx0XFx0LyogVGhlIFBDUyBtYXkgaGF2ZSBhIGxhdGNoaW5nIGxpbmstZmFpbCBpbmRpY2F0b3IuIElmIHRoZSBsaW5rXFxuMTY0OTpcXHRcXHRcXHQgKiB3YXMgdXAsIGJyaW5nIHRoZSBsaW5rIGRvd24gYW5kIHJlLXRyaWdnZXIgdGhlIHJlc29sdmUuXFxuMTY1MDpcXHRcXHRcXHQgKiBPdGhlcndpc2UsIHJlLXJlYWQgdGhlIFBDUyBzdGF0ZSB0byBnZXQgdGhlIGN1cnJlbnQgc3RhdHVzXFxuMTY1MTpcXHRcXHRcXHQgKiBvZiB0aGUgbGluay5cXG4xNjUyOlxcdFxcdFxcdCAqL1xcbjE2NTM6XFx0XFx0XFx0aWYgKCFsaW5rX3N0YXRlLmxpbmspIHtcXG4xNjU0OlxcdFxcdFxcdFxcdGlmIChjdXJfbGlua19zdGF0ZSlcXG4xNjU1OlxcdFxcdFxcdFxcdFxcdHJldHJpZ2dlciA9IHRydWU7XFxuMTY1NjpcXHRcXHRcXHRcXHRlbHNlXFxuMTY1NzpcXHRcXHRcXHRcXHRcXHRwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTY1ODpcXHRcXHRcXHR9XFxuMTY1OTpcXHRcXG4xNjYwOlxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBwaHksIHRoZSBcXFwidXBcXFwiIHN0YXRlIGlzIHRoZSB1bmlvbiBvZiBib3RoIHRoZVxcbjE2NjE6XFx0XFx0XFx0ICogUEhZIGFuZCB0aGUgTUFDXFxuMTY2MjpcXHRcXHRcXHQgKi9cXG4xNjYzOlxcdFxcdFxcdGlmIChwaHkpXFxuMTY2NDpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLmxpbmsgXFx1MDAyNj0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rO1xcbjE2NjU6XFx0XFxuMTY2NjpcXHRcXHRcXHQvKiBPbmx5IHVwZGF0ZSBpZiB0aGUgUEhZIGxpbmsgaXMgdXAgKi9cXG4xNjY3OlxcdFxcdFxcdGlmIChwaHkgXFx1MDAyNlxcdTAwMjYgcGwtXFx1MDAzZXBoeV9zdGF0ZS5saW5rKSB7XFxuMTY2ODpcXHRcXHRcXHRcXHQvKiBJZiB0aGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkLCBmb3JjZSBhIGxpbmsgZG93blxcbjE2Njk6XFx0XFx0XFx0XFx0ICogZXZlbnQgaWYgdGhlIGxpbmsgaXNuJ3QgYWxyZWFkeSBkb3duLCBhbmQgcmUtcmVzb2x2ZS5cXG4xNjcwOlxcdFxcdFxcdFxcdCAqL1xcbjE2NzE6XFx0XFx0XFx0XFx0aWYgKGxpbmtfc3RhdGUuaW50ZXJmYWNlICE9IHBsLVxcdTAwM2VwaHlfc3RhdGUuaW50ZXJmYWNlKSB7XFxuMTY3MjpcXHRcXHRcXHRcXHRcXHRyZXRyaWdnZXIgPSB0cnVlO1xcbjE2NzM6XFx0XFx0XFx0XFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuMTY3NDpcXHRcXHRcXHRcXHR9XFxuMTY3NTpcXHRcXG4xNjc2OlxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuaW50ZXJmYWNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5pbnRlcmZhY2U7XFxuMTY3NzpcXHRcXG4xNjc4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBkb2luZyByYXRlIG1hdGNoaW5nLCB0aGVuIHRoZSBsaW5rXFxuMTY3OTpcXHRcXHRcXHRcXHQgKiBzcGVlZC9kdXBsZXggY29tZXMgZnJvbSB0aGUgUEhZXFxuMTY4MDpcXHRcXHRcXHRcXHQgKi9cXG4xNjgxOlxcdFxcdFxcdFxcdGlmIChwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmcpIHtcXG4xNjgyOlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUucmF0ZV9tYXRjaGluZyA9XFxuMTY4MzpcXHRcXHRcXHRcXHRcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLnJhdGVfbWF0Y2hpbmc7XFxuMTY4NDpcXHRcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnNwZWVkID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5zcGVlZDtcXG4xNjg1OlxcdFxcdFxcdFxcdFxcdGxpbmtfc3RhdGUuZHVwbGV4ID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXg7XFxuMTY4NjpcXHRcXHRcXHRcXHR9XFxuMTY4NzpcXHRcXG4xNjg4OlxcdFxcdFxcdFxcdC8qIElmIHdlIGhhdmUgYSBQSFksIHdlIG5lZWQgdG8gdXBkYXRlIHdpdGggdGhlIFBIWVxcbjE2ODk6XFx0XFx0XFx0XFx0ICogZmxvdyBjb250cm9sIGJpdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjM2OjQxLjQwMzA1NTYwOVoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjg4MjExNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGBwaHlsaW5rX3Jlc29sdmVgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRpc3NlY3QgdGhlIHJlc3Qgb2YgdGhpcyBgcGh5bGlua19yZXNvbHZlYCBmdW5jdGlvbi4gSSd2ZSBnb3QgYSBkZWNlbnQgZ3Jhc3Agb24gdGhlIGluaXRpYWwgcGllY2VzLCBidXQgdGhlIGRldmlsJ3Mgb2Z0ZW4gaW4gdGhlIGRldGFpbHMsIGFuZCBJIG5lZWQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBlZGdlIGNhc2VzIGFuZCB0aGUgbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSSB3YW50IHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYWxnb3JpdGhtLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBob3cgaXQgZGVhbHMgd2l0aCBwb3RlbnRpYWwgY29uZmxpY3RzLCBjaXJjdWxhciByZWZlcmVuY2VzLCBhbmQgdGhvc2UgbmFzdHksIGRlZXBseSBuZXN0ZWQgZGVwZW5kZW5jeSBzdHJ1Y3R1cmVzIHRoYXQgYWx3YXlzIHNlZW0gdG8gcG9wIHVwLiBJcyBpdCB1c2luZyBhIHJvYnVzdCBjb25mbGljdCByZXNvbHV0aW9uIHN0cmF0ZWd5PyBEb2VzIGl0IGxldmVyYWdlIGFueSBhZHZhbmNlZCB0ZWNobmlxdWVzIGxpa2UgbWVtb2l6YXRpb24gdG8gb3B0aW1pemUgcGVyZm9ybWFuY2Ugb24gbGFyZ2VyIGRlcGVuZGVuY3kgZ3JhcGhzPyBXaGF0J3MgdGhlIGVycm9yIGhhbmRsaW5nIGxpa2U/IElzIGl0IGdyYWNlZnVsLCBvciB3aWxsIGl0IGp1c3QgdGhyb3cgZXhjZXB0aW9ucyBhbGwgb3ZlciB0aGUgcGxhY2U/IEknbSBjdXJpb3VzIGFib3V0IHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgZW1wbG95ZWQgaW50ZXJuYWxseS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgZGljdGlvbmFyeSwgYSBncmFwaCwgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IFRoZSBjaG9pY2VzIGhlcmUgaGF2ZSBhIGh1Z2UgaW1wYWN0IG9uIGVmZmljaWVuY3kgYW5kIHNjYWxhYmlsaXR5LiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHJlc291cmNlIGV4aGF1c3Rpb24gb3IgcG90ZW50aWFsIGRlbmlhbC1vZi1zZXJ2aWNlIHZlY3RvcnMuIEdvdHRhIGJlIHRob3JvdWdoLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYzNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDMuNjkxMjY5ODAxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2OTAsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE2OTA6XFx0XFx0XFx0XFx0ICovXFxuMTY5MTpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnBhdXNlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZS5wYXVzZTtcXG4xNjkyOlxcdFxcdFxcdFxcdG1hY19jb25maWcgPSB0cnVlO1xcbjE2OTM6XFx0XFx0XFx0fVxcbjE2OTQ6XFx0XFx0fVxcbjE2OTU6XFx0XFxuMTY5NjpcXHRcXHRpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxcbjE2OTc6XFx0XFx0XFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE2OTg6XFx0XFxuMTY5OTpcXHRcXHRpZiAoKG1hY19jb25maWcgXFx1MDAyNlxcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcXG4xNzAwOlxcdFxcdCAgICBwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnKSB7XFxuMTcwMTpcXHRcXHRcXHQvKiBUaGUgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkIG9yIGEgZm9yY2VkIG1ham9yIGNvbmZpZ3VyYXRpb25cXG4xNzAyOlxcdFxcdFxcdCAqIHdhcyByZXF1ZXN0ZWQsIHNvIGZvcmNlIHRoZSBsaW5rIGRvd24gYW5kIHRoZW4gcmVjb25maWd1cmUuXFxuMTcwMzpcXHRcXHRcXHQgKi9cXG4xNzA0OlxcdFxcdFxcdGlmIChjdXJfbGlua19zdGF0ZSkge1xcbjE3MDU6XFx0XFx0XFx0XFx0cGh5bGlua19saW5rX2Rvd24ocGwpO1xcbjE3MDY6XFx0XFx0XFx0XFx0Y3VyX2xpbmtfc3RhdGUgPSBmYWxzZTtcXG4xNzA3OlxcdFxcdFxcdH1cXG4xNzA4OlxcdFxcdFxcdHBoeWxpbmtfbWFqb3JfY29uZmlnKHBsLCBmYWxzZSwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE3MDk6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xcbjE3MTA6XFx0XFx0XFx0cGwtXFx1MDAzZWZvcmNlX21ham9yX2NvbmZpZyA9IGZhbHNlO1xcbjE3MTE6XFx0XFx0fVxcbjE3MTI6XFx0XFxuMTcxMzpcXHRcXHQvKiBJZiBjb25maWd1cmF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgZmFpbGVkLCBmb3JjZSB0aGUgbGluayBkb3duXFxuMTcxNDpcXHRcXHQgKiB1bnRpbCB3ZSBnZXQgYSBzdWNjZXNzZnVsIGNvbmZpZ3VyYXRpb24uXFxuMTcxNTpcXHRcXHQgKi9cXG4xNzE2OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFqb3JfY29uZmlnX2ZhaWxlZClcXG4xNzE3OlxcdFxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbjE3MTg6XFx0XFxuMTcxOTpcXHRcXHRpZiAobGlua19zdGF0ZS5saW5rICE9IGN1cl9saW5rX3N0YXRlKSB7XFxuMTcyMDpcXHRcXHRcXHRwbC1cXHUwMDNlb2xkX2xpbmtfc3RhdGUgPSBsaW5rX3N0YXRlLmxpbms7XFxuMTcyMTpcXHRcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluaylcXG4xNzIyOlxcdFxcdFxcdFxcdHBoeWxpbmtfbGlua19kb3duKHBsKTtcXG4xNzIzOlxcdFxcdFxcdGVsc2VcXG4xNzI0OlxcdFxcdFxcdFxcdHBoeWxpbmtfbGlua191cChwbCwgbGlua19zdGF0ZSk7XFxuMTcyNTpcXHRcXHR9XFxuMTcyNjpcXHRcXHRpZiAoIWxpbmtfc3RhdGUubGluayBcXHUwMDI2XFx1MDAyNiByZXRyaWdnZXIpIHtcXG4xNzI3OlxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCA9IGZhbHNlO1xcbjE3Mjg6XFx0XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbjE3Mjk6XFx0XFx0fVxcbjE3MzA6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjE3MzE6XFx0XFx0aWYgKHBoeSlcXG4xNzMyOlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNzMzOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMTczNDpcXHR9XFxuMTczNTpcXHRcXG4xNzM2OlxcdHN0YXRpYyB2b2lkIHBoeWxpbmtfcnVuX3Jlc29sdmUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbjE3Mzc6XFx0e1xcbjE3Mzg6XFx0XFx0aWYgKCFwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKVxcbjE3Mzk6XFx0XFx0XFx0cXVldWVfd29yayhzeXN0ZW1fcG93ZXJfZWZmaWNpZW50X3dxLCBcXHUwMDI2cGwtXFx1MDAzZXJlc29sdmUpO1xcbjE3NDA6XFx0fVxcbjE3NDE6XFx0XFxuMTc0MjpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3J1bl9yZXNvbHZlX2FuZF9kaXNhYmxlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG4xNzQzOlxcdHtcXG4xNzQ0OlxcdFxcdHVuc2lnbmVkIGxvbmcgc3RhdGUgPSBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlO1xcbjE3NDU6XFx0XFxuMTc0NjpcXHRcXHRzZXRfYml0KGJpdCwgXFx1MDAyNnBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpO1xcbjE3NDc6XFx0XFx0aWYgKHN0YXRlID09IDApIHtcXG4xNzQ4OlxcdFxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG4xNzQ5OlxcdFxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlKTtcXG4xNzUwOlxcdFxcdH1cXG4xNzUxOlxcdH1cXG4xNzUyOlxcdFxcbjE3NTM6XFx0c3RhdGljIHZvaWQgcGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHN0cnVjdCBwaHlsaW5rICpwbCwgaW50IGJpdClcXG4xNzU0OlxcdHtcXG4xNzU1OlxcdFxcdGNsZWFyX2JpdChiaXQsIFxcdTAwMjZwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlKTtcXG4xNzU2OlxcdFxcdHBoeWxpbmtfcnVuX3Jlc29sdmUocGwpO1xcbjE3NTc6XFx0fVxcbjE3NTg6XFx0XFxuMTc1OTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX2ZpeGVkX3BvbGwoc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuMTc2MDpcXHR7XFxuMTc2MTpcXHRcXHRzdHJ1Y3QgcGh5bGluayAqcGwgPSBjb250YWluZXJfb2YodCwgc3RydWN0IHBoeWxpbmssIGxpbmtfcG9sbCk7XFxuMTc2MjpcXHRcXG4xNzYzOlxcdFxcdG1vZF90aW1lcih0LCBqaWZmaWVzICsgSFopO1xcbjE3NjQ6XFx0XFxuMTc2NTpcXHRcXHRwaHlsaW5rX3J1bl9yZXNvbHZlKHBsKTtcXG4xNzY2OlxcdH1cXG4xNzY3OlxcdFxcbjE3Njg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfdXBzdHJlYW1fb3BzIHNmcF9waHlsaW5rX29wcztcXG4xNzY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0My42OTE1MjU5NjFaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM1OTgzMTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHlsaW5rYCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3Qgd2hhdCB0aGlzIGRpZmYgaXMgYXR0ZW1wdGluZyB0byBhY2hpZXZlIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBMb29raW5nIGF0IHRoZSBwcmUtcGF0Y2ggY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGlmIChwbC1cdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUpYCBhbmQgYGVsc2UgaWYgKHBsLVx1MDAzZWxpbmtfZmFpbGVkKWAgYnJhbmNoZXMsIEknbSBub3RpY2luZyBhIHBvdGVudGlhbCBpc3N1ZS4gVGhlIGBsaW5rX3N0YXRlYCB2YXJpYWJsZSBpcyBhIGxvY2FsIHN0YWNrIHZhcmlhYmxlLCB3aGljaCBpbiB0aGVzZSBzY2VuYXJpb3MsIG9ubHkgaGFzIGl0cyBgbGlua2AgZmllbGQgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLiBUaGUgcmVtYWluaW5nIGZpZWxkcyB3aXRoaW4gdGhlIGBsaW5rX3N0YXRlYCBzdHJ1Y3Qg4oCTIHRoaW5ncyBsaWtlIGBpbnRlcmZhY2VgLCBgcGF1c2VgLCBhbmQgYHNwZWVkYCDigJMgYXJlIGxlZnQgYXMgdW5pbml0aWFsaXplZCBzdGFjayBtZW1vcnkuXG5cbkxhdGVyLCBpbiB0aGUgYHBoeWxpbmtfcmVzb2x2ZWAgZnVuY3Rpb24sIHRoZSBjb2RlIHByb2NlZWRzIHRvIGNhbGwgYHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3dgIHdpdGggdGhlIGFkZHJlc3Mgb2YgdGhpcyBwb3RlbnRpYWxseSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgYGxpbmtfc3RhdGVgIHZhcmlhYmxlLiBUaGlzIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZyBsb2dpYywgdGhlbiBwcm9jZWVkcyB0byByZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRoZXNlIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGlzIGlzIGNsYXNzaWMgdW5kZWZpbmVkIGJlaGF2aW9yLCB3aGljaCBjYW4gbGVhZCB0byB1bnByZWRpY3RhYmxlIHJlc3VsdHMsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSB2YWx1ZXMgb2YgYGxpbmtfc3RhdGUuaW50ZXJmYWNlYCwgYGxpbmtfc3RhdGUucGF1c2VgIGV0Yy4gVGhpcyBjb3VsZCBtYW5pZmVzdCBpbiBzdHJhbmdlIGxpbmsgYmVoYXZpb3JzLCBpbnRlcm1pdHRlbnQgZmFpbHVyZXMsIGFuZCBnZW5lcmFsIGluc3RhYmlsaXR5LlxuXG5NeSBpbW1lZGlhdGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBwYXRjaCBpbnRlbmRzIHRvIGFkZHJlc3MgdGhpcyBpbml0aWFsaXphdGlvbiBpc3N1ZSBhbmQgZW5zdXJlIHRoYXQgYWxsIGZpZWxkcyBvZiBgbGlua19zdGF0ZWAgYXJlIGNvbnNpc3RlbnRseSBzZXQgdG8gYSBrbm93biBzdGF0ZSBiZWZvcmUgdGhleSBhcmUgdXNlZC4gVGhlIHBhdGNoIGlzIHByb2JhYmx5IGZpeGluZyBhIGRhdGEtZGVwZW5kZW50LCBvciByYWNlIGNvbmRpdGlvbiwgb2Ygc29tZSBraW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDcuMDUxMzYxODE2WiIsIlNlcSI6MjYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzMDM1ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19hcHBseV9tYW51YWxfZmxvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODUyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODUzOnN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODU0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDc5LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTQ4MDpcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDgxLVxcdGlmIChwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE2MTU9c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTY5Ni1cXHRpZiAocGwtXFx1MDAzZWFjdF9saW5rX2FuX21vZGUgIT0gTUxPX0FOX0ZJWEVEKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5NzpcXHRcXHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjk4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0Ny4xOTE2NzA5OTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUxMzIzNDQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgUEhZIExpbmsgQ29uZmlndXJhdGlvbiBpbiBgcGh5bGluay5jYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgYHBoeWxpbmsuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDg1MyB0aHJvdWdoIDg3MC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBwaHlsaW5rIGhhbmRsZXMgdGhlIG5lZ290aWF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBQSFkgaW50ZXJmYWNlLiBJIHJlbWVtYmVyIHRoaXMgc2VjdGlvbiBkZWFscyB3aXRoIHRoZSBQSFkgbGluayBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZ2V0dGluZyB0aGUgcmlnaHQgc3BlZWQsIGR1cGxleCwgYW5kIGF1dG9uZWdvdGlhdGlvbiBzZXR0aW5ncy4gSSBzdXNwZWN0IHRoaXMgc25pcHBldCB0b3VjaGVzIHVwb24gdGhlIFBIWSdzIGFkdmVydGlzaW5nIGNhcGFiaWxpdGllcyBhbmQgaG93IHRob3NlIGFyZSByZWNvbmNpbGVkIHdpdGggdGhlIGRyaXZlcidzIHJlcXVlc3RlZCBzZXR0aW5ncy4gSSB3YW50IHRvIHBheSBhdHRlbnRpb24gdG8gaG93IHRoZXkgYXJlIGRlYWxpbmcgd2l0aCB0aGUgYWR2ZXJ0aXNlZCBjYXBhYmlsaXRpZXMgZnJvbSB0aGUgZGV2aWNlIGFuZCB3aGljaCBzZXR0aW5ncyB0aGUgc3lzdGVtIHRoZW4gc2V0dGxlcyBvbi4gVGhlcmUgY291bGQgYmUgc29tZSBzdWJ0bGV0aWVzIGhlcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdmFyaW91cyBQSFkgdHlwZXMgb3IgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgc29tZSByZXBvcnRlZCBsaW5rIGlzc3Vlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHBvdGVudGlhbCBtaXNtYXRjaGVzIGJldHdlZW4gd2hhdCB0aGUgUEhZIGFkdmVydGlzZXMgYW5kIHdoYXQgdGhlIHVwcGVyLWxheWVyIG5ldHdvcmsgc3RhY2sgZXhwZWN0cy4gQXJlIHRoZXkgcHJpb3JpdGl6aW5nIHRoZSBQSFkncyBjYXBhYmlsaXRpZXMgb3IgdGhlIGRyaXZlcidzIHJlcXVlc3RzLCBhbmQgaG93IGRvZXMgdGhlIGNvZGUgaGFuZGxlIHRoYXQgc2VsZWN0aW9uIHByb2Nlc3M/IEknbSBhbnRpY2lwYXRpbmcgc29tZSBjb25kaXRpb25hbCBsb2dpYyBoZXJlLCBtYXliZSBjaGVja2luZyBmb3Igc3BlY2lmaWMgZmVhdHVyZSBmbGFncyBvciB2ZW5kb3Itc3BlY2lmaWMgY2FwYWJpbGl0aWVzLiBJIGhhdmUgYSBmZWVsaW5nIHRoZSBhdXRvbmVnb3RpYXRpb24gcHJvY2VzcywgYW5kIGFueSBwb3RlbnRpYWwgZm9yY2UtbW9kZSBzZXR0aW5ncywgd2lsbCBiZSBjcml0aWNhbCB3aXRoaW4gdGhpcyBibG9jay4gQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMzEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo0OS43MDQ5MDc1NDhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODUwOlxcdFxcdHJldHVybiAwO1xcbiA4NTE6XFx0fVxcbiA4NTI6XFx0XFxuIDg1MzpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4gODU0OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbiA4NTU6XFx0e1xcbiA4NTY6XFx0XFx0LyogSWYgYXV0b25lZyBpcyBkaXNhYmxlZCwgcGF1c2UgQU4gaXMgYWxzbyBkaXNhYmxlZCAqL1xcbiA4NTc6XFx0XFx0aWYgKCFsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9BdXRvbmVnX0JJVCxcXG4gODU4OlxcdFxcdFxcdFxcdCAgICAgICBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpKVxcbiA4NTk6XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlIFxcdTAwMjY9IH5NTE9fUEFVU0VfQU47XFxuIDg2MDpcXHRcXG4gODYxOlxcdFxcdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXFxuIDg2MjpcXHRcXHRpZiAoIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxcbiA4NjM6XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlO1xcbiA4NjQ6XFx0fVxcbiA4NjU6XFx0XFxuIDg2NjpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX3Jlc29sdmVfYW5fcGF1c2Uoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuIDg2NzpcXHR7XFxuIDg2ODpcXHRcXHRib29sIHR4X3BhdXNlLCByeF9wYXVzZTtcXG4gODY5OlxcdFxcbiA4NzA6XFx0XFx0aWYgKHN0YXRlLVxcdTAwM2VkdXBsZXggPT0gRFVQTEVYX0ZVTEwpIHtcXG4gODcxOlxcdFxcdFxcdGxpbmttb2RlX3Jlc29sdmVfcGF1c2Uoc3RhdGUtXFx1MDAzZWFkdmVydGlzaW5nLFxcbiA4NzI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0YXRlLVxcdTAwM2VscF9hZHZlcnRpc2luZyxcXG4gODczOlxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dHhfcGF1c2UsIFxcdTAwMjZyeF9wYXVzZSk7XFxuIDg3NDpcXHRcXHRcXHRpZiAodHhfcGF1c2UpXFxuIDg3NTpcXHRcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgfD0gTUxPX1BBVVNFX1RYO1xcbiA4NzY6XFx0XFx0XFx0aWYgKHJ4X3BhdXNlKVxcbiA4Nzc6XFx0XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhdXNlIHw9IE1MT19QQVVTRV9SWDtcXG4gODc4OlxcdFxcdH1cXG4gODc5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NDkuNzA1MTgwMzU4WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNDgxNDYwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVbmluaXRpYWxpemVkIFZhcmlhYmxlIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBgcGh5bGlua19hcHBseV9tYW51YWxfZmxvd2AgaGFzIGEgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaXNzdWUsIHNwZWNpZmljYWxseSB3aXRoIGBsaW5rX3N0YXRlYCBpZiBgcGwtXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnYCBpcyBzZXQuIFRoZSBwYXRjaCBwcm92aWRlZCBzZWVtcyB0byBhZGRyZXNzIHRoaXMgYnkgaW5pdGlhbGl6aW5nIGBsaW5rX3N0YXRlYCB3aXRoIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AgaW4gY2VydGFpbiBzY2VuYXJpb3MuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCBmaXhpbmcgYW4gdW5pbml0IGJ1ZyFcIi5cblxuQnV0LCB3YWl0LCBJIG5lZWQgdG8gYmUgbW9yZSBtZXRob2RpY2FsIGhlcmUuIERvZXMgZml4aW5nIHRoaXMgd2FycmFudCBhIGBOZWVkc0tNU0FOPXRydWVgIGZsYWc/IExldCdzIHJlZnJlc2ggb3VyIG1lbW9yeSBvbiB0aGUgS01TQU4gZ3VpZGVsaW5lcy4gSXQncyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoICppbnRyb2R1Y2VzKiBvciAqZXhwb3NlcyogdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCAqb25seSogS01TQU4gd291bGQgY2F0Y2guIFRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGlmIEtBU0FOIG9yIG90aGVyIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgY2FuIGNhdGNoIHRoZSBpc3N1ZSwgdGhlcmUncyBubyBuZWVkIGZvciBLTVNBTi4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgYmVjYXVzZSBvZiB0aGUgcmVzb3VyY2UgY29zdCBhc3NvY2lhdGVkIHdpdGggcnVubmluZyBLTVNBTi5cblxuTXkgaW1tZWRpYXRlIGd1dCByZWFjdGlvbiBpcyB0byBzYXkgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgbG9va3MgbGlrZSBhIGZpeCwgbm90IGEgbmV3IHByb2JsZW0uIFRoaXMgaXMgYSBjcnVjaWFsIHBvaW50OiBJcyB0aGlzIGEgZml4IG9yIGEgbmV3IGV4cG9zdXJlP1xuXG5Ob3csIGxldCdzIGJyZWFrIGRvd24gdGhlIGNyaXRlcmlhIGZvciBgTmVlZHNLTVNBTj10cnVlYC4gSXQncyBhbGwgYWJvdXQgc3RydWN0dXJlcyBnb2luZyB0byB1c2VyIHNwYWNlLCBsb2dpYyByZWx5aW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBhbGxvY2F0aW9uIG9mIGNvbXBsZXggc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIGZpZWxkcywgb3IgbWVzc2luZyB3aXRoIGJvdW5kcyBjaGVja3MgaW4gYSB3YXkgdGhhdCBhbGxvd3MgYWNjZXNzIHRvIHVuaW5pdGlhbGl6ZWQgZGF0YS5cblxuQ29udmVyc2VseSwgYE5lZWRzS01TQU49ZmFsc2VgIGFwcGxpZXMgaWYgdGhlIGJ1ZyBpcyBvdXQtb2YtYm91bmRzLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4pLiBBbHNvLCBgTmVlZHNLTVNBTj1mYWxzZWAgaWYgYWxsIHN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIG9yIHRoZSBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLlxuXG5TbywgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIHBhdGNoLiBJdCBzZWVtcyB0byBiZSBhc3NpZ25pbmcgYHBsLVx1MDAzZWxpbmtfY29uZmlnYCB0byBgbGlua19zdGF0ZWAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciBgcGwtXHUwMDNlbGlua19jb25maWdgIGl0c2VsZiBpcyBhbHdheXMgZnVsbHkgaW5pdGlhbGl6ZWQgd2hlbiBjb3BpZWQuIElmIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AgaXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgZWxzZXdoZXJlLCB0aGVuIHRoZSBwYXRjaCBpcyBlc3NlbnRpYWxseSBtYXNraW5nIG9uZSB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdpdGggYW5vdGhlciwgYW5kIHRoZSBmaXggaXMgaW5jb21wbGV0ZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlIHRvIGNvbmZpcm0gaWYgYHBsLVx1MDAzZWxpbmtfY29uZmlnYCBpcyBpbml0aWFsaXplZCB0byBiZSBzdXJlIHRoYXQgdGhlIHBhdGNoIGlzIGVmZmVjdGl2ZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYSBuZXcgdW5pbml0IG1lbW9yeSBjb25kaXRpb24gZWxzZXdoZXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGluaXRpYWxpemF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo1NC43NTMzMzAwMDVaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzODMzNjAxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsaW5rX2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE9c3RydWN0IHBoeWxpbmsge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICptYWNfb3BzO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDU6XFx0c3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Ni1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjAtXFx0LyogVGhlIGxpbmsgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NjE6XFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTYyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA9c3RhdGljIHZvaWQgcGh5bGlua19jYXBzX3RvX2xpbmttb2Rlcyh1bnNpZ25lZCBsb25nICpsaW5rbW9kZXMsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4NC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NTogKiBwaHlsaW5rX2xpbWl0X21hY19zcGVlZCAtIGxpbWl0IHRoZSBwaHlsaW5rX2NvbmZpZyB0byBhIG1heGltdW0gc3BlZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4NjogKiBAY29uZmlnOiBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg3LSAqIEBtYXhfc3BlZWQ6IG1heGltdW0gc3BlZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzkxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzkyOnZvaWQgcGh5bGlua19saW1pdF9tYWNfc3BlZWQoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHUzMiBtYXhfc3BlZWQpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz02NTk9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX2ZpeGVkbGluayhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY3My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NDpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBzcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY3NTpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gRFVQTEVYX0hBTEY7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02NzYtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02NzctXFx0XFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbm9kZSwgXFxcImZ1bGwtZHVwbGV4XFxcIikpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2Nzg6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IERVUExFWF9GVUxMO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjc5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODQtXFx0XFx0XFx0X19zZXRfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjY4NTpcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy02ODYtXFx0XFx0aWYgKGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbm9kZSwgXFxcImFzeW0tcGF1c2VcXFwiKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTY4Ny1cXHRcXHRcXHRfX3NldF9iaXQoRVRIVE9PTF9MSU5LX01PREVfQXN5bV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo2ODg6XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNjg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MTgtXFx0XFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcxOTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4ID0gcHJvcFsxXSA/XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjAtXFx0XFx0XFx0XFx0XFx0XFx0RFVQTEVYX0ZVTEwgOiBEVVBMRVhfSEFMRjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyMTpcXHRcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgPSBwcm9wWzJdO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzIyLVxcdFxcdFxcdGlmIChwcm9wWzNdKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzIzLVxcdFxcdFxcdFxcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MjQ6XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI1LVxcdFxcdFxcdGlmIChwcm9wWzRdKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzI2LVxcdFxcdFxcdFxcdF9fc2V0X2JpdChFVEhUT09MX0xJTktfTU9ERV9Bc3ltX1BhdXNlX0JJVCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjcyNzpcXHRcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5scF9hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MjgtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03MzAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3MzE6XFx0aWYgKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCBcXHUwMDNlIFNQRUVEXzEwMDAgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjczMjpcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCAhPSBEVVBMRVhfRlVMTClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczMy1cXHRcXHRwaHlsaW5rX3dhcm4ocGwsIFxcXCJmaXhlZCBsaW5rIHNwZWNpZmllcyBoYWxmIGR1cGxleCBmb3IgJWRNYnBzIGxpbms/XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM0OlxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLnNwZWVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTczNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzM5OlxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MDpcXHRwaHlsaW5rX3ZhbGlkYXRlKHBsLCBwbC1cXHUwMDNlc3VwcG9ydGVkLCBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0MS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc0MjpcXHRjID0gcGh5X2NhcHNfbG9va3VwKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc0My1cXHRcXHRcXHQgICAgcGwtXFx1MDAzZXN1cHBvcnRlZCwgdHJ1ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1NS1cXHRcXHRsaW5rbW9kZV9vcihwbC1cXHUwMDNlc3VwcG9ydGVkLCBwbC1cXHUwMDNlc3VwcG9ydGVkLCBtYXRjaCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NTY6XFx0XFx0bGlua21vZGVfb3IocGwtXFx1MDAzZWxpbmtfY29uZmlnLmxwX2FkdmVydGlzaW5nLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NzU3OlxcdFxcdFxcdCAgICBwbC1cXHUwMDNlbGlua19jb25maWcubHBfYWR2ZXJ0aXNpbmcsIG1hdGNoKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc1OC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzU5LVxcdFxcdHBoeWxpbmtfd2FybihwbCwgXFxcImZpeGVkIGxpbmsgJXMgZHVwbGV4ICVkTWJwcyBub3QgcmVjb2duaXNlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2MDpcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPT0gRFVQTEVYX0ZVTEwgPyBcXFwiZnVsbFxcXCIgOiBcXFwiaGFsZlxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3NjE6XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNzYyLVxcdH1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2My1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2NDpcXHRsaW5rbW9kZV9hbmQocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy03NjUtXFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2Ni1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjc2NzpcXHRwbC1cXHUwMDNlbGlua19jb25maWcubGluayA9IDE7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo3Njg6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmFuX2NvbXBsZXRlID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTc2OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NzczPXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA2OlxcdFxcdHN3aXRjaCAocGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA3LVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MjgtXFx0XFx0XFx0Y2FwcyA9IH4oTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgyOTpcXHRcXHRcXHRjYXBzID0gcGh5bGlua19nZXRfY2FwYWJpbGl0aWVzKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UsIGNhcHMsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0UkFURV9NQVRDSF9OT05FKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODM2LVxcdFxcdFxcdFxcdCAgICBcXFwiaW5jb3JyZWN0IGxpbmsgbW9kZSAlcyBmb3IgaW4tYmFuZCBzdGF0dXNcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4Mzc6XFx0XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MzgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg0MC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg0MTpcXHRcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgcGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDItXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NDM6XFx0XFx0aWYgKHBoeWxpbmtfdmFsaWRhdGUocGwsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIFxcdTAwMjZwbC1cXHUwMDNlbGlua19jb25maWcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NDQtXFx0XFx0XFx0cGh5bGlua19lcnIocGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODYxLVxcdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4NjI6XFx0aWYgKCEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKSlcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcXHRcXHRzdGF0ZS1cXHUwMDNlcGF1c2UgPSBwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDIzPXN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX2FuX3Jlc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDI1LVxcdGlmIChwbC1cXHUwMDNlcGNzIFxcdTAwMjZcXHUwMDI2IGxpbmttb2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX0F1dG9uZWdfQklULFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNjpcXHRcXHRcXHRcXHRcXHQgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAyNzpcXHQgICAgcGh5X2ludGVyZmFjZV9tb2RlX2lzXzgwMjN6KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDI4LVxcdCAgICBwaHlsaW5rX2F1dG9uZWdfaW5iYW5kKHBsLVxcdTAwM2VhY3RfbGlua19hbl9tb2RlKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlxcdFxcdFxcdFxcdCAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzgzLVxcdFxcdCAgICBwaHlsaW5rX2FuX21vZGVfc3RyKHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODQ6XFx0XFx0ICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzODU6XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM4NjpcXHRcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg4LVxcdC8qIFJlY29tcHV0ZSB0aGUgUENTIG5lZyBtb2RlICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzg5OlxcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cXHUwMDNlcGNzLCBwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzkxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk1LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NjpcXHRyZXQgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XFx0XFx0XFx0XFx0ICEhKHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcXHUwMDI2IE1MT19QQVVTRV9BTikpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQwNz1zdGF0aWMgdm9pZCBwaHlsaW5rX21hY19wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQxMi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTM6XFx0bGlua21vZGVfY29weShzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE0LVxcdGxpbmttb2RlX3plcm8oc3RhdGUtXFx1MDAzZWxwX2FkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MTU6XFx0c3RhdGUtXFx1MDAzZWludGVyZmFjZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDE2OlxcdHN0YXRlLVxcdTAwM2VyYXRlX21hdGNoaW5nID0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLnJhdGVfbWF0Y2hpbmc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDE3LVxcdHN0YXRlLVxcdTAwM2Vhbl9jb21wbGV0ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjUtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0MjY6XFx0XFx0c3RhdGUtXFx1MDAzZXNwZWVkID0gIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0Mjc6XFx0XFx0c3RhdGUtXFx1MDAzZWR1cGxleCA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDI4OlxcdFxcdHN0YXRlLVxcdTAwM2VwYXVzZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0MjktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQxPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ0My17XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDQ0OlxcdCpzdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NDUtXFx0aWYgKHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWdldF9maXhlZF9zdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ1ND1zdGF0aWMgdm9pZCBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgZm9yY2VfcmVzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ2OC1cXHRjYXNlIE1MT19BTl9JTkJBTkQ6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDY5OlxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNDcwLVxcdFxcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE2MTU9c3RhdGljIHZvaWQgcGh5bGlua19yZXNvbHZlKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTYzMi1cXHRcXHRwbC1cXHUwMDNlbGlua19mYWlsZWQgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE2MzM6XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE2MzQtXFx0XFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM1LVxcdH0gZWxzZSBpZiAocGwtXFx1MDAzZWxpbmtfZmFpbGVkKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNjM2OlxcdFxcdGxpbmtfc3RhdGUgPSBwbC1cXHUwMDNlbGlua19jb25maWc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjM3LVxcdFxcdGxpbmtfc3RhdGUubGluayA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNjk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTY5OTpcXHRpZiAoKG1hY19jb25maWcgXFx1MDAyNlxcdTAwMjYgbGlua19zdGF0ZS5pbnRlcmZhY2UgIT0gcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkgfHxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3MDAtXFx0ICAgIHBsLVxcdTAwM2Vmb3JjZV9tYWpvcl9jb25maWcpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcwOC1cXHRcXHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZmFsc2UsIFxcdTAwMjZsaW5rX3N0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3MDk6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGxpbmtfc3RhdGUuaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTcxMC1cXHRcXHRwbC1cXHUwMDNlZm9yY2VfbWFqb3JfY29uZmlnID0gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MDM9aW50IHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE3LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgxODpcXHRhZHYgPSBwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmc7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODE5LVxcdGxpbmttb2RlX2FuZChhZHYsIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGMtXFx1MDAzZWxpbmttb2Rlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MjEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODIyOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IHN0YXRlLVxcdTAwM2VzcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MjM6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IHN0YXRlLVxcdTAwM2VkdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODI0OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5saW5rID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MjU6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmFuX2NvbXBsZXRlID0gMTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MjYtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogcGh5bGlua19jcmVhdGUoKSAtIGNyZWF0ZSBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4MzY6ICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNy0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUgZGVzY3JpYmluZyB0aGUgbmV0d29ya1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ5LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg1MDpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODUxLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODk5LVxcdFxcdHBsLVxcdTAwM2VsaW5rX3BvcnQgPSBQT1JUX01JSTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MDA6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGlmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkwMTpcXHRwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAyOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IFNQRUVEX1VOS05PV047XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTAzOlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDQtXFx0cGwtXFx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9ET1dOO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTA5LVxcdGxpbmttb2RlX2ZpbGwocGwtXFx1MDAzZXN1cHBvcnRlZCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTEwOlxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5MTE6XFx0cGh5bGlua192YWxpZGF0ZShwbCwgcGwtXFx1MDAzZXN1cHBvcnRlZCwgXFx1MDAyNnBsLVxcdTAwM2VsaW5rX2NvbmZpZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMDg4PXN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIxMzgtXFx0bGlua21vZGVfY29weShwbC1cXHUwMDNlc3VwcG9ydGVkLCBzdXBwb3J0ZWQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjEzOTpcXHRsaW5rbW9kZV9jb3B5KHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIxNDAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMzc9aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLVxcdFxcdHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cXHUwMDNlaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI0NDpcXHRcXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gcGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNTAtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjUxOlxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjUyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyODk9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMxNi1cXHRcXHRwbC1cXHUwMDNlbGlua19pbnRlcmZhY2UgPSBwaHlfZGV2LVxcdTAwM2VpbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzE3OlxcdFxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UgPSBwbC1cXHUwMDNlbGlua19pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzE4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjMyOC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzMjk6XFx0cmV0ID0gcGh5bGlua19icmluZ3VwX3BoeShwbCwgcGh5X2RldiwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzMwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0Mjk9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzNi1cXHRcXHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUpLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQzNzpcXHRcXHQgICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDM4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yOTc5PWludCBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTUtXFx0XFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk5NjpcXHRcXHQgKiB0byB1cGRhdGUgdGhlIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyBzZXR0aW5nczpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5OTctXFx0XFx0ICogLSB0aGUgY29uZmlndXJhdGlvbiByZXR1cm5lZCB2aWEga3NldHRpbmdzX2dldCgpIHdpbGwgY29tZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk5OC1cXHRcXHQgKiAgIGZyb20gcGh5bGliIHdoZW5ldmVyIGEgUEhZIGlzIHByZXNlbnQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTk5OlxcdFxcdCAqIC0gbGlua19jb25maWcuaW50ZXJmYWNlIHdpbGwgYmUgdXBkYXRlZCBieSB0aGUgUEhZIGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDAtXFx0XFx0ICogICBiYWNrIHZpYSBwaHlsaW5rX3BoeV9jaGFuZ2UoKSBhbmQgYSBzdWJzZXF1ZW50IHJlc29sdmUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMDYtXFx0XFx0ICogICBpcyBwYXNzZWQgb24gdGhlIGxpbmsgZnJvbSB0aGUgUEhZLCBhbmQgYWxsIG9mXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA3OlxcdFxcdCAqICAgbGlua19jb25maWcue3NwZWVkLGR1cGxleCxhbl9lbmFibGVkLHBhdXNlfSBhcmUgbm90IHVzZWQuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDA4OlxcdFxcdCAqIC0gdGhlIG9ubHkgcG9zc2libGUgdXNlIHdvdWxkIGJlIGxpbmtfY29uZmlnLmFkdmVydGlzaW5nXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDA5LVxcdFxcdCAqICAgcGF1c2UgbW9kZXMgd2hlbiBpbiAxMDAwYmFzZS1YIG1vZGUgd2l0aCBhIFBIWSwgYnV0IGluXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDE2OlxcdGNvbmZpZyA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMwMTctXFx0LyogTWFzayBvdXQgdW5zdXBwb3J0ZWQgYWR2ZXJ0aXNlbWVudHMgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzNS1cXHRcXHRpZiAocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMDM2OlxcdFxcdFxcdGlmIChjLVxcdTAwM2VzcGVlZCAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuc3BlZWQgfHxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwMzc6XFx0XFx0XFx0ICAgIGMtXFx1MDAzZWR1cGxleCAhPSBwbC1cXHUwMDNlbGlua19jb25maWcuZHVwbGV4KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzAzOC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzA1Mi1cXHRcXHRcXHRpZiAoIWxpbmttb2RlX2VxdWFsKGNvbmZpZy5hZHZlcnRpc2luZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMwNTM6XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5hZHZlcnRpc2luZykpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMDU0LVxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTE3LVxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTE4OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IGNvbmZpZy5zcGVlZDtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMTk6XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmR1cGxleCA9IGNvbmZpZy5kdXBsZXg7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIwLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEyMTpcXHRpZiAocGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBjb25maWcuaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTIyLVxcdFxcdC8qIFRoZSBpbnRlcmZhY2UgY2hhbmdlZCwgZS5nLiAxMDAwYmFzZS1YIFxcdTAwM2MtXFx1MDAzZSAyNTAwYmFzZS1YICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxMzAtXFx0XFx0XFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZhbHNlLCBcXHUwMDI2Y29uZmlnKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzE6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGNvbmZpZy5pbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTMyOlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzEzMzpcXHR9IGVsc2UgaWYgKCFsaW5rbW9kZV9lcXVhbChwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTM0LVxcdFxcdFxcdFxcdCAgIGNvbmZpZy5hZHZlcnRpc2luZykpIHtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxMzU6XFx0XFx0bGlua21vZGVfY29weShwbC1cXHUwMDNlbGlua19jb25maWcuYWR2ZXJ0aXNpbmcsIGNvbmZpZy5hZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTM2LVxcdFxcdHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQocGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc0PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3OC1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzk6XFx0cGF1c2UtXFx1MDAzZWF1dG9uZWcgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MDpcXHRwYXVzZS1cXHUwMDNlcnhfcGF1c2UgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE4MTpcXHRwYXVzZS1cXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfVFgpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTA9aW50IHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTIte1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MzpcXHRzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpjb25maWcgPSBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NC1cXHRib29sIG1hbnVhbF9jaGFuZ2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY1PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2NzktXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgwOlxcdGlmICghbGlua21vZGVfZXF1YWwocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNjgxOlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBzdGF0ZS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4Mi1cXHRcXHRjaGFuZ2VkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzY4NS1cXHRpZiAocGwtXFx1MDAzZXJlcV9saW5rX2FuX21vZGUgIT0gbW9kZSB8fFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzY4NjpcXHQgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSAhPSBzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg3LVxcdFxcdHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlID0gbW9kZTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2ODg6XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjg5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjozNjo1NC44OTE2NzYwMTJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg3MTc2NjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWVtb3J5IEFsbG9jYXRpb24gRGVlcCBEaXZlOiBgcGh5bGlua19jcmVhdGUoKWAgYW5kIGBremFsbG9jYCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIHdpdGggYHBsYCwgd2hpY2ggSSdtIGFzc3VtaW5nIGlzIGEgYHN0cnVjdCBwaHlsaW5rYCwgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jYCB3aXRoaW4gdGhlIGBwaHlsaW5rX2NyZWF0ZSgpYCBmdW5jdGlvbi4gVGhhdCdzIGEgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZS4gQWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgdGhvdWdoLiBJJ2QgYmV0dGVyIGNvbmZpcm0gdGhpcyB3aXRoaW4gYHBoeWxpbmtfY3JlYXRlKClgIGl0c2VsZi4gVGhlcmUgYXJlIGEgZmV3IHJlYXNvbnMgd2h5IHRoaXMgd291bGQgYmUgb24gbXkgcmFkYXI6IEZpcnN0LCBhbGxvY2F0aW9uIHN0cmF0ZWdpZXMgYXJlIGEgY3JpdGljYWwgYXJlYSBmb3IgcGVyZm9ybWFuY2UgYW5kIGZyYWdtZW50YXRpb24gaXNzdWVzLiBXZSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCB0aGUgcmlnaHQgYWxsb2NhdGlvbiBzdHJhdGVneSBpcyB1c2VkLiBga3phbGxvY2AgaXMgdHlwaWNhbGx5IGZpbmUuIEl0IHByb3ZpZGVzIHplcm8taW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyB1c3VhbGx5IGV4YWN0bHkgd2hhdCB3ZSB3YW50LCBidXQgaXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGFkZHMgYSBzbGlnaHQgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuIElmIHRoZSBzdHJ1Y3R1cmUgaXMgdmVyeSBsYXJnZSBvciBpZiBpdCdzIGluIGEgdmVyeSB0aWdodCBsb29wLCBpdCBtaWdodCBiZSB3b3J0aCBjb25zaWRlcmluZyBhbHRlcm5hdGUgbWV0aG9kcyAoaWYgd2UgY2FuIGxpdmUgd2l0aCB0aGUgY29uc2VxdWVuY2VzKS4gU2Vjb25kLCB1bmRlcnN0YW5kaW5nIHRoZSBtZW1vcnkgbW9kZWwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSBpcyBjcml0aWNhbCBpbiBhbnkgbW9kZXJuIE9TIGFuZCBjYW4gYWZmZWN0IG1lbW9yeSBzYWZldHkgaWYgd2UgaGF2ZSBhbnkgdW5kZWZpbmVkIHZhbHVlcy4gRmluYWxseSwgYmVjYXVzZSBgcGh5bGlua19jcmVhdGVgIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZXMsIGEgZ29vZCBzYW5pdHkgY2hlY2sgd291bGQgYmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgYWxsb2NhdGlvbiBhY3R1YWxseSBoYXMgYSBkZWFsbG9jYXRpb24gcGF0aC4gSSBzaG91bGQgcHJvYmFibHkgYmUgcHJlcGFyZWQgdG8gY29uc2lkZXIgd2hlcmUgYHBsYCBpcyBmcmVlZCBsYXRlciBvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NzgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NTcuNzYzNDQ2MTM3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODUwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODUwOlxcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4xODUxOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjE4NTI6XFx0XFx0XFx0XFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpZmFjZSxcXG4xODUzOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICptYWNfb3BzKVxcbjE4NTQ6XFx0e1xcbjE4NTU6XFx0XFx0c3RydWN0IHBoeWxpbmsgKnBsO1xcbjE4NTY6XFx0XFx0aW50IHJldDtcXG4xODU3OlxcdFxcbjE4NTg6XFx0XFx0LyogVmFsaWRhdGUgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb24gKi9cXG4xODU5OlxcdFxcdGlmIChwaHlfaW50ZXJmYWNlX2VtcHR5KGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpKSB7XFxuMTg2MDpcXHRcXHRcXHRkZXZfZXJyKGNvbmZpZy1cXHUwMDNlZGV2LFxcbjE4NjE6XFx0XFx0XFx0XFx0XFxcInBoeWxpbms6IGVycm9yOiBlbXB0eSBzdXBwb3J0ZWRfaW50ZXJmYWNlc1xcXFxuXFxcIik7XFxuMTg2MjpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4xODYzOlxcdFxcdH1cXG4xODY0OlxcdFxcbjE4NjU6XFx0XFx0cGwgPSBremFsbG9jX29iaigqcGwpO1xcbjE4NjY6XFx0XFx0aWYgKCFwbClcXG4xODY3OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbjE4Njg6XFx0XFxuMTg2OTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4xODcwOlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMTg3MTpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnBsLVxcdTAwM2VyZXNvbHZlLCBwaHlsaW5rX3Jlc29sdmUpO1xcbjE4NzI6XFx0XFxuMTg3MzpcXHRcXHRwbC1cXHUwMDNlY29uZmlnID0gY29uZmlnO1xcbjE4NzQ6XFx0XFx0aWYgKGNvbmZpZy1cXHUwMDNldHlwZSA9PSBQSFlMSU5LX05FVERFVikge1xcbjE4NzU6XFx0XFx0XFx0cGwtXFx1MDAzZW5ldGRldiA9IHRvX25ldF9kZXYoY29uZmlnLVxcdTAwM2VkZXYpO1xcbjE4NzY6XFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYocGwtXFx1MDAzZW5ldGRldik7XFxuMTg3NzpcXHRcXHR9IGVsc2UgaWYgKGNvbmZpZy1cXHUwMDNldHlwZSA9PSBQSFlMSU5LX0RFVikge1xcbjE4Nzg6XFx0XFx0XFx0cGwtXFx1MDAzZWRldiA9IGNvbmZpZy1cXHUwMDNlZGV2O1xcbjE4Nzk6XFx0XFx0fSBlbHNlIHtcXG4xODgwOlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTg4MTpcXHRcXHRcXHRnb3RvIGZyZWVfcGw7XFxuMTg4MjpcXHRcXHR9XFxuMTg4MzpcXHRcXG4xODg0OlxcdFxcdHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcyA9IHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKG1hY19vcHMpO1xcbjE4ODU6XFx0XFx0cGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWUgPSBwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMgXFx1MDAyNlxcdTAwMjZcXG4xODg2OlxcdFxcdFxcdFxcdCAgICAgICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzIFxcdTAwMjZcXHUwMDI2XFxuMTg4NzpcXHRcXHRcXHRcXHQgICAgICAgIXBoeV9pbnRlcmZhY2VfZW1wdHkocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbHBpX2ludGVyZmFjZXMpO1xcbjE4ODg6XFx0XFxuMTg4OTpcXHRcXHQvKiBTZXQgdGhlIGRlZmF1bHQgRUVFIGNvbmZpZ3VyYXRpb24gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6MzY6NTcuNzY0OTYyOTc3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NTk0MTcyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBVbmluaXRpYWxpemVkIE1lbW9yeSBSaXNrcyoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQncyBpbml0aWFsaXppbmcgYSBzdGFjayB2YXJpYWJsZSBjYWxsZWQgYGxpbmtfc3RhdGVgIGZyb20gdGhlIGV4aXN0aW5nIGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2AuIFByZXZpb3VzbHksIGluIHRob3NlIHR3byBzcGVjaWZpYyBicmFuY2hlcywgYGxpbmtfc3RhdGVgIHdhcyBvbmx5IHBhcnRpYWxseSBpbml0aWFsaXplZCDigJMganVzdCB0aGUgYGxpbmtgIGZpZWxkLiBUaGlzIGRpcmVjdGx5IGFkZHJlc3NlcyB0aGUgdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBpc3N1ZS4gR29vZC5cblxuSSd2ZSBjb25maXJtZWQgdGhhdCB0aGlzIHBhdGNoICpvbmx5KiBpbml0aWFsaXplcyBgbGlua19zdGF0ZWAuIEl0J3MgcHVsbGluZyB2YWxpZCBkYXRhIGZyb20gYW4gYWxyZWFkeSBpbml0aWFsaXplZCBzdHJ1Y3R1cmUgKGBwbC1cdTAwM2VsaW5rX2NvbmZpZ2ApLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBpc24ndCBjcmVhdGluZyBuZXcsIHVuaW5pdGlhbGl6ZWQgYWxsb2NhdGlvbnMsIG5vciBpcyBpdCBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGlzc3VlIGhlcmUgaXMgZGlyZWN0bHkgYWRkcmVzc2VkIGJ5IGluaXRpYWxpemluZyBhbiBvdGhlcndpc2UgdW5pbml0aWFsaXplZCBzdGFjayBzdHJ1Y3QgYGxpbmtfc3RhdGVgLlxuXG5UaGVyZWZvcmUsIEkgdGhpbmsgdGhpcyBpcyBhIGNsZWFyLWN1dCBjYXNlLiBUaGlzIHBhdGNoIGZpeGVzIGFuIGV4aXN0aW5nLCB1bmluaXRpYWxpemVkIG1lbW9yeSBwcm9ibGVtIGFuZCBJIHNlZSBubyBuZXcgS01TQU4tZGV0ZWN0YWJsZSByaXNrcyBiZWluZyBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiBhbmQgY29tcGlsZXIgdGVzdGluZywgYWxvbmcgd2l0aCB0aGUgdXN1YWwgc2FuaXRpemVycywgc2hvdWxkIGJlIHBlcmZlY3RseSBhZGVxdWF0ZS4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzbid0IHdhcnJhbnRlZC4gSSdtIGdvaW5nIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYmVjYXVzZSBpdCBtZWV0cyB0aGUgZm9sbG93aW5nIGNyaXRlcmlhOiBhbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZCwgYW5kIHRoZXJlJ3Mgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSSBmZWVsIGNvbWZvcnRhYmxlIGNhbGxpbmcgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTIsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6Mzc6MDEuMjI0Mzg0MzY2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlIGJ1ZyBpbiBwaHlsaW5rX3Jlc29sdmUoKSBieSBpbml0aWFsaXppbmcgbGlua19zdGF0ZSB3aXRoIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyB3aGVuIHBsLVxcdTAwM2VwaHlsaW5rX2Rpc2FibGVfc3RhdGUgb3IgcGwtXFx1MDAzZWxpbmtfZmFpbGVkIGlzIHNldCwgcHJpb3IgdG8gc2V0dGluZyBsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZSBhbmQgcGFzc2luZyBsaW5rX3N0YXRlIHRvIGRvd25zdHJlYW0gaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHBoeWxpbmsgc3RydWN0dXJlIGlzIHplcm8tYWxsb2NhdGVkIHZpYSBremFsbG9jIHVwb24gY3JlYXRpb24sIGFuZCBsaW5rX3N0YXRlIGlzIG5vdyBmdWxseSBpbml0aWFsaXplZCBvbiBhbGwgYnJhbmNoZXMgYmVmb3JlIGFueSBvZiBpdHMgZmllbGRzIGFyZSByZWFkLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHBhdGhzLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGtlcm5lbC10by11c2VyIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBzdGFjayB2YXJpYWJsZSBidWcgaW4gcGh5bGlua19yZXNvbHZlKCkgYnkgaW5pdGlhbGl6aW5nIGxpbmtfc3RhdGUgd2l0aCBwbC1cXHUwMDNlbGlua19jb25maWcgd2hlbiBwbC1cXHUwMDNlcGh5bGlua19kaXNhYmxlX3N0YXRlIG9yIHBsLVxcdTAwM2VsaW5rX2ZhaWxlZCBpcyBzZXQsIHByaW9yIHRvIHNldHRpbmcgbGlua19zdGF0ZS5saW5rID0gZmFsc2UgYW5kIHBhc3NpbmcgbGlua19zdGF0ZSB0byBkb3duc3RyZWFtIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwaHlsaW5rIHN0cnVjdHVyZSBpcyB6ZXJvLWFsbG9jYXRlZCB2aWEga3phbGxvYyB1cG9uIGNyZWF0aW9uLCBhbmQgbGlua19zdGF0ZSBpcyBub3cgZnVsbHkgaW5pdGlhbGl6ZWQgb24gYWxsIGJyYW5jaGVzIGJlZm9yZSBhbnkgb2YgaXRzIGZpZWxkcyBhcmUgcmVhZC4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBwYXRocywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[1] Phase: Succeeded StartedAt: 2026-09-06 06:37:14 +0000 UTC FinishedAt: 2026-09-06 06:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 06:37:14 +0000 UTC FinishedAt: 2026-09-06 06:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2] Phase: Succeeded StartedAt: 2026-09-06 06:37:14 +0000 UTC FinishedAt: 2026-09-06 07:08:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-09-06 06:37:14 +0000 UTC FinishedAt: 2026-09-06 07:08:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:37:14 +0000 UTC FinishedAt: 2026-09-06 06:37:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:37:14 +0000 UTC FinishedAt: 2026-09-06 06:37:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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-workflowjbhjq/series-workflowjbhjq-convert-artifact-3473189960/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:37:25 +0000 UTC FinishedAt: 2026-09-06 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:37:25 +0000 UTC FinishedAt: 2026-09-06 07:05:28 +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:*f2dc328b-34cf-4b68-9605-5dfa9fb5543a,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-workflowjbhjq/series-workflowjbhjq-convert-artifact-3473189960/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": "943b0b8d-fe83-4ec3-a359-5b8d5891dabd", "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-workflowjbhjq/series-workflowjbhjq-build-action-602052798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:37:25 +0000 UTC FinishedAt: 2026-09-06 07:05:07 +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:*f2dc328b-34cf-4b68-9605-5dfa9fb5543a,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-workflowjbhjq/series-workflowjbhjq-convert-artifact-3473189960/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": "943b0b8d-fe83-4ec3-a359-5b8d5891dabd", "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-workflowjbhjq/series-workflowjbhjq-build-action-602052798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:28 +0000 UTC FinishedAt: 2026-09-06 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:28 +0000 UTC FinishedAt: 2026-09-06 07:05:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:28 +0000 UTC FinishedAt: 2026-09-06 07:05:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:28 +0000 UTC FinishedAt: 2026-09-06 07:05:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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-workflowjbhjq/series-workflowjbhjq-convert-artifact-269360687/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:56 +0000 UTC FinishedAt: 2026-09-06 07:08:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","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:05:56 +0000 UTC FinishedAt: 2026-09-06 07:07:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*943b0b8d-fe83-4ec3-a359-5b8d5891dabd,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-workflowjbhjq/series-workflowjbhjq-build-action-602052798/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjbhjq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"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":["phylink_resolve","phylink_start","phylink_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"641d03105cc0d2437e32fdeec164f91a4ccef6c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PHYLINK","PHYLIB","USB_NET_AX8817X","USB_LAN78XX","NET_DSA"],"series_id":"fe8eb401-b8a2-4f17-87da-d31dcf916117","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Error StartedAt: 2026-09-06 07:08:07 +0000 UTC FinishedAt: 2026-09-06 07:08:08 +0000 UTC Input: nil Output: nil