Name: series-workflowlfmkz Phase: Succeeded StartedAt: 2026-09-05 16:35:49 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[0] Phase: Succeeded StartedAt: 2026-09-05 16:35:49 +0000 UTC FinishedAt: 2026-09-05 17:20:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 16:35:49 +0000 UTC FinishedAt: 2026-09-05 17:20:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2b4707a149a55e8fa75c9ef32b359d60f470a566", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NETFILTER", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2b4707a149a55e8fa75c9ef32b359d60f470a566", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NETFILTER", "INET" ], "series_id": "b5fcbb51-56e5-40d6-8262-e39ede0f43a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_trash_cleanup", "ip_vs_control_net_cleanup", "ip_vs_dest_trash_expire", "ip_vs_trash_put_dest" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfdHJhc2hfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtpcF92c19jb250cm9sX25ldF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3RyYXNoX3B1dF9kZXN0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxuXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NhZTYxZDA0NzQ5MzVlNjViYmQ5ZjFhMjcyZDhiN2I5OWZiZmZiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTc6MTk6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMTkyLDcgJiM0MzsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiB7XG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDtcbiBcbi1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xuIFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xuIFx0XHRsaXN0X2RlbChcdTAwMjZkZXN0LVx1MDAzZXRfbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfZGVzdF90cmFzaF9leHBpcmUmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2FlNjFkMDQ3NDkzNWU2NWJiZDlmMWEyNzJkOGI3Yjk5ZmJmZmI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwppbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMTkyLDcgJiM0MzsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIHsKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDsKIAotCXRpbWVyX2RlbGV0ZV9zeW5jKCZhbXA7aXB2cy0mZ3Q7ZGVzdF90cmFzaF90aW1lcik7CiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKTsKIAkvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCAmYW1wO2lwdnMtJmd0O2Rlc3RfdHJhc2gsIHRfbGlzdCkgewogCQlsaXN0X2RlbCgmYW1wO2Rlc3QtJmd0O3RfbGlzdCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIENsZWFudXAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpZmYuIEl0IGxvb2tzIGxpa2UgYSBjaGFuZ2Ugd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLiBUaGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIGlzIGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24uIEFoLCBJIHNlZSwgaXQmIzM5O3MgYSByZXBsYWNlbWVudCBvZiBgdGltZXJfZGVsZXRlX3N5bmNgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmNgIG9uIGBpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyYC4gSW50ZXJlc3RpbmcuIEkga25vdyBib3RoIG9mIHRob3NlIHRpbWVyIGZ1bmN0aW9ucywgYW5kIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGltZXIgbWFuYWdlbWVudCBhbmQgc3luY2hyb25pemF0aW9uIGluIHRoZSBJUFZTIGNvbnRleHQuIFRoZSBmYWN0IHRoYXQgYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIHVzZWQgc3VnZ2VzdHMgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCB0byBlbnN1cmluZyB0aGUgdGltZXImIzM5O3MgZ3JhY2VmdWwgdGVybWluYXRpb24sIHBlcmhhcHMgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIGxlYWtzLgoKTm93LCBJIG5lZWQgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBoYXZlIHRvIHNlZSB0aGlzIGNoYW5nZSBpbiBpdHMgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBmdW5jdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGA/IEl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhICYjMzQ7dHJhc2gmIzM0OyBvciBjbGVhbnVwIHByb2Nlc3MsIHByZXN1bWFibHkgZm9yIElQVlMgZGVzdGluYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyLCBhbmQgd2h5IHRoaXMgcGFydGljdWxhciBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeS4KCkxldCYjMzk7cyBxdWlja2x5IGdldCB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdyYWIgdGhlIHJlbGV2YW50IGNvZGUgYW5kIGdldCB0aGUgZnVsbCBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGFuZCBhbHNvIHRoZSB1c2VzIG9mIHRoZSBgZGVzdF90cmFzaF90aW1lcmAuIFRoYXQgc2hvdWxkIGFsbG93IG1lIHRvIGZvcm11bGF0ZSBhIHByb3BlciBhc3Nlc3NtZW50IG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBhIGJ1ZyBmaXgsIG9yIHNpbXBseSBhIGNvZGUgbW9kZXJuaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE4MDpcdH1cbjExODE6XHRcbjExODI6XHQvKlxuMTE4MzpcdCAqICBDbGVhbiB1cCBhbGwgdGhlIGRlc3RpbmF0aW9ucyBpbiB0aGUgdHJhc2hcbjExODQ6XHQgKiAgQ2FsbGVkIGJ5IHRoZSBpcF92c19jb250cm9sX2NsZWFudXAoKVxuMTE4NTpcdCAqXG4xMTg2Olx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcbjExODc6XHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcbjExODg6XHQgKiAgYXJlIGV4cGlyZWQsIGFuZCB0aGUgcmVmY250IG9mIGVhY2ggZGVzdGluYXRpb24gaW4gdGhlIHRyYXNoIG11c3RcbjExODk6XHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxuMTE5MDpcdCAqL1xuMTE5MTpcdHN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4xMTkyOlx0e1xuMTE5MzpcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XG4xMTk0Olx0XG4xMTk1Olx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4xMTk2Olx0XHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbjExOTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4xMTk4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbjExOTk6XHRcdFx0aXBfdnNfZGVzdF9mcmVlKGRlc3QpO1xuMTIwMDpcdFx0fVxuMTIwMTpcdH1cbjEyMDI6XHRcbjEyMDM6XHRzdGF0aWMgdm9pZCBpcF92c19zdGF0c19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4xMjA0Olx0e1xuMTIwNTpcdFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcbjEyMDY6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXG4xMjA3Olx0XHRcdFx0XHRcdFx0ICByY3VfaGVhZCk7XG4xMjA4Olx0XG4xMjA5Olx0XHRpcF92c19zdGF0c19yZWxlYXNlKFx1MDAyNnJzLVx1MDAzZXMpO1xuMTIxMDpcdFx0a2ZyZWUocnMpO1xuMTIxMTpcdH1cbjEyMTI6XHRcbjEyMTM6XHRzdGF0aWMgdm9pZFxuMTIxNDpcdGlwX3ZzX2NvcHlfc3RhdHMoc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnNyYylcbjEyMTU6XHR7XG4xMjE2Olx0I2RlZmluZSBJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoYykgZHN0LVx1MDAzZWMgPSBzcmMtXHUwMDNla3N0YXRzLmMgLSBzcmMtXHUwMDNla3N0YXRzMC5jXG4xMjE3Olx0XG4xMjE4Olx0XHRzcGluX2xvY2soXHUwMDI2c3JjLVx1MDAzZWxvY2spO1xuMTIxOTpcdFxuMTIyMDpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGNvbm5zKTtcbjEyMjE6XHRcdElQX1ZTX1NIT1dfU1RBVFNfQ09VTlRFUihpbnBrdHMpO1xuMTIyMjpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKG91dHBrdHMpO1xuMTIyMzpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGluYnl0ZXMpO1xuMTIyNDpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKG91dGJ5dGVzKTtcbjEyMjU6XHRcbjEyMjY6XHRcdGlwX3ZzX3JlYWRfZXN0aW1hdG9yKGRzdCwgc3JjKTtcbjEyMjc6XHRcbjEyMjg6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnNyYy1cdTAwM2Vsb2NrKTtcbjEyMjk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bSBnb2luZyB0byBmaXJlIHVwIGBncmVwcGVyYC4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGZpbmQgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfdHJhc2hfY2xlYW51cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE3ND1zdGF0aWMgdm9pZCBpcF92c19kZXN0X2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTAtICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5MTpzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MzE1PXZvaWQgX19uZXRfZXhpdCBpcF92c19jb250cm9sX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTc6XHRpcF92c190cmFzaF9jbGVhbnVwKGlwdnMpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTgtXHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwX3N5c2N0bChpcHZzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgQ2FsbCBQYXRoOiBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlcmUmIzM5O3MgYSByZWFzb24gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAsIGlzIG9uIG15IG1pbmQuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gbWV0aG9kaWNhbGx5IHRyYWNlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaXRzIGludm9jYXRpb25zIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiB0aGUgd2lkZXIgbmV0d29yayBjb250cm9sIHBsYW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzOyB3aGljaCBjb21wb25lbnRzIGFyZSByZWxpYW50IG9uIHRoZSBjbGVhbnVwIGl0IHByb3ZpZGVzPyBUaGlzIHdpbGwgcXVpY2tseSBwYWludCBhIHBpY3R1cmUgb2YgaXRzIHJvbGUgYW5kIGhlbHAgbWUgemVybyBpbiBvbiB3aGF0ZXZlciYjMzk7cyBkcml2aW5nIHRoaXMgaW52ZXN0aWdhdGlvbi4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgY2FsbCBncmFwaCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb250cm9sX25ldF9jbGVhbnVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3ZzLmg9MTc5Nz12b2lkIGlwX3ZzX3Byb3RvY29sX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTc5ODp2b2lkIGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpO1xuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNzk5LXZvaWQgaXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0ODA9c3RhdGljIGludCBfX25ldF9pbml0IF9faXBfdnNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTI1LXByb3RvY29sX2ZhaWw6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1MjY6XHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTI3LWNvbnRyb2xfZmFpbDpcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1MzQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBfX2lwX3ZzX2NsZWFudXBfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTQ0LVx0XHRpcF92c19wcm90b2NvbF9uZXRfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjU0NTpcdFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU0Ni1cdFx0aXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKGlwdnMpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MDQ2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTE5MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MTkyOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTE5My17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMTg9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IHJldHVybiAwOyB9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTIxOTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IH1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MjIwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MjMwPWludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTMxNTp2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE2LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE3LVx0aXBfdnNfdHJhc2hfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MzE4Olx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTMxOS1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIG9mIElQVlMgQ2xlYW51cCBpbiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyLWRvd24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBJUFZTIGNvZGUgaGFuZGxlcyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIGR1cmluZyB0aGUgdGVhcmRvd24gcHJvY2Vzcy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYF9faXBfdnNfY2xlYW51cF9iYXRjaGAgZnVuY3Rpb24sIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHJlZ2lzdGVyZWQgYXMgYSBwZXJuZXQgZXhpdCBmdW5jdGlvbiDigJMgc29tZXRoaW5nIGxpa2UgYG9wcy5leGl0X2JhdGNoID0gX19pcF92c19jbGVhbnVwX2JhdGNoYC4KCk15IHRyYWluIG9mIHRob3VnaHQgcmlnaHQgbm93IGlzIGNlbnRlcmVkIG9uIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHN5emthbGxlci4gU2luY2Ugc3l6a2FsbGVyIGlzIGNvbnN0YW50bHkgc3Bpbm5pbmcgdXAgYW5kIHRlYXJpbmcgZG93biBuZXR3b3JrIG5hbWVzcGFjZXMg4oCTIHVzaW5nIGB1bnNoYXJlKENMT05FX05FV05FVClgLCBgY2xvbmVgLCBhbmQgc29ja2V0IGNhbGxzIOKAkyBpdCYjMzk7cyBhIHBlcmZlY3QgZW52aXJvbm1lbnQgdG8gc3RyZXNzLXRlc3QgdGhpcyBhcmVhLiBXaGVuIGEgbmV0bnMgZXhpdHMsIHRoZSBgb3BzLSZndDtleGl0YCBvciwgaW4gdGhpcyBjYXNlLCBgb3BzLSZndDtleGl0X2JhdGNoYCBmdW5jdGlvbnMgZ2V0IGludm9rZWQuIFRoYXQmIzM5O3Mgd2hlcmUgSSBiZWxpZXZlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgIGNvbWVzIGludG8gcGxheS4KClNwZWNpZmljYWxseSwgaW5zaWRlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLCBpdCYjMzk7cyBjYWxsaW5nIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpYCwgd2hpY2ggdGhlbiBjYWxscyBgaXBfdnNfdHJhc2hfY2xlYW51cChpcHZzKWAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMgSSBuZWVkIHRvIGFuYWx5emUuCgpJJiMzOTttIGFsc28gY3VyaW91cyBhYm91dCB0aGUgYGRlc3RfdHJhc2hfdGltZXJgLiBJcyB0aGlzIHRpbWVyIHByb3Blcmx5IGluaXRpYWxpemVkIGFuZCB1c2VkPyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbnkgaW5zdGFuY2VzIG9mIGBkZXN0X3RyYXNoX3RpbWVyYCB3aXRoaW4gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIGNsZWFudXAgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzZWFyY2ggZm9yIHRoYXQgdmFyaWFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc3RfdHJhc2hfdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xMTU2PXN0cnVjdCBuZXRuc19pcHZzIHtcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTEyMDItXHRzcGlubG9ja190XHRcdGRlc3RfdHJhc2hfbG9jaztcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTIwMzpcdHN0cnVjdCB0aW1lcl9saXN0XHRkZXN0X3RyYXNoX3RpbWVyOyAvKiBleHBpcmF0aW9uIHRpbWVyICovXG5pbmNsdWRlL25ldC9pcF92cy5oLTEyMDQtXHRzdHJ1Y3QgbXV0ZXhcdFx0c2VydmljZV9tdXRleDsgICAgLyogc2VydmljZSByZWNvbmZpZyAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTQ4PXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX3B1dF9kZXN0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU2LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoKSBcdTAwMjZcdTAwMjYgIWNsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1NzpcdFx0bW9kX3RpbWVyKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU4LVx0XHRcdCAgamlmZmllcyAmIzQzOyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXHUwMDNlXHUwMDNlIDEpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5Ni1cdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzIyPXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzI0LVx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSB0aW1lcl9jb250YWluZXJfb2YoaXB2cywgdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzI1Olx0XHRcdFx0XHRcdCAgICAgZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNi1cdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbmV4dDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc0OC1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XHRcdG1vZF90aW1lcihcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc1MC1cdFx0XHQgIGppZmZpZXMgJiM0MzsgKElQX1ZTX0RFU1RfVFJBU0hfUEVSSU9EIFx1MDAzZVx1MDAzZSAxKSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMzA9aW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI0OC1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5Olx0dGltZXJfc2V0dXAoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM1NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgVGltZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZTogYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKWAuIFJpZ2h0IGF3YXksIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGluIG15IGhlYWQuIFdoeSB0aGlzIGNoYW5nZT8gVGhlIGNvbW1lbnQgc2F5cyBgdGltZXJfc2h1dGRvd25fc3luY2AgcHJldmVudHMgcmVhcm1pbmcgdGhlIHRpbWVyLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBJcyB0aGVyZSBhIHNjZW5hcmlvIHdoZXJlIHRoaXMgdGltZXIgKm5lZWRzKiB0byBiZSByZWFybWVkPyBBbmQgaWYgc28sIGhvdyBkb2VzIHNodXR0aW5nIGl0IGRvd24gYWZmZWN0IHRoZSBvdmVyYWxsIHN5c3RlbSBmdW5jdGlvbmFsaXR5PwoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBJcyB0aGlzIGEgY29kZSBwYXRoIHRoYXQmIzM5O3MgZWFzaWx5IHJlYWNoYWJsZT8gQ2FuIEkgdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBqdXN0IGEgcmVndWxhciBzeXN0ZW0/IFllcywgSVBWUyBpcyBhIGNvcmUgbmV0ZmlsdGVyIHN1YnN5c3RlbS4gSSBjYW4gYWNjZXNzIGl0IHZpYSBzb2Nrb3B0cywgbmV0bGluayDigJMgdGhpbmdzIGxpa2UgYGlwdnNhZG1gLCBnZW5lcmljIG5ldGxpbmssIGV2ZW4gaXB0YWJsZXMgaW50ZXJhY3Rpb24uIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgc3RhbmRhcmQgb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBnb29kOyBpdCBtZWFucyB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBsaWtlbHkgdGVzdCBhbmQgcmVwcm9kdWNlIHdpdGhvdXQgdG9vIG11Y2ggaGFzc2xlLgoKTmV4dCBzdGVwOiBJIG5lZWQgdG8gdmVyaWZ5IGFueSBgS2NvbmZpZ2AgcmVxdWlyZW1lbnRzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGJlaGF2aW9yLCBvciB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDM5OSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNzppZiBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcdElQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMxOlx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyLVx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozODpjb25maWdcdElQX1ZTX0RFQlVHXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNDQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcdElQX1ZTX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00Ni1cdGludCBcJiMzNDtJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc3PWNvbW1lbnQgXCYjMzQ7SVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNzgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcdElQX1ZTX1BST1RPX1RDUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODAtXHRib29sIFwmIzM0O1RDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4NTpjb25maWdcdElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXHRib29sIFwmIzM0O1VEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcdElQX1ZTX1BST1RPX0FIX0VTUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTI6XHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkzLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTQ6Y29uZmlnXHRJUF9WU19QUk9UT19FU1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk1LVx0Ym9vbCBcJiMzNDtFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTAwOmNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7U0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjExNTpjb25maWdcdElQX1ZTX1JSXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTIzLSBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcdElQX1ZTX1dSUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEzNzpjb25maWdcdElQX1ZTX0xDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNDc6Y29uZmlnXHRJUF9WU19XTENcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNzctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXHRJUF9WU19MQkxDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNzktXHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMDktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXHRJUF9WU19ESFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7ZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjE5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjIwOmNvbmZpZ1x0SVBfVlNfU0hcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIyMS1cdHRyaXN0YXRlIFwmIzM0O3NvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMzA6Y29uZmlnXHRJUF9WU19NSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVx0dHJpc3RhdGUgXCYjMzQ7bWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI0OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcdElQX1ZTX1NFRFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjUwLVx0dHJpc3RhdGUgXCYjMzQ7c2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI2MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI2Mjpjb25maWdcdElQX1ZTX05RXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZSBcJiMzNDtuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjc1OmNvbmZpZ1x0SVBfVlNfVFdPU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMxOT1jb21tZW50ICYjMzk7SVBWUyBhcHBsaWNhdGlvbiBoZWxwZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIwLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIxOmNvbmZpZ1x0SVBfVlNfRlRQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgaGVscGVyXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjM6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1RDUCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVQgXHUwMDI2XHUwMDI2IFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjQtXHRcdE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyNTpcdHNlbGVjdCBJUF9WU19ORkNUXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzM3OmNvbmZpZ1x0SVBfVlNfTkZDVFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NTpjb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNjAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNjE6ZW5kaWYgIyBJUF9WU1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT03PWlwX3ZzX3Byb3RvLW9ianMteSA6PVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjg6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19UQ1ApICYjNDM7PSBpcF92c19wcm90b190Y3Aub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjk6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19VRFApICYjNDM7PSBpcF92c19wcm90b191ZHAub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjEwOmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fQUhfRVNQKSAmIzQzOz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxMTppcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX1NDVFApICYjNDM7PSBpcF92c19wcm90b19zY3RwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xMz1pcF92cy1leHRyYV9vYmpzLXkgOj1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNDppcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xNj1pcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTIyLSMgSVBWUyBjb3JlXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI0LVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI1LSMgSVBWUyBzY2hlZHVsZXJzXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0lQX1ZTX1JSKSAmIzQzOz0gaXBfdnNfcnIub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19JUF9WU19XUlIpICYjNDM7PSBpcF92c193cnIub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JUF9WU19MQykgJiM0Mzs9IGlwX3ZzX2xjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfSVBfVlNfV0xDKSAmIzQzOz0gaXBfdnNfd2xjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSVBfVlNfRk8pICYjNDM7PSBpcF92c19mby5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0lQX1ZTX09WRikgJiM0Mzs9IGlwX3ZzX292Zi5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0lQX1ZTX0xCTEMpICYjNDM7PSBpcF92c19sYmxjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSVBfVlNfTEJMQ1IpICYjNDM7PSBpcF92c19sYmxjci5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX1ZTX0RIKSAmIzQzOz0gaXBfdnNfZGgub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUF9WU19TSCkgJiM0Mzs9IGlwX3ZzX3NoLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfSVBfVlNfTUgpICYjNDM7PSBpcF92c19taC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQX1ZTX1NFRCkgJiM0Mzs9IGlwX3ZzX3NlZC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0lQX1ZTX05RKSAmIzQzOz0gaXBfdnNfbnEub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19JUF9WU19UV09TKSAmIzQzOz0gaXBfdnNfdHdvcy5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDEtIyBJUFZTIGFwcGxpY2F0aW9uIGhlbHBlcnNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfSVBfVlNfRlRQKSAmIzQzOz0gaXBfdnNfZnRwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00NC0jIElQVlMgY29ubmVjdGlvbiB0ZW1wbGF0ZSByZXRyaWV2ZXJzXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0lQX1ZTX1BFX1NJUCkgJiM0Mzs9IGlwX3ZzX3BlX3NpcC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDYtaWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFZTXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTcyPWlwX3ZzX2FwcF9pbmNfbmV3KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfYXBwICphcHAsIF9fdTE2IHByb3RvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMDgtXHRsaXN0X2FkZChcdTAwMjZpbmMtXHUwMDNlYV9saXN0LCBcdTAwMjZhcHAtXHUwMDNlaW5jc19saXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMDk6XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMgQXBwICVzOiV1IHJlZ2lzdGVyZWRcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTEwLVx0XHQgIHBwLVx1MDAzZW5hbWUsIGluYy1cdTAwM2VuYW1lLCBudG9ocyhpbmMtXHUwMDNlcG9ydCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz0xMjQ9aXBfdnNfYXBwX2luY19yZWxlYXNlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfYXBwICppbmMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTEzMy1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMzQ6XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMgQXBwICVzOiV1IHVucmVnaXN0ZXJlZFxcblwmIzM0Oyxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMzUtXHRcdCAgcHAtXHUwMDNlbmFtZSwgaW5jLVx1MDAzZW5hbWUsIG50b2hzKGluYy1cdTAwM2Vwb3J0KSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTI4Nz1zdGF0aWMgaW5saW5lIHZvaWQgdnNfZml4X3NlcShjb25zdCBzdHJ1Y3QgaXBfdnNfc2VxICp2c2VxLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMjk4LVx0XHRcdHRoLVx1MDAzZXNlcSA9IGh0b25sKHNlcSAmIzQzOyB2c2VxLVx1MDAzZWRlbHRhKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoyOTk6XHRcdFx0SVBfVlNfREJHKDksIFwmIzM0OyVzKCk6IGFkZGVkIGRlbHRhICglZCkgdG8gc2VxXFxuXCYjMzQ7LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMwMC1cdFx0XHRcdCAgX19mdW5jX18sIHZzZXEtXHUwMDNlZGVsdGEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMDItXHRcdFx0dGgtXHUwMDNlc2VxID0gaHRvbmwoc2VxICYjNDM7IHZzZXEtXHUwMDNlcHJldmlvdXNfZGVsdGEpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjMwMzpcdFx0XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMoKTogYWRkZWQgcHJldmlvdXNfZGVsdGEgKCVkKSB0byBzZXFcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzA0LVx0XHRcdFx0ICBfX2Z1bmNfXywgdnNlcS1cdTAwM2VwcmV2aW91c19kZWx0YSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTMxND12c19maXhfYWNrX3NlcShjb25zdCBzdHJ1Y3QgaXBfdnNfc2VxICp2c2VxLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzI3LVx0XHRcdHRoLVx1MDAzZWFja19zZXEgPSBodG9ubChhY2tfc2VxIC0gdnNlcS1cdTAwM2VkZWx0YSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzI4Olx0XHRcdElQX1ZTX0RCRyg5LCBcJiMzNDslcygpOiBzdWJ0cmFjdGVkIGRlbHRhIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMyOS1cdFx0XHRcdCAgXCYjMzQ7KCVkKSBmcm9tIGFja19zZXFcXG5cJiMzNDssIF9fZnVuY19fLCB2c2VxLVx1MDAzZWRlbHRhKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzMyLVx0XHRcdHRoLVx1MDAzZWFja19zZXEgPSBodG9ubChhY2tfc2VxIC0gdnNlcS1cdTAwM2VwcmV2aW91c19kZWx0YSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzMzOlx0XHRcdElQX1ZTX0RCRyg5LCBcJiMzNDslcygpOiBzdWJ0cmFjdGVkIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMzNC1cdFx0XHRcdCAgXCYjMzQ7cHJldmlvdXNfZGVsdGEgKCVkKSBmcm9tIGFja19zZXFcXG5cJiMzNDssXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTM1OT1zdGF0aWMgaW5saW5lIGludCBhcHBfdGNwX3BrdF9vdXQoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zNzktXHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozODA6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9PVVRfU0VRKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4MS1cdFx0dnNfZml4X3NlcShcdTAwMjZjcC1cdTAwM2VvdXRfc2VxLCB0aCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzgyOlx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5fU0VRKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4My1cdFx0dnNfZml4X2Fja19zZXEoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCB0aCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM5OC1cdFx0dnNfc2VxX3VwZGF0ZShjcCwgXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozOTk6XHRcdFx0ICAgICAgSVBfVlNfQ09OTl9GX09VVF9TRVEsIHNlcSwgZGlmZik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDAwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz00MzU9c3RhdGljIGlubGluZSBpbnQgYXBwX3RjcF9wa3RfaW4oc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NTUtXHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzo0NTY6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU3LVx0XHR2c19maXhfc2VxKFx1MDAyNmNwLVx1MDAzZWluX3NlcSwgdGgpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ1ODpcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU5LVx0XHR2c19maXhfYWNrX3NlcShcdTAwMjZjcC1cdTAwM2VvdXRfc2VxLCB0aCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ3NC1cdFx0dnNfc2VxX3VwZGF0ZShjcCwgXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ3NTpcdFx0XHQgICAgICBJUF9WU19DT05OX0ZfSU5fU0VRLCBzZXEsIGRpZmYpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ3Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozOTojaWZuZGVmIENPTkZJR19JUF9WU19UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo0MDojZGVmaW5lIENPTkZJR19JUF9WU19UQUJfQklUU1x0MTJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDEtI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00NS0qL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo0NjpzdGF0aWMgaW50IGlwX3ZzX2Nvbm5fdGFiX2JpdHMgPSBDT05GSUdfSVBfVlNfVEFCX0JJVFM7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3LW1vZHVsZV9wYXJhbV9uYW1lZChjb25uX3RhYl9iaXRzLCBpcF92c19jb25uX3RhYl9iaXRzLCBpbnQsIDA0NDQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NTQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICppcF92c19jb25uX2NhY2hlcCBfX3JlYWRfbW9zdGx5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTYtLyogV2UgbmVlZCBhbiBhZGRyc3RybGVuIHRoYXQgd29ya3Mgd2l0aCBvciB3aXRob3V0IHY2ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU3OiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1ODojZGVmaW5lIElQX1ZTX0FERFJTVFJMRU4gSU5FVDZfQUREUlNUUkxFTlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OS0jZWxzZVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2MDojZGVmaW5lIElQX1ZTX0FERFJTVFJMRU4gKDgmIzQzOzEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYxLSNlbmRpZlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTg0PXN0YXRpYyB1MzIgaXBfdnNfY29ubl9oYXNoa2V5KHN0cnVjdCBpcF92c19yaHQgKnQsIGludCBhZiwgdW5zaWduZWQgaW50IHByb3RvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTkwLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxOTE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5Mi1cdGlmIChhZiA9PSBBRl9JTkVUNikge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjYxPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yNzAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjI3MTpcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI3Mi1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjI5MzpcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9IQVNIRUQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI5NC1cdFdSSVRFX09OQ0UoY3AtXHUwMDNlaG4wLmhhc2hfa2V5LCBoYXNoX2tleSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zMDYtXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vjb25uX2NvdW50KSBcdTAwM2UgdC1cdTAwM2V1X3RocmVzaCBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzA3Olx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfQ09OTl9SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMwOC1cdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0zMTY9c3RhdGljIGlubGluZSBib29sIGlwX3ZzX2Nvbm5fdW5saW5rKHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMyNC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzI1Olx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfT05FX1BBQ0tFVClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzI2LVx0XHRyZXR1cm4gcmVmY291bnRfZGVjX2lmX29uZShcdTAwMjZjcC1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozMzk6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9IQVNIRUQpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQwLVx0XHQvKiBEZWNyZWFzZSByZWZjbnQgYW5kIHVubGluayBjb25uIG9ubHkgaWYgd2UgYXJlIGxhc3QgdXNlciAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ1LVx0XHRcdFx0aGxpc3RfYmxfZGVsX3JjdShcdTAwMjZjcC1cdTAwM2VobjEubm9kZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjM0NjpcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSEFTSEVEO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNDctXHRcdFx0cmV0ID0gdHJ1ZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTM2Nz1fX2lwX3ZzX2Nvbm5faW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNjgte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozNjk6XHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzcwLVx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBwLVx1MDAzZWlwdnM7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zOTUtXHRcdFx0XHQgICAgKCFwLVx1MDAzZWNwb3J0IF5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mzk2Olx0XHRcdFx0ICAgICAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zOTctXHRcdFx0XHQgICAgcC1cdTAwM2Vwcm90b2NvbCA9PSBjcC1cdTAwM2Vwcm90b2NvbCkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NDEzPXN0cnVjdCBpcF92c19jb25uICppcF92c19jb25uX2luX2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQyOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMwOlx0SVBfVlNfREJHX0JVRig5LCBcJiMzNDtsb29rdXAvaW4gJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQzMS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00MzQtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz00NzU9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2N0X2luX2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDc2LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDc3Olx0REVDTEFSRV9JUF9WU19SSFRfV0FMS19CVUNLRVRfUkNVKCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3OC1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cdTAwM2VpcHZzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTE0LVx0XHRcdFx0ICAgIHAtXHUwMDNlY3BvcnQgPT0gY3AtXHUwMDNlY3BvcnQgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjUxNTpcdFx0XHRcdCAgICBjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MTYtXHRcdFx0XHQgICAgcC1cdTAwM2Vwcm90b2NvbCA9PSBjcC1cdTAwM2Vwcm90b2NvbCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUyOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMwOlx0SVBfVlNfREJHX0JVRig5LCBcJiMzNDt0ZW1wbGF0ZSBsb29rdXAvaW4gJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUzMS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjUzMzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MzQtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz01NDM9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2Nvbm5fb3V0X2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTQ0LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTQ1Olx0REVDTEFSRV9JUF9WU19SSFRfV0FMS19CVUNLRVRfUkNVKCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU0Ni1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cdTAwM2VpcHZzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTY5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1NzA6XHRcdFx0XHRpZiAoSVBfVlNfRldEX01FVEhPRChjcCkgIT0gSVBfVlNfQ09OTl9GX01BU1EpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTcxLVx0XHRcdFx0XHRzcG9ydCA9IGNwLVx1MDAzZXZwb3J0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTkzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTQ6XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2xvb2t1cC9vdXQgJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU5NS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTk2Olx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU5NzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTgtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz02MjA9c3RhdGljIHZvaWQgX19pcF92c19jb25uX3B1dF90aW1lcihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYyMS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjYyMjpcdHVuc2lnbmVkIGxvbmcgdCA9IChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpID9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjIzLVx0XHQwIDogY3AtXHUwMDNldGltZW91dDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTYyOT12b2lkIGlwX3ZzX2Nvbm5fcHV0KHN0cnVjdCBpcF92c19jb25uICpjcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjMwLXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NjMxOlx0aWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02MzItXHQgICAgKHJlZmNvdW50X3JlYWQoXHUwMDI2Y3AtXHUwMDNlcmVmY250KSA9PSAxKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTY0Mz12b2lkIGlwX3ZzX2Nvbm5fZmlsbF9jcG9ydChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIF9fYmUxNiBjcG9ydClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4NC1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2Y3AtXHUwMDNlbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjY4NTpcdFx0XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCBcdTAwMjZcdTAwMjYgYnlfbWUpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4Ni1cdFx0XHRcdGNwLVx1MDAzZWNwb3J0ID0gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4OC1cdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Njg5Olx0XHRcdElQX1ZTX0VSUl9STChcJiMzNDslcygpOiBUb28gbWFueSBodCBjaGFuZ2VzIGZvciBkaXIgJWRcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY5MC1cdFx0XHRcdCAgICAgX19mdW5jX18sIGRpcik7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NTctXHQvKiBGaWxsIGNwb3J0IG9uY2UsIGV2ZW4gaWYgbXVsdGlwbGUgcGFja2V0cyB0cnkgdG8gZG8gaXQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzU4Olx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXHUwMDI2XHUwMDI2ICghY3AtXHUwMDNlY3BvcnQgfHwgYnlfbWUpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc1OS1cdFx0LyogSWYgd2UgcmFjZSB3aXRoIHJlc2l6aW5nIG1ha2Ugc3VyZSBjcG9ydCBpcyBzZXQgZm9yIGRpciAxICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NjUtXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZpcHZzLVx1MDAzZW5vX2Nwb3J0X2Nvbm5zW2FmX2lkXSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjc2NjpcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfTk9fQ1BPUlQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc2Ny1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fY2hhbmdlX2Z3ZF9tYXNrKHN0cnVjdCBpcF92c19jb25uICpjcCwgdTMyIG5ld19mbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTgwNC1cdC8qIFNlZSBpcF92c19jb25uX3VzZV9oYXNoMigpIGZvciByZWZlcmVuY2UgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA1Olx0aWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSB8fFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDYtXHQgICAgLyogTm8gY2hhbmdlIGluIGRvdWJsZSBoYXNoaW5nID8gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA3Olx0ICAgIChJUF9WU19GV0RfTUVUSE9EKGNwKSA9PSBJUF9WU19DT05OX0ZfTUFTUSkgPT1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA4Olx0ICAgICgobmV3X2ZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfRldEX01BU0spID09IElQX1ZTX0NPTk5fRl9NQVNRKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDktXHRcdGNwLVx1MDAzZWZsYWdzID0gbmV3X2ZsYWdzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODY2PWludCBpcF92c19jb25uX2Rlc2lyZWRfc2l6ZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3JodCAqdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg2OS1cdHJldHVybiBpcF92c19yaHRfZGVzaXJlZF9zaXplKGlwdnMsIHQsIGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlY29ubl9jb3VudCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjg3MDpcdFx0XHRcdCAgICAgIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04NzEtXHRcdFx0XHQgICAgICBpcF92c19jb25uX3RhYl9iaXRzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTg3NT1zdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19jb25uX3RhYl9hbGxvYyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGJ1Y2tldHMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODItXHRzY291bnRzID0gY2xhbXAoYnVja2V0cyBcdTAwM2VcdTAwM2UgNiwgMSwgMjU2KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODgzOlx0LyogbG9ja3M6IGJhc2VkIG9uIHBhcmFsbGVsIElQX1ZTX0NPTk5fRl9OT19DUE9SVCBvcGVyYXRpb25zICYjNDM7IHJlc2l6ZSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODQtXHRsb2NrcyA9IGNsYW1wKDgsIDEsIHNjb3VudHMpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODg5LVx0dC1cdTAwM2VsZmFjdG9yID0gbGZhY3Rvcjtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODkwOlx0aXBfdnNfcmh0X3NldF90aHJlc2hvbGRzKHQsIHQtXHUwMDNlc2l6ZSwgbGZhY3RvciwgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg5MS1cdFx0XHRcdCBpcF92c19jb25uX3RhYl9iaXRzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTg5Nj1zdGF0aWMgdm9pZCBjb25uX3Jlc2l6ZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTE0LVx0LyogQWxsb3cgd29yayB0byBiZSBxdWV1ZWQgYWdhaW4gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE1Olx0Y2xlYXJfYml0KElQX1ZTX1dPUktfQ09OTl9SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxNi1cdHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGlwdnMtXHUwMDNlY29ubl90YWIsIDEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTM1LVx0LyogRmxpcCB0aGUgdGFibGVfaWQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTM2Olx0dF9uZXctXHUwMDNldGFibGVfaWQgPSB0LVx1MDAzZXRhYmxlX2lkIF4gSVBfVlNfUkhUX1RBQkxFX0lEX01BU0s7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkzNy1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEwMjM9c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjQte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI1Olx0c3dpdGNoIChJUF9WU19GV0RfTUVUSE9EKGNwKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI2Olx0Y2FzZSBJUF9WU19DT05OX0ZfTUFTUTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTAyNy1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19uYXRfeG1pdDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzA6XHRjYXNlIElQX1ZTX0NPTk5fRl9UVU5ORUw6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMzItXHRcdGlmIChjcC1cdTAwM2VkYWYgPT0gQUZfSU5FVDYpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDM5Olx0Y2FzZSBJUF9WU19DT05OX0ZfRFJPVVRFOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQwLVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2RyX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQyLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDQzOlx0Y2FzZSBJUF9WU19DT05OX0ZfTE9DQUxOT0RFOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ0LVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX251bGxfeG1pdDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNDc6XHRjYXNlIElQX1ZTX0NPTk5fRl9CWVBBU1M6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDgtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfYnlwYXNzX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDUyLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDUzOiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU0LXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXRfdjYoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU1LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NjpcdHN3aXRjaCAoSVBfVlNfRldEX01FVEhPRChjcCkpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NzpcdGNhc2UgSVBfVlNfQ09OTl9GX01BU1E6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNTgtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbmF0X3htaXRfdjY7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDYwLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDYxOlx0Y2FzZSBJUF9WU19DT05OX0ZfVFVOTkVMOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDYyLVx0XHRpZiAoY3AtXHUwMDNlZGFmID09IEFGX0lORVQ2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA2ODpcdGNhc2UgSVBfVlNfQ09OTl9GX0RST1VURTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2OS1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19kcl94bWl0X3Y2O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA3MjpcdGNhc2UgSVBfVlNfQ09OTl9GX0xPQ0FMTk9ERTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3My1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19udWxsX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDc1LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDc2Olx0Y2FzZSBJUF9WU19DT05OX0ZfQllQQVNTOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDc3LVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2J5cGFzc194bWl0X3Y2O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OT1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDItXHRpZiAoY3AtXHUwMDNlcHJvdG9jb2wgIT0gSVBQUk9UT19VRFApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMDM6XHRcdGNvbm5fZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX09ORV9QQUNLRVQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDQtXHRmbGFncyA9IGNwLVx1MDAzZWZsYWdzO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA1LVx0LyogQmluZCB3aXRoIHRoZSBkZXN0aW5hdGlvbiBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdHJhbnNtaXR0ZXIgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwNjpcdGlmIChmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1NZTkMpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEwNy1cdFx0LyogU3luY2VkIGNvbm5zIGFyZSBoYXNoZWQsIHNvIHRoZXkgY2FuIG5vdCBnZXQgdGhpcyBmbGFnICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMDg6XHRcdGNvbm5fZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX09ORV9QQUNLRVQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTEyLVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTExMzpcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTQ6XHRcdFx0Y29ubl9mbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMTUtXHRcdC8qIGNvbm5lY3Rpb25zIGluaGVyaXQgZm9yd2FyZGluZyBtZXRob2QgZnJvbSBkZXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTY6XHRcdGZsYWdzIFx1MDAyNj0gfihJUF9WU19DT05OX0ZfRldEX01BU0sgfCBJUF9WU19DT05OX0ZfTk9PVVRQVVQpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTE3LVx0XHRmbGFncyB8PSBjb25uX2ZsYWdzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMC1cdFx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMjE6XHRcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0hBU0hFRClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMi1cdFx0XHRpcF92c19jb25uX2NoYW5nZV9md2RfbWFzayhjcCwgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzMTpcdElQX1ZTX0RCR19CVUYoNywgXCYjMzQ7QmluZC1kZXN0ICVzIGM6JXM6JWQgdjolczolZCBcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzMi1cdFx0ICAgICAgXCYjMzQ7ZDolczolZCBmd2Q6JWMgczoldSBjb25uLVx1MDAzZWZsYWdzOiVYIGNvbm4tXHUwMDNlcmVmY250OiVkIFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzNC1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShjcC1cdTAwM2Vwcm90b2NvbCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMzU6XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVx1MDAzZWFmLCBcdTAwMjZjcC1cdTAwM2VjYWRkciksIG50b2hzKGNwLVx1MDAzZWNwb3J0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzNjpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIoY3AtXHUwMDNlYWYsIFx1MDAyNmNwLVx1MDAzZXZhZGRyKSwgbnRvaHMoY3AtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM3Olx0XHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cdTAwM2VkYWYsIFx1MDAyNmNwLVx1MDAzZWRhZGRyKSwgbnRvaHMoY3AtXHUwMDNlZHBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTM4LVx0XHQgICAgICBpcF92c19md2RfdGFnKGNwKSwgY3AtXHUwMDNlc3RhdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQyLVx0LyogVXBkYXRlIHRoZSBjb25uZWN0aW9uIGNvdW50ZXJzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExNDM6XHRpZiAoIShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ0LVx0XHRpbnQgdGM7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ5LVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE1MDpcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExNTEtXHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTExNjc9dm9pZCBpcF92c190cnlfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMDAtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gTlVMTDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIwMTojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIwMi1cdFx0aWYgKGNwLVx1MDAzZWFmID09IEFGX0lORVQ2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTIyMD1zdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIyNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIyNzpcdElQX1ZTX0RCR19CVUYoNywgXCYjMzQ7VW5iaW5kLWRlc3QgJXMgYzolczolZCB2OiVzOiVkIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjI4LVx0XHQgICAgICBcJiMzNDtkOiVzOiVkIGZ3ZDolYyBzOiV1IGNvbm4tXHUwMDNlZmxhZ3M6JVggY29ubi1cdTAwM2VyZWZjbnQ6JWQgXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjMwLVx0XHQgICAgICBpcF92c19wcm90b19uYW1lKGNwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMTpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIoY3AtXHUwMDNlYWYsIFx1MDAyNmNwLVx1MDAzZWNhZGRyKSwgbnRvaHMoY3AtXHUwMDNlY3BvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cdTAwM2VhZiwgXHUwMDI2Y3AtXHUwMDNldmFkZHIpLCBudG9ocyhjcC1cdTAwM2V2cG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMzM6XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVx1MDAzZWRhZiwgXHUwMDI2Y3AtXHUwMDNlZGFkZHIpLCBudG9ocyhjcC1cdTAwM2VkcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzQtXHRcdCAgICAgIGlwX3ZzX2Z3ZF90YWcoY3ApLCBjcC1cdTAwM2VzdGF0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzgtXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzOTpcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBJUF9WU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjb25zdWx0IHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGxvb2sgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgbGl2ZSwgYW5kIGl0JiMzOTtzIHRoZSByaWdodCBwbGFjZSB0byBmaW5kIGFueSBkZXBlbmRlbmNpZXMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gQnkgZXhhbWluaW5nIHRoYXQgS2NvbmZpZyBmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciBgSVBfVlNgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB3aGVuIGRpZ2dpbmcgaW50byBrZXJuZWwgY29uZmlncy4gSXQmIzM5O3MgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBmZWF0dXJlJiMzOTtzIHJlcXVpcmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IElQVlMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBmb2N1cyBvbiBsaW5lcyAxIHRocm91Z2ggMjYuIFRoaXMgc2VjdGlvbiBsaWtlbHkgZGVmaW5lcyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBJUFZTIGl0c2VsZiwgYmVmb3JlIGdldHRpbmcgaW50byBtb3JlIHNwZWNpZmljIGZlYXR1cmVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIC0gdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyBtb2R1bGFyLCBpZiBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgYENPTkZJR19JUF9WU2Agb3B0aW9uLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGNvbW1lbnRhcnkgdGhhdCBjbGFyaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aGUgc2V0dGluZ3MuIFRoaXMgaW5pdGlhbCBibG9jayBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZnJhbWV3b3JrIHRvIHVuZGVyc3RhbmQgdGhlIHN1YnNlcXVlbnQsIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdG1lbnVjb25maWcgSVBfVlNcbiAgIDY6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG4gICA4Olx0XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxuICAxMTpcdFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xuICAxMjpcdFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcbiAgMTM6XHRcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxuICAxNDpcdFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbiAgMTc6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxuICAxODpcdFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXG4gIDE5Olx0XHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcbiAgMjA6XHRcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxuICAyMTpcdFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcbiAgMjI6XHRcdCAgZm9sbG93aW5nIFVSTDogXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1x1MDAzZS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAgMjU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuICAyNjpcdFxuICAyNzpcdGlmIElQX1ZTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnXHRJUF9WU19JUFY2XG4gIDMwOlx0XHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEwMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyBmb3IgSVBWUyBUaW1lciBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBJUF9WU2AgZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLCBzbyBpdCYjMzk7cyBjb3JlIG5ldHdvcmtpbmcgc3R1ZmYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHRpbWVyX2RlbGV0ZV9zeW5jYCB0byBgdGltZXJfc2h1dGRvd25fc3luY2AgY2hhbmdlIGluIGBpcF92c190cmFzaF9jbGVhbnVwYCwgaXMgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0LgoKVGhlIHRyaWFnZSBndWlkZWxpbmVzIGFyZSBjbGVhcjogcmVhY2hhYmlsaXR5IGlzIGtpbmcuIENhbiB0aGlzIGNvZGUgYWN0dWFsbHkgKnJ1biogaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVT8gTGV0JiMzOTtzIGNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSB0byBydWxlIG91dCBvYnZpb3VzIG5vLWdvcywgbGlrZSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4KClNvLCBpcyBgaXBfdnNfdHJhc2hfY2xlYW51cGAgcmVhY2hhYmxlPyBZZXMsIGl0IGlzIGNhbGxlZCBkdXJpbmcgbmV0bnMgZGVzdHJ1Y3Rpb24gdmlhIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLiBFeGNlbGxlbnQhIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgKmNvbW1vbiogaW4gc3l6a2FsbGVyIGZ1enppbmcsIHNvIHdlIGhhdmUgYSBnb29kIHBhdGguCgpUaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCB0aW1lciBzaHV0ZG93biB2ZXJzdXMgZGVsZXRpb24gaXMgaW50ZXJlc3RpbmcuIFRoaXMgc3VidGxlIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIHJhY2UgY29uZGl0aW9ucywgb3IgaW50ZXJhY3Qgd2l0aCB0aW1lciByZWFybWluZyBvciB0aGUgdGltZXIgbGlmZWN5Y2xlLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBleGlzdGluZyBkZXN0IHRyYXNoIGV4cGlyYXRpb24gKGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWApIGFuZCBuZXRucyBjbGVhbnVwIGludGVyYWN0aW9uLiBXZSBoYXZlIHRvIHNlZSBpZiByZS1hcm1pbmcgYSBzaHV0LWRvd24gdGltZXIgd2lsbCB0cmlwIHNvbWUgc3Vic3lzdGVtIGNoZWNrcyBvciBjYXVzZSBhIHdhcm5pbmcuIExldCYjMzk7cyBjaGVjayBpZiBgbW9kX3RpbWVyYCBvbiBzaHV0IGRvd24gdGltZXIgcHJvZHVjZXMgYSB3YXJuaW5nIG9yIGludGVyYWN0cyB3aXRoIGBpcF92c190cmFzaF9wdXRfZGVzdGAuCgpMZXQmIzM5O3MgbG9vayBhdCBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYG1vZF90aW1lcmAgY2FsbCwgd2hpY2ggaGFwcGVucyBvbmx5IGlmIGBpcHZzLSZndDtkZXN0X3RyYXNoYCBpcyBlbXB0eSBhbmQgYGNsZWFudXBgIGlzIGZhbHNlLiBJZiB0aGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjbGVhbnVwIGFuZCB0aGUgdGltZXIgcmVhcm1pbmcgKG9yIGxhY2sgb2YpLCB0aGluZ3MgY291bGQgZ2V0IGludGVyZXN0aW5nLgoKU28sIGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGluIGNvcmUgbmV0d29ya2luZy9uZXRmaWx0ZXIgY29kZSAoYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2ApIGFuZCBpcyBjb21wbGV0ZWx5IHJlYWNoYWJsZSBpbiBvdXIgdGFyZ2V0IGVudmlyb25tZW50cy4KCk5vdywgZm9yIGZvY3VzIHN5bWJvbHMuIFdlIGhhdmU6CgoqICAgYGlwX3ZzX3RyYXNoX2NsZWFudXBgICh0aGUgbWFpbiB0YXJnZXQgb2YgdGhlIHBhdGNoKQoqICAgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgICh3aGljaCBjYWxscyBpdCBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCkKKiAgIGBpcF92c190cmFzaF9wdXRfZGVzdGAgKGhhbmRsZXMgcHV0dGluZyBkZXN0aW5hdGlvbnMgaW4gdGhlIHRyYXNoLCBhbmQgcG90ZW50aWFsbHkgcmUtYXJtcyB0aGUgdGltZXIpCiogICBgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgICh0aGUgdGltZXIgZXhwaXJhdGlvbiBmdW5jdGlvbikKKiAgIGBpcF92c19jb250cm9sX25ldF9pbml0YCAoaW5pdCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSkKCmBpcF92c190cmFzaF9jbGVhbnVwYCBpcyBzdGF0aWMsIGJ1dCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2NvcmUuY2AuIFdlIGNhbiBpbmNsdWRlIHRoZW0gYWxsIGluIHRoZSBmb2N1cyBzeW1ib2wgbGlzdC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYGlwX3ZzX2N0bC5jYCBmb3IgYW55IG90aGVyIGBkZXN0X3RyYXNoYCByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXZSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIHRoaW5rIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXN0X3RyYXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTA4PWlwX3ZzX3RyYXNoX2dldF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGludCBkZXN0X2FmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE2LVx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTExNzpcdHNwaW5fbG9ja19iaChcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTExODpcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGVzdCwgXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE5LVx0XHRJUF9WU19EQkdfQlVGKDMsIFwmIzM0O0Rlc3RpbmF0aW9uICV1LyVzOiV1IHN0aWxsIGluIHRyYXNoLCBcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE0MS1vdXQ6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE0MjpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTQzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTQ4PXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX3B1dF9kZXN0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUxLXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTUyOlx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUzLVx0SVBfVlNfREJHX0JVRigzLCBcJiMzNDtNb3ZpbmcgZGVzdCAlczoldSBpbnRvIHRyYXNoLCBkZXN0LVx1MDAzZXJlZmNudD0lZFxcblwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE1NS1cdFx0ICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNTY6XHRpZiAobGlzdF9lbXB0eShcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpIFx1MDAyNlx1MDAyNiAhY2xlYW51cClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTU3Olx0XHRtb2RfdGltZXIoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTgtXHRcdFx0ICBqaWZmaWVzICYjNDM7IChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcdTAwM2VcdTAwM2UgMSkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTktXHQvKiBkZXN0IGxpdmVzIGluIHRyYXNoIHdpdGggcmVmZXJlbmNlICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MDpcdGxpc3RfYWRkKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNjEtXHRkZXN0LVx1MDAzZWlkbGVfc3RhcnQgPSBpc3RhcnQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MjpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTYzLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5NjpcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTc6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTgtXHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTY5ND1pcF92c19kZWxfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIxLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3MjI6c3RhdGljIHZvaWQgaXBfdnNfZGVzdF90cmFzaF9leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyMy17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNC1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gdGltZXJfY29udGFpbmVyX29mKGlwdnMsIHQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyNTpcdFx0XHRcdFx0XHQgICAgIGRlc3RfdHJhc2hfdGltZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjYtXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm5leHQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyOTpcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTczMDpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBuZXh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MzEtXHRcdGlmIChyZWZjb3VudF9yZWFkKFx1MDAyNmRlc3QtXHUwMDNlcmVmY250KSBcdTAwM2UgMSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc0Ny1cdH1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzQ4Olx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTc0OTpcdFx0bW9kX3RpbWVyKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVx0XHRcdCAgamlmZmllcyAmIzQzOyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXHUwMDNlXHUwMDNlIDEpKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzUxOlx0c3Bpbl91bmxvY2soXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NTItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMTE5PXN0YXRpYyB2b2lkIGlwX3ZzX3VubGlua19zZXJ2aWNlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGJvb2wgY2xlYW51cClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyMS1cdGlwX3ZzX3VucmVnaXN0ZXJfY29ubnRyYWNrKHN2Yyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyMjpcdC8qIEhvbGQgc3ZjIHRvIGF2b2lkIGRvdWJsZSByZWxlYXNlIGZyb20gZGVzdF90cmFzaCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjMtXHRhdG9taWNfaW5jKFx1MDAyNnN2Yy1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MjMwPWludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTI0NzpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTI0ODpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5Olx0dGltZXJfc2V0dXAoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCYjNDM7JiM0MzspIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNj1fX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0zNTAtXHRcdFx0ICogZGV2aWNlIGlzIGdvaW5nIGRvd24gb3IgaWYgc2VydmVyIGlzIHJlbW92ZWQgYW5kXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjM1MTpcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzUyLVx0XHRcdCAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDg5PV9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTUyOS1cdFx0XHQgKiBkZXZpY2UgaXMgZ29pbmcgZG93biBvciBpZiBzZXJ2ZXIgaXMgcmVtb3ZlZCBhbmRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NTMwOlx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy01MzEtXHRcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzE3CgkJCQkJCQlvdXRwdXQ6IDE1NgoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zLiAqSVBfVlMqIGlzIGRlZmluaXRlbHkgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZGVwZW5kZW5jaWVzIGNoZWNrIGNvbmZpcm1zIGl0IHJlcXVpcmVzIGJvdGggKklORVQqIGFuZCAqTkVURklMVEVSKi4gVGh1cywgdGhlIG1pbmltdW0gY29uZmlndXJhdGlvbiBzZXQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzIGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O05FVEZJTFRFUiYjMzQ7LCAmIzM0O0lORVQmIzM0O11gLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQgYnkgdGhlIHBhdGNoLiBJIG5lZWQgdG8gZm9jdXMgb24gYGlwX3ZzX3RyYXNoX2NsZWFudXBgLCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAsIGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWAsIGFuZCBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgLiBUaGVzZSBhcmUgY2xlYXJseSBrZXksIGFuZCB3YXJyYW50IGNhcmVmdWwgZXhhbWluYXRpb24gb2YgdGhlIGNvZGUgYXJvdW5kIHRoZW0uCgpTbywgSSYjMzk7bSBjb25maWRlbnQgYWJvdXQgdGhlc2UgZmFjdHM6CiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZSAoQWJzb2x1dGVseSwgd2UgbmVlZCB0byB0ZXN0IHRoaXMpCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O05FVEZJTFRFUiYjMzQ7LCAmIzM0O0lORVQmIzM0O11gIChCYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCB0aGVzZSBhcmUgdGhlIG1pbmltdW1zKQoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssICYjMzQ7aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cCYjMzQ7LCAmIzM0O2lwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlJiMzNDssICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0O11gIChUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGNvZGUgYXJlYXMgdGhhdCBjaGFuZ2VkKS4KClRoZSByZWFzb25pbmcgaXMgc29saWQsIGl0IGNlbnRlcnMgb24gdGhlIHBhdGNoJiMzOTtzIG1vZGlmaWNhdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIElQVlMuIFRoaXMgaXMgd2hlcmUgYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBiZWluZyByZXBsYWNlZCBieSBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtJmd0O2Rlc3RfdHJhc2hfdGltZXJgLiBUaGlzIGlzIGFib3V0IHRpbWVyIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBkZWFjdGl2YXRpb24gYW5kIHNodXRkb3duIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgbW9kdWxlLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB2aXJ0dWFsIGVudmlyb25tZW50cyBhbmQgbmV0d29yayBuYW1lc3BhY2UgbGlmZSBjeWNsZXMsIGFuZCBJUFZTIG9wZXJhdGlvbnMgY2FuIGNlcnRhaW5seSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX3RyYXNoX2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtpcF92c19kZXN0X3RyYXNoX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtpcF92c190cmFzaF9wdXRfZGVzdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVzdGluYXRpb24gdHJhc2ggdGltZXIgdGVhcmRvd24gbG9naWMgaW4gSVBWUyAobmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jKSBieSBzd2l0Y2hpbmcgZnJvbSB0aW1lcl9kZWxldGVfc3luYyB0byB0aW1lcl9zaHV0ZG93bl9zeW5jLiBUaGlzIHJlYWNoYWJsZSBjb2RlIHBhdGggZXhlY3V0ZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAgYW5kIGRlc3RpbmF0aW9uIHRyYXNoIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbmV0ZmlsdGVyIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfZGVzdF90cmFzaF9leHBpcmUmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyYCBkdXJpbmcgbmV0bnMvSVBWUyBjbGVhbnVwIChgaXBfdnNfdHJhc2hfY2xlYW51cCgpYCkuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB0aW1lciBjYW5ub3QgYmUgcmUtYXJtZWQgYWZ0ZXIgZGVsZXRpb24gZHVyaW5nIHRlYXJkb3duLCBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE3OjE5OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCmluZGV4IDRjMWM3Mzk0NDZiNzYuLjBlYjZjZGI1ZmVjMzUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKQEAgLTExOTIsNyAmIzQzOzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKQogewogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0OwogCi0JdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKTsKJiM0MzsJdGltZXJfc2h1dGRvd25fc3luYygmYW1wO2lwdnMtJmd0O2Rlc3RfdHJhc2hfdGltZXIpOwogCS8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsICZhbXA7aXB2cy0mZ3Q7ZGVzdF90cmFzaCwgdF9saXN0KSB7CiAJCWxpc3RfZGVsKCZhbXA7ZGVzdC0mZ3Q7dF9saXN0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGltZXIgQ2hhbmdlIGluIElQVlMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2U6IHN3aXRjaGluZyBgdGltZXJfZGVsZXRlX3N5bmNgIHRvIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBmb3IgdGhlIGBpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyYCB3aXRoaW4gdGhlIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbiBpbiBgaXBfdnNfY3RsLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aW1lciBtYW5hZ2VtZW50LCBhbmQgdGhlIGRpZmZlcmVuY2UgbGlrZWx5IGxpZXMgaW4gaG93IHRoZXkgZGVhbCB3aXRoIHRoZSB0aW1lciYjMzk7cyBjYWxsYmFjayBhbmQgc3luY2hyb25pemF0aW9uLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCByb2xlIG9mIGBpcF92c190cmFzaF9jbGVhbnVwYCB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGF0IGZpbGUsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLCBhbmQgdXNlIG15IGVkaXRvciYjMzk7cyBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGxhcmdlciBwaWN0dXJlIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2h5IHRoaXMgY2hhbmdlIHdhcyBtYWRlIGFuZCB3aGF0IHBvdGVudGlhbCBpbXBhY3QgaXQgbWlnaHQgaGF2ZSBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE4NTpcdCAqXG4xMTg2Olx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcbjExODc6XHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcbjExODg6XHQgKiAgYXJlIGV4cGlyZWQsIGFuZCB0aGUgcmVmY250IG9mIGVhY2ggZGVzdGluYXRpb24gaW4gdGhlIHRyYXNoIG11c3RcbjExODk6XHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxuMTE5MDpcdCAqL1xuMTE5MTpcdHN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4xMTkyOlx0e1xuMTE5MzpcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XG4xMTk0Olx0XG4xMTk1Olx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4xMTk2Olx0XHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbjExOTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4xMTk4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbjExOTk6XHRcdFx0aXBfdnNfZGVzdF9mcmVlKGRlc3QpO1xuMTIwMDpcdFx0fVxuMTIwMTpcdH1cbjEyMDI6XHRcbjEyMDM6XHRzdGF0aWMgdm9pZCBpcF92c19zdGF0c19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4xMjA0Olx0e1xuMTIwNTpcdFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcbjEyMDY6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXG4xMjA3Olx0XHRcdFx0XHRcdFx0ICByY3VfaGVhZCk7XG4xMjA4Olx0XG4xMjA5Olx0XHRpcF92c19zdGF0c19yZWxlYXNlKFx1MDAyNnJzLVx1MDAzZXMpO1xuMTIxMDpcdFx0a2ZyZWUocnMpO1xuMTIxMTpcdH1cbjEyMTI6XHRcbjEyMTM6XHRzdGF0aWMgdm9pZFxuMTIxNDpcdGlwX3ZzX2NvcHlfc3RhdHMoc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnNyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNAoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiA0MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRpbWVyIFNodXRkb3duIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHRpbWVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYHRpbWVyX2RlbGV0ZV9zeW5jYCBvciBgZGVsX3RpbWVyX3N5bmNgLCBhbmQgZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gY29uc2lkZXIgS01TQU4gaW4gdGhpcyBzY2VuYXJpby4KCmB0aW1lcl9zaHV0ZG93bl9zeW5jYCBpcyBjbGVhcmx5IGEgbGlmZXRpbWUgbWFuYWdlbWVudCB0b29sLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhlIHRlYXJkb3duIG9yIGNsZWFudXAgcHJvY2VzcyBieSBlbnN1cmluZyB0aGUgdGltZXIgaXNuJiMzOTt0IHJlLWFybWVkIHVuZXhwZWN0ZWRseS4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHByb3RlY3RpbmcgdGhlIHRpbWVyIGhhbmRsZXIgZnJvbSBhY2Nlc3NpbmcgZnJlZWQgcmVzb3VyY2VzLiBGcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludCwgdGhpcyBhcHBlYXJzIHRvIGJlIHB1cmVseSBhYm91dCB0ZWFyZG93biBhbmQgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoYXQgcHJvY2Vzcy4KCk5vdywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBkaWZmZXJlbnQgc2FuaXRpemVycy4gRm9yIHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiwgd2UmIzM5O3JlIGxvb2tpbmcgZm9yIGlzc3VlcyByZWxhdGVkIHRvIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIHdpdGggdGhlIHRpbWVyLCBvciBpbnN0YW5jZXMgd2hlcmUgYSB0aW1lciBpcyB1c2VkIGFmdGVyIGNsZWFudXAgaGFzIG9jY3VycmVkLiBLTVNBTiwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLgoKR2l2ZW4gd2hhdCBJIHNlZSBpbiB0aGUgY29kZSBjaGFuZ2VzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHBvdGVudGlhbCBmb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSwgbm8gY29uZGl0aW9uYWwgYnJhbmNoaW5nIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgbm8gYnVmZmVyIGJvdW5kcyBtYW5pcHVsYXRpb25zLiBUaGlzIGlzIGNydWNpYWw6IHRoZSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRpbWVyIGxpZmV0aW1lIG1hbmFnZW1lbnQgZHVyaW5nIHNodXRkb3duLgoKVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCYXNlZCBvbiBteSBhbmFseXNpcywgdGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgbm8uIFRoZSBjb2RlIGFwcGVhcnMgdG8gaGFuZGxlIHRoZSB0ZWFyZG93biBpbiBhIHdheSB0aGF0IG1pbmltaXplcyB0aGVzZSByaXNrcy4gVGhpcyBtYWtlcyB0aGUgYE5lZWRzS01TQU5gIGZsYWcgaXJyZWxldmFudCBoZXJlLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuCgpUaGUgcnVsZSBpcyBjbGVhcjogS01TQU4gaXMgY29zdGx5IGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoZXJlIGlzIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFdlIHNob3VsZCBvbmx5IGVuYWJsZSBLTVNBTiBpZiB0aGUgY29kZSBjaGFuZ2UgaW50cm9kdWNlcyByaXNrcyB0aGF0IGFyZSAqb25seSogZGV0ZWN0ZWQgYnkgS01TQU4uIFNpbmNlIEtBU0FOIGFuZCBzdGFuZGFyZCBkZXRlY3RvcnMgY2F0Y2ggdGhlIGxpa2VseSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWVkZWQuIFRoZSBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBvciB6ZXJvZWQgYmVmb3JlIGJlaW5nIHJlYWQuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBoZXJlLiBUaGlzIGFsaWducyB3aXRoIHRoZSBjcml0ZXJpYSBmb3Igc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxuXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyYCBkdXJpbmcgbmV0bnMvSVBWUyBjbGVhbnVwIChgaXBfdnNfdHJhc2hfY2xlYW51cCgpYCkuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB0aW1lciBjYW5ub3QgYmUgcmUtYXJtZWQgYWZ0ZXIgZGVsZXRpb24gZHVyaW5nIHRlYXJkb3duLCBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MTUuMDE1Mjg0NzUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2MDQ5MzM4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjE1LjAxNTI5MTAxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NTQ2MDkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xcbiBcXG4tXFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xcbitcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG4gXFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRlc3QtXFx1MDAzZXRfbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjE2LjU4MTM0NjkzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTQwMDczMjA5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjE5OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuIHtcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xuIFxuLVx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcbitcdHRpbWVyX3NodXRkb3duX3N5bmMoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcbiBcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZGVzdC1cdTAwM2V0X2xpc3QpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MTYuNTgxMzQ4MjA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQwNzM1NDAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgQ2xlYW51cCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpZmYuIEl0IGxvb2tzIGxpa2UgYSBjaGFuZ2Ugd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLiBUaGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIGlzIGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24uIEFoLCBJIHNlZSwgaXQncyBhIHJlcGxhY2VtZW50IG9mIGB0aW1lcl9kZWxldGVfc3luY2Agd2l0aCBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAuIEludGVyZXN0aW5nLiBJIGtub3cgYm90aCBvZiB0aG9zZSB0aW1lciBmdW5jdGlvbnMsIGFuZCBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGltZXIgbWFuYWdlbWVudCBhbmQgc3luY2hyb25pemF0aW9uIGluIHRoZSBJUFZTIGNvbnRleHQuIFRoZSBmYWN0IHRoYXQgYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIHVzZWQgc3VnZ2VzdHMgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCB0byBlbnN1cmluZyB0aGUgdGltZXIncyBncmFjZWZ1bCB0ZXJtaW5hdGlvbiwgcGVyaGFwcyBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgbGVha3MuXG5cbk5vdywgSSBuZWVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgaGF2ZSB0byBzZWUgdGhpcyBjaGFuZ2UgaW4gaXRzIGNvbnRleHQuIFdoYXQncyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCdzIHRoZSBvdmVyYWxsIGZ1bmN0aW9uIG9mIGBpcF92c190cmFzaF9jbGVhbnVwYD8gSXQncyBkZWFsaW5nIHdpdGggYSBcInRyYXNoXCIgb3IgY2xlYW51cCBwcm9jZXNzLCBwcmVzdW1hYmx5IGZvciBJUFZTIGRlc3RpbmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIHRoZSB0aW1lciwgYW5kIHdoeSB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHdhcyBuZWNlc3NhcnkuXG5cbkxldCdzIHF1aWNrbHkgZ2V0IHRoZSBzb3VyY2UgY29kZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgcmVsZXZhbnQgY29kZSBhbmQgZ2V0IHRoZSBmdWxsIGNvbnRleHQgYXJvdW5kIHRoaXMgZnVuY3Rpb24gYW5kIGFsc28gdGhlIHVzZXMgb2YgdGhlIGBkZXN0X3RyYXNoX3RpbWVyYC4gVGhhdCBzaG91bGQgYWxsb3cgbWUgdG8gZm9ybXVsYXRlIGEgcHJvcGVyIGFzc2Vzc21lbnQgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB0aGlzIGlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGEgYnVnIGZpeCwgb3Igc2ltcGx5IGEgY29kZSBtb2Rlcm5pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MjAuOTg4NzA0MzAyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTgwOlxcdH1cXG4xMTgxOlxcdFxcbjExODI6XFx0LypcXG4xMTgzOlxcdCAqICBDbGVhbiB1cCBhbGwgdGhlIGRlc3RpbmF0aW9ucyBpbiB0aGUgdHJhc2hcXG4xMTg0OlxcdCAqICBDYWxsZWQgYnkgdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYW51cCgpXFxuMTE4NTpcXHQgKlxcbjExODY6XFx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcXG4xMTg3OlxcdCAqICB0aGUgc2VydmljZSB0YWJsZXMgbXVzdCBoYXZlIGJlZW4gZmx1c2hlZCBhbmQgYWxsIHRoZSBjb25uZWN0aW9uc1xcbjExODg6XFx0ICogIGFyZSBleHBpcmVkLCBhbmQgdGhlIHJlZmNudCBvZiBlYWNoIGRlc3RpbmF0aW9uIGluIHRoZSB0cmFzaCBtdXN0XFxuMTE4OTpcXHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxcbjExOTA6XFx0ICovXFxuMTE5MTpcXHRzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbjExOTI6XFx0e1xcbjExOTM6XFx0XFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XFxuMTE5NDpcXHRcXG4xMTk1OlxcdFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xcbjExOTY6XFx0XFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxuMTE5NzpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XFxuMTE5ODpcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGVzdC1cXHUwMDNldF9saXN0KTtcXG4xMTk5OlxcdFxcdFxcdGlwX3ZzX2Rlc3RfZnJlZShkZXN0KTtcXG4xMjAwOlxcdFxcdH1cXG4xMjAxOlxcdH1cXG4xMjAyOlxcdFxcbjEyMDM6XFx0c3RhdGljIHZvaWQgaXBfdnNfc3RhdHNfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbjEyMDQ6XFx0e1xcbjEyMDU6XFx0XFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcXG4xMjA2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGlwX3ZzX3N0YXRzX3JjdSxcXG4xMjA3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgcmN1X2hlYWQpO1xcbjEyMDg6XFx0XFxuMTIwOTpcXHRcXHRpcF92c19zdGF0c19yZWxlYXNlKFxcdTAwMjZycy1cXHUwMDNlcyk7XFxuMTIxMDpcXHRcXHRrZnJlZShycyk7XFxuMTIxMTpcXHR9XFxuMTIxMjpcXHRcXG4xMjEzOlxcdHN0YXRpYyB2b2lkXFxuMTIxNDpcXHRpcF92c19jb3B5X3N0YXRzKHN0cnVjdCBpcF92c19rc3RhdHMgKmRzdCwgc3RydWN0IGlwX3ZzX3N0YXRzICpzcmMpXFxuMTIxNTpcXHR7XFxuMTIxNjpcXHQjZGVmaW5lIElQX1ZTX1NIT1dfU1RBVFNfQ09VTlRFUihjKSBkc3QtXFx1MDAzZWMgPSBzcmMtXFx1MDAzZWtzdGF0cy5jIC0gc3JjLVxcdTAwM2Vrc3RhdHMwLmNcXG4xMjE3OlxcdFxcbjEyMTg6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZzcmMtXFx1MDAzZWxvY2spO1xcbjEyMTk6XFx0XFxuMTIyMDpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoY29ubnMpO1xcbjEyMjE6XFx0XFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGlucGt0cyk7XFxuMTIyMjpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIob3V0cGt0cyk7XFxuMTIyMzpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoaW5ieXRlcyk7XFxuMTIyNDpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIob3V0Ynl0ZXMpO1xcbjEyMjU6XFx0XFxuMTIyNjpcXHRcXHRpcF92c19yZWFkX2VzdGltYXRvcihkc3QsIHNyYyk7XFxuMTIyNzpcXHRcXG4xMjI4OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZzcmMtXFx1MDAzZWxvY2spO1xcbjEyMjk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyMC45ODg5ODc3NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODgwODYyMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlwX3ZzX3RyYXNoX2NsZWFudXBgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHRyYWNlIGl0cyB1c2FnZS4gSSdtIGdvaW5nIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJdCdzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gcXVpY2tseSBmaW5kIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlIHdoZXJlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyMi44Njk4NTMyMjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyNDkzMzE5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c190cmFzaF9jbGVhbnVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTc0PXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTkwLSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTkxOnN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUzMTU9dm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MzE3OlxcdGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTgtXFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjI1LjQ5NDc5MDk1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODQ2MTc1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgUGF0aDogYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlcmUncyBhIHJlYXNvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24sIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCwgaXMgb24gbXkgbWluZC4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIG1ldGhvZGljYWxseSB0cmFjZSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBpbnZvY2F0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdpZGVyIG5ldHdvcmsgY29udHJvbCBwbGFuZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY2llczsgd2hpY2ggY29tcG9uZW50cyBhcmUgcmVsaWFudCBvbiB0aGUgY2xlYW51cCBpdCBwcm92aWRlcz8gVGhpcyB3aWxsIHF1aWNrbHkgcGFpbnQgYSBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCBoZWxwIG1lIHplcm8gaW4gb24gd2hhdGV2ZXIncyBkcml2aW5nIHRoaXMgaW52ZXN0aWdhdGlvbi4gU28sIGxldCdzIHN0YXJ0IHdpdGggYSBjYWxsIGdyYXBoIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzgwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MjcuNTc5NDE1NTAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTkxOTAwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTE3OTc9dm9pZCBpcF92c19wcm90b2NvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxNzk4OnZvaWQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNzk5LXZvaWQgaXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQ4MD1zdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjUyNS1wcm90b2NvbF9mYWlsOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjUyNjpcXHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjUyNy1jb250cm9sX2ZhaWw6XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1MzQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBfX2lwX3ZzX2NsZWFudXBfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NDQtXFx0XFx0aXBfdnNfcHJvdG9jb2xfbmV0X2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNTQ1OlxcdFxcdGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTQ2LVxcdFxcdGlwX3ZzX2VzdGltYXRvcl9uZXRfY2xlYW51cChpcHZzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MDQ2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MTkyOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUxOTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMTg9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IHJldHVybiAwOyB9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyMTk6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcF92c19jb250cm9sX25ldF9jbGVhbnVwX3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykgeyB9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyMjAtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTU6dm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE3LVxcdGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTg6XFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTktXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyOS45OTg2MjcwMzZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDMyODg3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gb2YgSVBWUyBDbGVhbnVwIGluIE5ldHdvcmsgTmFtZXNwYWNlIFRlYXItZG93bioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBJUFZTIGNvZGUgaGFuZGxlcyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIGR1cmluZyB0aGUgdGVhcmRvd24gcHJvY2Vzcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgX19pcF92c19jbGVhbnVwX2JhdGNoYCBmdW5jdGlvbiwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgcmVnaXN0ZXJlZCBhcyBhIHBlcm5ldCBleGl0IGZ1bmN0aW9uIOKAkyBzb21ldGhpbmcgbGlrZSBgb3BzLmV4aXRfYmF0Y2ggPSBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLlxuXG5NeSB0cmFpbiBvZiB0aG91Z2h0IHJpZ2h0IG5vdyBpcyBjZW50ZXJlZCBvbiBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBzeXprYWxsZXIuIFNpbmNlIHN5emthbGxlciBpcyBjb25zdGFudGx5IHNwaW5uaW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gbmV0d29yayBuYW1lc3BhY2VzIOKAkyB1c2luZyBgdW5zaGFyZShDTE9ORV9ORVdORVQpYCwgYGNsb25lYCwgYW5kIHNvY2tldCBjYWxscyDigJMgaXQncyBhIHBlcmZlY3QgZW52aXJvbm1lbnQgdG8gc3RyZXNzLXRlc3QgdGhpcyBhcmVhLiBXaGVuIGEgbmV0bnMgZXhpdHMsIHRoZSBgb3BzLVx1MDAzZWV4aXRgIG9yLCBpbiB0aGlzIGNhc2UsIGBvcHMtXHUwMDNlZXhpdF9iYXRjaGAgZnVuY3Rpb25zIGdldCBpbnZva2VkLiBUaGF0J3Mgd2hlcmUgSSBiZWxpZXZlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgIGNvbWVzIGludG8gcGxheS5cblxuU3BlY2lmaWNhbGx5LCBpbnNpZGUgYF9faXBfdnNfY2xlYW51cF9iYXRjaGAsIGl0J3MgY2FsbGluZyBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChpcHZzKWAsIHdoaWNoIHRoZW4gY2FsbHMgYGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cylgLiBUaGlzIGlzIHRoZSBjb3JlIGxvZ2ljIEkgbmVlZCB0byBhbmFseXplLlxuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBgZGVzdF90cmFzaF90aW1lcmAuIElzIHRoaXMgdGltZXIgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYW5kIHVzZWQ/IEkgbmVlZCB0byB0cmFjayBkb3duIGFueSBpbnN0YW5jZXMgb2YgYGRlc3RfdHJhc2hfdGltZXJgIHdpdGhpbiB0aGUgY29kZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgY2xlYW51cCBwcm9jZXNzLiBMZXQncyBzdGFydCB3aXRoIGEgc2VhcmNoIGZvciB0aGF0IHZhcmlhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQ1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjMzLjAzMTUxNzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUwNTYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVzdF90cmFzaF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTExNTY9c3RydWN0IG5ldG5zX2lwdnMge1xcbi0tXFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xMjAyLVxcdHNwaW5sb2NrX3RcXHRcXHRkZXN0X3RyYXNoX2xvY2s7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxMjAzOlxcdHN0cnVjdCB0aW1lcl9saXN0XFx0ZGVzdF90cmFzaF90aW1lcjsgLyogZXhwaXJhdGlvbiB0aW1lciAqL1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTIwNC1cXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRzZXJ2aWNlX211dGV4OyAgICAvKiBzZXJ2aWNlIHJlY29uZmlnICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE0OD1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9wdXRfZGVzdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU2LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoKSBcXHUwMDI2XFx1MDAyNiAhY2xlYW51cClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1NzpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTgtXFx0XFx0XFx0ICBqaWZmaWVzICsgKElQX1ZTX0RFU1RfVFJBU0hfUEVSSU9EIFxcdTAwM2VcXHUwMDNlIDEpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTkxPXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5NTpcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5Ni1cXHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzIyPXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjQtXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSB0aW1lcl9jb250YWluZXJfb2YoaXB2cywgdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyNTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGRlc3RfdHJhc2hfdGltZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzI2LVxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbmV4dDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzQ4LVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVxcdFxcdFxcdCAgamlmZmllcyArIChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcXHUwMDNlXFx1MDAzZSAxKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDgtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyNDk6XFx0dGltZXJfc2V0dXAoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIsIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIElQX1ZTX0FGX01BWDsgaWR4KyspIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MzUuMjk2NTgxNTM1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NDMyMzE1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFZTIFRpbWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hhbmdlOiBgdGltZXJfZGVsZXRlX3N5bmNgIGlzIG5vdyBgdGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIpYC4gUmlnaHQgYXdheSwgdGhlIGFsYXJtIGJlbGxzIGFyZSBnb2luZyBvZmYgaW4gbXkgaGVhZC4gV2h5IHRoaXMgY2hhbmdlPyBUaGUgY29tbWVudCBzYXlzIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBwcmV2ZW50cyByZWFybWluZyB0aGUgdGltZXIuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIElzIHRoZXJlIGEgc2NlbmFyaW8gd2hlcmUgdGhpcyB0aW1lciAqbmVlZHMqIHRvIGJlIHJlYXJtZWQ/IEFuZCBpZiBzbywgaG93IGRvZXMgc2h1dHRpbmcgaXQgZG93biBhZmZlY3QgdGhlIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHk/XG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0J3MgZWFzaWx5IHJlYWNoYWJsZT8gQ2FuIEkgdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBqdXN0IGEgcmVndWxhciBzeXN0ZW0/IFllcywgSVBWUyBpcyBhIGNvcmUgbmV0ZmlsdGVyIHN1YnN5c3RlbS4gSSBjYW4gYWNjZXNzIGl0IHZpYSBzb2Nrb3B0cywgbmV0bGluayDigJMgdGhpbmdzIGxpa2UgYGlwdnNhZG1gLCBnZW5lcmljIG5ldGxpbmssIGV2ZW4gaXB0YWJsZXMgaW50ZXJhY3Rpb24uIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgc3RhbmRhcmQgb3BlcmF0aW9ucy4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGxpa2VseSB0ZXN0IGFuZCByZXByb2R1Y2Ugd2l0aG91dCB0b28gbXVjaCBoYXNzbGUuXG5cbk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBhbnkgYEtjb25maWdgIHJlcXVpcmVtZW50cy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGJlaGF2aW9yLCBvciB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzU3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjM4LjEzOTgxNjQwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1MTU5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDM5OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3OmlmIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjgtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjk6Y29uZmlnXFx0SVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIklQdjYgc3VwcG9ydCBmb3IgSVBWU1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyLVxcdHNlbGVjdCBORl9ERUZSQUdfSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXFx0SVBfVlNfREVCVUdcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ2LVxcdGludCBcXFwiSVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXFx0SVBfVlNfUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjMtIFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcXHRJUF9WU19XUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1xcdElQX1ZTX0xDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1xcdElQX1ZTX1dMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMjA6Y29uZmlnXFx0SVBfVlNfU0hcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXFx0dHJpc3RhdGUgXFxcInNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1xcdElQX1ZTX01IXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjQ4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcXHRJUF9WU19TRURcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNTAtXFx0dHJpc3RhdGUgXFxcInNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjYyOmNvbmZpZ1xcdElQX1ZTX05RXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcXHRJUF9WU19UV09TXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzE5PWNvbW1lbnQgJ0lQVlMgYXBwbGljYXRpb24gaGVscGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjE6Y29uZmlnXFx0SVBfVlNfRlRQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgaGVscGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcXHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1RDUCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjQtXFx0XFx0TkZfQ09OTlRSQUNLX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyNTpcXHRzZWxlY3QgSVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzM3OmNvbmZpZ1xcdElQX1ZTX05GQ1RcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMzgtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ1OmNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDgtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zNTI9Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNjAtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzYxOmVuZGlmICMgSVBfVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT03PWlwX3ZzX3Byb3RvLW9ianMteSA6PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo4OmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSArPSBpcF92c19wcm90b190Y3Aub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo5OmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVURQKSArPSBpcF92c19wcm90b191ZHAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxMDppcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX0FIX0VTUCkgKz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MTE6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19TQ1RQKSArPSBpcF92c19wcm90b19zY3RwLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTItXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlPTEzPWlwX3ZzLWV4dHJhX29ianMteSA6PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNDppcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICs9IGlwX3ZzX25mY3Qub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTY9aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0yMi0jIElQVlMgY29yZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMjQtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI1LSMgSVBWUyBzY2hlZHVsZXJzXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19JUF9WU19SUikgKz0gaXBfdnNfcnIub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfSVBfVlNfV1JSKSArPSBpcF92c193cnIub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfSVBfVlNfTEMpICs9IGlwX3ZzX2xjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0lQX1ZTX1dMQykgKz0gaXBfdnNfd2xjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSArPSBpcF92c19mby5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JUF9WU19PVkYpICs9IGlwX3ZzX292Zi5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19JUF9WU19MQkxDKSArPSBpcF92c19sYmxjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSArPSBpcF92c19sYmxjci5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19JUF9WU19ESCkgKz0gaXBfdnNfZGgub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfSVBfVlNfU0gpICs9IGlwX3ZzX3NoLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0lQX1ZTX01IKSArPSBpcF92c19taC5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUF9WU19TRUQpICs9IGlwX3ZzX3NlZC5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19JUF9WU19OUSkgKz0gaXBfdnNfbnEub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfSVBfVlNfVFdPUykgKz0gaXBfdnNfdHdvcy5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTQwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00MS0jIElQVlMgYXBwbGljYXRpb24gaGVscGVyc1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfSVBfVlNfRlRQKSArPSBpcF92c19mdHAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDQtIyBJUFZTIGNvbm5lY3Rpb24gdGVtcGxhdGUgcmV0cmlldmVyc1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfSVBfVlNfUEVfU0lQKSArPSBpcF92c19wZV9zaXAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00Ni1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX0lQVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz03Mj1pcF92c19hcHBfaW5jX25ldyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBfX3UxNiBwcm90byxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMDgtXFx0bGlzdF9hZGQoXFx1MDAyNmluYy1cXHUwMDNlYV9saXN0LCBcXHUwMDI2YXBwLVxcdTAwM2VpbmNzX2xpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMDk6XFx0SVBfVlNfREJHKDksIFxcXCIlcyBBcHAgJXM6JXUgcmVnaXN0ZXJlZFxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTEwLVxcdFxcdCAgcHAtXFx1MDAzZW5hbWUsIGluYy1cXHUwMDNlbmFtZSwgbnRvaHMoaW5jLVxcdTAwM2Vwb3J0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9MTI0PWlwX3ZzX2FwcF9pbmNfcmVsZWFzZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2FwcCAqaW5jKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTEzMy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MTM0OlxcdElQX1ZTX0RCRyg5LCBcXFwiJXMgQXBwICVzOiV1IHVucmVnaXN0ZXJlZFxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTM1LVxcdFxcdCAgcHAtXFx1MDAzZW5hbWUsIGluYy1cXHUwMDNlbmFtZSwgbnRvaHMoaW5jLVxcdTAwM2Vwb3J0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9Mjg3PXN0YXRpYyBpbmxpbmUgdm9pZCB2c19maXhfc2VxKGNvbnN0IHN0cnVjdCBpcF92c19zZXEgKnZzZXEsIHN0cnVjdCB0Y3BoZHIgKnRoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTI5OC1cXHRcXHRcXHR0aC1cXHUwMDNlc2VxID0gaHRvbmwoc2VxICsgdnNlcS1cXHUwMDNlZGVsdGEpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoyOTk6XFx0XFx0XFx0SVBfVlNfREJHKDksIFxcXCIlcygpOiBhZGRlZCBkZWx0YSAoJWQpIHRvIHNlcVxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzAwLVxcdFxcdFxcdFxcdCAgX19mdW5jX18sIHZzZXEtXFx1MDAzZWRlbHRhKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMDItXFx0XFx0XFx0dGgtXFx1MDAzZXNlcSA9IGh0b25sKHNlcSArIHZzZXEtXFx1MDAzZXByZXZpb3VzX2RlbHRhKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzAzOlxcdFxcdFxcdElQX1ZTX0RCRyg5LCBcXFwiJXMoKTogYWRkZWQgcHJldmlvdXNfZGVsdGEgKCVkKSB0byBzZXFcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMwNC1cXHRcXHRcXHRcXHQgIF9fZnVuY19fLCB2c2VxLVxcdTAwM2VwcmV2aW91c19kZWx0YSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9MzE0PXZzX2ZpeF9hY2tfc2VxKGNvbnN0IHN0cnVjdCBpcF92c19zZXEgKnZzZXEsIHN0cnVjdCB0Y3BoZHIgKnRoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMyNy1cXHRcXHRcXHR0aC1cXHUwMDNlYWNrX3NlcSA9IGh0b25sKGFja19zZXEgLSB2c2VxLVxcdTAwM2VkZWx0YSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjMyODpcXHRcXHRcXHRJUF9WU19EQkcoOSwgXFxcIiVzKCk6IHN1YnRyYWN0ZWQgZGVsdGEgXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMjktXFx0XFx0XFx0XFx0ICBcXFwiKCVkKSBmcm9tIGFja19zZXFcXFxcblxcXCIsIF9fZnVuY19fLCB2c2VxLVxcdTAwM2VkZWx0YSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzMyLVxcdFxcdFxcdHRoLVxcdTAwM2VhY2tfc2VxID0gaHRvbmwoYWNrX3NlcSAtIHZzZXEtXFx1MDAzZXByZXZpb3VzX2RlbHRhKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzMzOlxcdFxcdFxcdElQX1ZTX0RCRyg5LCBcXFwiJXMoKTogc3VidHJhY3RlZCBcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMzNC1cXHRcXHRcXHRcXHQgIFxcXCJwcmV2aW91c19kZWx0YSAoJWQpIGZyb20gYWNrX3NlcVxcXFxuXFxcIixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz0zNTk9c3RhdGljIGlubGluZSBpbnQgYXBwX3RjcF9wa3Rfb3V0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zNzktXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjM4MDpcXHRpZiAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4MS1cXHRcXHR2c19maXhfc2VxKFxcdTAwMjZjcC1cXHUwMDNlb3V0X3NlcSwgdGgpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozODI6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4My1cXHRcXHR2c19maXhfYWNrX3NlcShcXHUwMDI2Y3AtXFx1MDAzZWluX3NlcSwgdGgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM5OC1cXHRcXHR2c19zZXFfdXBkYXRlKGNwLCBcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjM5OTpcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfT1VUX1NFUSwgc2VxLCBkaWZmKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDAwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTQzNT1zdGF0aWMgaW5saW5lIGludCBhcHBfdGNwX3BrdF9pbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU1LVxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzo0NTY6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ1Ny1cXHRcXHR2c19maXhfc2VxKFxcdTAwMjZjcC1cXHUwMDNlaW5fc2VxLCB0aCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ1ODpcXHRpZiAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ1OS1cXHRcXHR2c19maXhfYWNrX3NlcShcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsIHRoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NzQtXFx0XFx0dnNfc2VxX3VwZGF0ZShjcCwgXFx1MDAyNmNwLVxcdTAwM2Vpbl9zZXEsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ3NTpcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfSU5fU0VRLCBzZXEsIGRpZmYpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NzYtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mzk6I2lmbmRlZiBDT05GSUdfSVBfVlNfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQwOiNkZWZpbmUgQ09ORklHX0lQX1ZTX1RBQl9CSVRTXFx0MTJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQxLSNlbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00NS0qL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDY6c3RhdGljIGludCBpcF92c19jb25uX3RhYl9iaXRzID0gQ09ORklHX0lQX1ZTX1RBQl9CSVRTO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDctbW9kdWxlX3BhcmFtX25hbWVkKGNvbm5fdGFiX2JpdHMsIGlwX3ZzX2Nvbm5fdGFiX2JpdHMsIGludCwgMDQ0NCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTU0PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqaXBfdnNfY29ubl9jYWNoZXAgX19yZWFkX21vc3RseTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTYtLyogV2UgbmVlZCBhbiBhZGRyc3RybGVuIHRoYXQgd29ya3Mgd2l0aCBvciB3aXRob3V0IHY2ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1NzojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU4OiNkZWZpbmUgSVBfVlNfQUREUlNUUkxFTiBJTkVUNl9BRERSU1RSTEVOXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OS0jZWxzZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NjA6I2RlZmluZSBJUF9WU19BRERSU1RSTEVOICg4KzEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02MS0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTg0PXN0YXRpYyB1MzIgaXBfdnNfY29ubl9oYXNoa2V5KHN0cnVjdCBpcF92c19yaHQgKnQsIGludCBhZiwgdW5zaWduZWQgaW50IHByb3RvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxOTE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTItXFx0aWYgKGFmID09IEFGX0lORVQ2KSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTI2MT1zdGF0aWMgaW5saW5lIGludCBpcF92c19jb25uX2hhc2goc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yNzAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyNzE6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9PTkVfUEFDS0VUKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjcyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyOTM6XFx0Y3AtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9IQVNIRUQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTQtXFx0V1JJVEVfT05DRShjcC1cXHUwMDNlaG4wLmhhc2hfa2V5LCBoYXNoX2tleSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMwNi1cXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fY291bnQpIFxcdTAwM2UgdC1cXHUwMDNldV90aHJlc2ggXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjMwNzpcXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzA4LVxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTMxNj1zdGF0aWMgaW5saW5lIGJvb2wgaXBfdnNfY29ubl91bmxpbmsoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zMjQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozMjU6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9PTkVfUEFDS0VUKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzI2LVxcdFxcdHJldHVybiByZWZjb3VudF9kZWNfaWZfb25lKFxcdTAwMjZjcC1cXHUwMDNlcmVmY250KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzM5OlxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSEFTSEVEKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNDAtXFx0XFx0LyogRGVjcmVhc2UgcmVmY250IGFuZCB1bmxpbmsgY29ubiBvbmx5IGlmIHdlIGFyZSBsYXN0IHVzZXIgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ1LVxcdFxcdFxcdFxcdGhsaXN0X2JsX2RlbF9yY3UoXFx1MDAyNmNwLVxcdTAwM2VobjEubm9kZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozNDY6XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfSEFTSEVEO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ3LVxcdFxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTM2Nz1fX2lwX3ZzX2Nvbm5faW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzY4LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjM2OTpcXHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM3MC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHAtXFx1MDAzZWlwdnM7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM5NS1cXHRcXHRcXHRcXHQgICAgKCFwLVxcdTAwM2VjcG9ydCBeXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozOTY6XFx0XFx0XFx0XFx0ICAgICAoIShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM5Ny1cXHRcXHRcXHRcXHQgICAgcC1cXHUwMDNlcHJvdG9jb2wgPT0gY3AtXFx1MDAzZXByb3RvY29sKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTQxMz1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY29ubl9pbl9nZXQoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMDpcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJsb29rdXAvaW4gJXMgJXM6JWQtXFx1MDAzZSVzOiVkICVzXFxcXG5cXFwiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDMxLVxcdFxcdCAgICAgIGlwX3ZzX3Byb3RvX25hbWUocC1cXHUwMDNlcHJvdG9jb2wpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMyOlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2VjYWRkciksIG50b2hzKHAtXFx1MDAzZWNwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMzpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihwLVxcdTAwM2VhZiwgcC1cXHUwMDNldmFkZHIpLCBudG9ocyhwLVxcdTAwM2V2cG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00MzQtXFx0XFx0ICAgICAgY3AgPyBcXFwiaGl0XFxcIiA6IFxcXCJub3QgaGl0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTQ3NT1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY3RfaW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDc2LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQ3NzpcXHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3OC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHAtXFx1MDAzZWlwdnM7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUxNC1cXHRcXHRcXHRcXHQgICAgcC1cXHUwMDNlY3BvcnQgPT0gY3AtXFx1MDAzZWNwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1MTU6XFx0XFx0XFx0XFx0ICAgIGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTE2LVxcdFxcdFxcdFxcdCAgICBwLVxcdTAwM2Vwcm90b2NvbCA9PSBjcC1cXHUwMDNlcHJvdG9jb2wgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTI5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMwOlxcdElQX1ZTX0RCR19CVUYoOSwgXFxcInRlbXBsYXRlIGxvb2t1cC9pbiAlcyAlczolZC1cXHUwMDNlJXM6JWQgJXNcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MzEtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1MzI6XFx0XFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cXHUwMDNlYWYsIHAtXFx1MDAzZWNhZGRyKSwgbnRvaHMocC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMzOlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2V2YWRkciksIG50b2hzKHAtXFx1MDAzZXZwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUzNC1cXHRcXHQgICAgICBjcCA/IFxcXCJoaXRcXFwiIDogXFxcIm5vdCBoaXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NTQzPXN0cnVjdCBpcF92c19jb25uICppcF92c19jb25uX291dF9nZXQoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnApXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01NDQte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTQ1OlxcdERFQ0xBUkVfSVBfVlNfUkhUX1dBTEtfQlVDS0VUX1JDVSgpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTQ2LVxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cXHUwMDNlaXB2cztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTY5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTcwOlxcdFxcdFxcdFxcdGlmIChJUF9WU19GV0RfTUVUSE9EKGNwKSAhPSBJUF9WU19DT05OX0ZfTUFTUSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTcxLVxcdFxcdFxcdFxcdFxcdHNwb3J0ID0gY3AtXFx1MDAzZXZwb3J0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTMtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTQ6XFx0SVBfVlNfREJHX0JVRig5LCBcXFwibG9va3VwL291dCAlcyAlczolZC1cXHUwMDNlJXM6JWQgJXNcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTUtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTY6XFx0XFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cXHUwMDNlYWYsIHAtXFx1MDAzZWNhZGRyKSwgbnRvaHMocC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTk3OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2V2YWRkciksIG50b2hzKHAtXFx1MDAzZXZwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU5OC1cXHRcXHQgICAgICBjcCA/IFxcXCJoaXRcXFwiIDogXFxcIm5vdCBoaXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NjIwPXN0YXRpYyB2b2lkIF9faXBfdnNfY29ubl9wdXRfdGltZXIoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjIxLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjYyMjpcXHR1bnNpZ25lZCBsb25nIHQgPSAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpID9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYyMy1cXHRcXHQwIDogY3AtXFx1MDAzZXRpbWVvdXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTYyOT12b2lkIGlwX3ZzX2Nvbm5fcHV0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYzMC17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2MzE6XFx0aWYgKChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfT05FX1BBQ0tFVCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYzMi1cXHQgICAgKHJlZmNvdW50X3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VyZWZjbnQpID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTY0Mz12b2lkIGlwX3ZzX2Nvbm5fZmlsbF9jcG9ydChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIF9fYmUxNiBjcG9ydClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjg0LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Njg1OlxcdFxcdFxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXFx1MDAyNlxcdTAwMjYgYnlfbWUpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02ODYtXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWNwb3J0ID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjg4LVxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2ODk6XFx0XFx0XFx0SVBfVlNfRVJSX1JMKFxcXCIlcygpOiBUb28gbWFueSBodCBjaGFuZ2VzIGZvciBkaXIgJWRcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02OTAtXFx0XFx0XFx0XFx0ICAgICBfX2Z1bmNfXywgZGlyKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNzU3LVxcdC8qIEZpbGwgY3BvcnQgb25jZSwgZXZlbiBpZiBtdWx0aXBsZSBwYWNrZXRzIHRyeSB0byBkbyBpdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzU4OlxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXFx1MDAyNlxcdTAwMjYgKCFjcC1cXHUwMDNlY3BvcnQgfHwgYnlfbWUpKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NTktXFx0XFx0LyogSWYgd2UgcmFjZSB3aXRoIHJlc2l6aW5nIG1ha2Ugc3VyZSBjcG9ydCBpcyBzZXQgZm9yIGRpciAxICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc2NS1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZpcHZzLVxcdTAwM2Vub19jcG9ydF9jb25uc1thZl9pZF0pO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzY2OlxcdFxcdFxcdGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfQ09OTl9GX05PX0NQT1JUO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNzY3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fY2hhbmdlX2Z3ZF9tYXNrKHN0cnVjdCBpcF92c19jb25uICpjcCwgdTMyIG5ld19mbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODA0LVxcdC8qIFNlZSBpcF92c19jb25uX3VzZV9oYXNoMigpIGZvciByZWZlcmVuY2UgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjgwNTpcXHRpZiAoKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkgfHxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTgwNi1cXHQgICAgLyogTm8gY2hhbmdlIGluIGRvdWJsZSBoYXNoaW5nID8gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjgwNzpcXHQgICAgKElQX1ZTX0ZXRF9NRVRIT0QoY3ApID09IElQX1ZTX0NPTk5fRl9NQVNRKSA9PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA4OlxcdCAgICAoKG5ld19mbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9GV0RfTUFTSykgPT0gSVBfVlNfQ09OTl9GX01BU1EpKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDktXFx0XFx0Y3AtXFx1MDAzZWZsYWdzID0gbmV3X2ZsYWdzO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04NjY9aW50IGlwX3ZzX2Nvbm5fZGVzaXJlZF9zaXplKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfcmh0ICp0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04NjktXFx0cmV0dXJuIGlwX3ZzX3JodF9kZXNpcmVkX3NpemUoaXB2cywgdCwgYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fY291bnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODcwOlxcdFxcdFxcdFxcdCAgICAgIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODcxLVxcdFxcdFxcdFxcdCAgICAgIGlwX3ZzX2Nvbm5fdGFiX2JpdHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04NzU9c3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfY29ubl90YWJfYWxsb2Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBidWNrZXRzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODItXFx0c2NvdW50cyA9IGNsYW1wKGJ1Y2tldHMgXFx1MDAzZVxcdTAwM2UgNiwgMSwgMjU2KTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjg4MzpcXHQvKiBsb2NrczogYmFzZWQgb24gcGFyYWxsZWwgSVBfVlNfQ09OTl9GX05PX0NQT1JUIG9wZXJhdGlvbnMgKyByZXNpemUgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg4NC1cXHRsb2NrcyA9IGNsYW1wKDgsIDEsIHNjb3VudHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODktXFx0dC1cXHUwMDNlbGZhY3RvciA9IGxmYWN0b3I7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo4OTA6XFx0aXBfdnNfcmh0X3NldF90aHJlc2hvbGRzKHQsIHQtXFx1MDAzZXNpemUsIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODkxLVxcdFxcdFxcdFxcdCBpcF92c19jb25uX3RhYl9iaXRzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODk2PXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxNC1cXHQvKiBBbGxvdyB3b3JrIHRvIGJlIHF1ZXVlZCBhZ2FpbiAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE1OlxcdGNsZWFyX2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTYtXFx0dCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoaXB2cy1cXHUwMDNlY29ubl90YWIsIDEpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MzUtXFx0LyogRmxpcCB0aGUgdGFibGVfaWQgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkzNjpcXHR0X25ldy1cXHUwMDNldGFibGVfaWQgPSB0LVxcdTAwM2V0YWJsZV9pZCBeIElQX1ZTX1JIVF9UQUJMRV9JRF9NQVNLO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTM3LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMDIzPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXQoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTAyNC17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI1OlxcdHN3aXRjaCAoSVBfVlNfRldEX01FVEhPRChjcCkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMjY6XFx0Y2FzZSBJUF9WU19DT05OX0ZfTUFTUTpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjctXFx0XFx0Y3AtXFx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbmF0X3htaXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjktXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDMwOlxcdGNhc2UgSVBfVlNfQ09OTl9GX1RVTk5FTDpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDMyLVxcdFxcdGlmIChjcC1cXHUwMDNlZGFmID09IEFGX0lORVQ2KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTAzOTpcXHRjYXNlIElQX1ZTX0NPTk5fRl9EUk9VVEU6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQwLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2RyX3htaXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDQzOlxcdGNhc2UgSVBfVlNfQ09OTl9GX0xPQ0FMTk9ERTpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDQtXFx0XFx0Y3AtXFx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbnVsbF94bWl0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA0NzpcXHRjYXNlIElQX1ZTX0NPTk5fRl9CWVBBU1M6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ4LVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2J5cGFzc194bWl0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDUyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1MzojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNTQtc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU1LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNTY6XFx0c3dpdGNoIChJUF9WU19GV0RfTUVUSE9EKGNwKSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NzpcXHRjYXNlIElQX1ZTX0NPTk5fRl9NQVNROlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA1OC1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19uYXRfeG1pdF92NjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNjE6XFx0Y2FzZSBJUF9WU19DT05OX0ZfVFVOTkVMOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Mi1cXHRcXHRpZiAoY3AtXFx1MDAzZWRhZiA9PSBBRl9JTkVUNilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNjg6XFx0Y2FzZSBJUF9WU19DT05OX0ZfRFJPVVRFOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2OS1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19kcl94bWl0X3Y2O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDcxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA3MjpcXHRjYXNlIElQX1ZTX0NPTk5fRl9MT0NBTE5PREU6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDczLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX251bGxfeG1pdDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3NS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNzY6XFx0Y2FzZSBJUF9WU19DT05OX0ZfQllQQVNTOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3Ny1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19ieXBhc3NfeG1pdF92NjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OT1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEwMi1cXHRpZiAoY3AtXFx1MDAzZXByb3RvY29sICE9IElQUFJPVE9fVURQKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwMzpcXHRcXHRjb25uX2ZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfT05FX1BBQ0tFVDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDQtXFx0ZmxhZ3MgPSBjcC1cXHUwMDNlZmxhZ3M7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA1LVxcdC8qIEJpbmQgd2l0aCB0aGUgZGVzdGluYXRpb24gYW5kIGl0cyBjb3JyZXNwb25kaW5nIHRyYW5zbWl0dGVyICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTA2OlxcdGlmIChmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9TWU5DKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA3LVxcdFxcdC8qIFN5bmNlZCBjb25ucyBhcmUgaGFzaGVkLCBzbyB0aGV5IGNhbiBub3QgZ2V0IHRoaXMgZmxhZyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwODpcXHRcXHRjb25uX2ZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfT05FX1BBQ0tFVDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMTItXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTEzOlxcdFxcdGlmICghKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTQ6XFx0XFx0XFx0Y29ubl9mbGFncyBcXHUwMDI2PSB+SVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTExNS1cXHRcXHQvKiBjb25uZWN0aW9ucyBpbmhlcml0IGZvcndhcmRpbmcgbWV0aG9kIGZyb20gZGVzdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTExNjpcXHRcXHRmbGFncyBcXHUwMDI2PSB+KElQX1ZTX0NPTk5fRl9GV0RfTUFTSyB8IElQX1ZTX0NPTk5fRl9OT09VVFBVVCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTE3LVxcdFxcdGZsYWdzIHw9IGNvbm5fZmxhZ3M7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMjAtXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTIxOlxcdFxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSEFTSEVEKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMi1cXHRcXHRcXHRpcF92c19jb25uX2NoYW5nZV9md2RfbWFzayhjcCwgZmxhZ3MpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzMTpcXHRJUF9WU19EQkdfQlVGKDcsIFxcXCJCaW5kLWRlc3QgJXMgYzolczolZCB2OiVzOiVkIFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMzItXFx0XFx0ICAgICAgXFxcImQ6JXM6JWQgZndkOiVjIHM6JXUgY29ubi1cXHUwMDNlZmxhZ3M6JVggY29ubi1cXHUwMDNlcmVmY250OiVkIFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzNC1cXHRcXHQgICAgICBpcF92c19wcm90b19uYW1lKGNwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM1OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2VjYWRkciksIG50b2hzKGNwLVxcdTAwM2VjcG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM2OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2V2YWRkciksIG50b2hzKGNwLVxcdTAwM2V2cG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM3OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VkYWYsIFxcdTAwMjZjcC1cXHUwMDNlZGFkZHIpLCBudG9ocyhjcC1cXHUwMDNlZHBvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzOC1cXHRcXHQgICAgICBpcF92c19md2RfdGFnKGNwKSwgY3AtXFx1MDAzZXN0YXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQyLVxcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE0MzpcXHRpZiAoIShmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExNDQtXFx0XFx0aW50IHRjO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ5LVxcdFxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE1MDpcXHRcXHRpZiAoIShmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTUxLVxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjAwLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjAxOiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIwMi1cXHRcXHRpZiAoY3AtXFx1MDAzZWFmID09IEFGX0lORVQ2KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMjIwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMjYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjI3OlxcdElQX1ZTX0RCR19CVUYoNywgXFxcIlVuYmluZC1kZXN0ICVzIGM6JXM6JWQgdjolczolZCBcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjI4LVxcdFxcdCAgICAgIFxcXCJkOiVzOiVkIGZ3ZDolYyBzOiV1IGNvbm4tXFx1MDAzZWZsYWdzOiVYIGNvbm4tXFx1MDAzZXJlZmNudDolZCBcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzAtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShjcC1cXHUwMDNlcHJvdG9jb2wpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMTpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlYWYsIFxcdTAwMjZjcC1cXHUwMDNlY2FkZHIpLCBudG9ocyhjcC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMjpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlYWYsIFxcdTAwMjZjcC1cXHUwMDNldmFkZHIpLCBudG9ocyhjcC1cXHUwMDNldnBvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMzpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlZGFmLCBcXHUwMDI2Y3AtXFx1MDAzZWRhZGRyKSwgbnRvaHMoY3AtXFx1MDAzZWRwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzQtXFx0XFx0ICAgICAgaXBfdnNfZndkX3RhZyhjcCksIGNwLVxcdTAwM2VzdGF0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIzOC1cXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMzk6XFx0aWYgKCEoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTozOC4yMDczMzY5MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA4OTA4NjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb3IgY29udGV4dCBzdXJyb3VuZGluZyB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNvbnN1bHQgdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1c3VhbGx5IGxpdmUsIGFuZCBpdCdzIHRoZSByaWdodCBwbGFjZSB0byBmaW5kIGFueSBkZXBlbmRlbmNpZXMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gQnkgZXhhbWluaW5nIHRoYXQgS2NvbmZpZyBmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciBgSVBfVlNgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB3aGVuIGRpZ2dpbmcgaW50byBrZXJuZWwgY29uZmlncy4gSXQncyBhYm91dCBidWlsZGluZyBhIG1lbnRhbCBtYXAgb2YgdGhlIGZlYXR1cmUncyByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6NDAuMjk2NDI1ODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzc4MzkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0MC40NTAyMTUzMzhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0ODcxODMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb25maWd1cmF0aW9uIGZpbGU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IElQVlMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJJ2xsIGZvY3VzIG9uIGxpbmVzIDEgdGhyb3VnaCAyNi4gVGhpcyBzZWN0aW9uIGxpa2VseSBkZWZpbmVzIHRoZSBjb3JlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIElQVlMgaXRzZWxmLCBiZWZvcmUgZ2V0dGluZyBpbnRvIG1vcmUgc3BlY2lmaWMgZmVhdHVyZXMuIEknbSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyAtIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQncyBtb2R1bGFyLCBpZiBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBgQ09ORklHX0lQX1ZTYCBvcHRpb24sIGFuZCBob3BlZnVsbHksIHNvbWUgY29tbWVudGFyeSB0aGF0IGNsYXJpZmllcyB0aGUgaW50ZW50aW9uIG9mIHRoZSBzZXR0aW5ncy4gVGhpcyBpbml0aWFsIGJsb2NrIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBmcmFtZXdvcmsgdG8gdW5kZXJzdGFuZCB0aGUgc3Vic2VxdWVudCwgbW9yZSBncmFudWxhciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gc3RvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDA5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6NDIuNTk4OTM1ODY1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIElQIFZpcnR1YWwgU2VydmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdG1lbnVjb25maWcgSVBfVlNcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcXG4gIDExOlxcdFxcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcXG4gIDEyOlxcdFxcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXFxuICAxMzpcXHRcXHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcXG4gIDE0OlxcdFxcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxcbiAgMTg6XFx0XFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXFxuICAxOTpcXHRcXHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcXG4gIDIwOlxcdFxcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxcbiAgMjE6XFx0XFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcXG4gIDIyOlxcdFxcdCAgZm9sbG93aW5nIFVSTDogXFx1MDAzY2h0dHA6Ly93d3cubGludXh2aXJ0dWFsc2VydmVyLm9yZy9cXHUwMDNlLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuICAyNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0aWYgSVBfVlNcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnXFx0SVBfVlNfSVBWNlxcbiAgMzA6XFx0XFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0Mi41OTkwMTI3MDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjUyNzUwMzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzIGZvciBJUFZTIFRpbWVyIENoYW5nZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBJUF9WU2AgZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLCBzbyBpdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBgdGltZXJfZGVsZXRlX3N5bmNgIHRvIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBjaGFuZ2UgaW4gYGlwX3ZzX3RyYXNoX2NsZWFudXBgLCBpcyB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQuXG5cblRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IHJlYWNoYWJpbGl0eSBpcyBraW5nLiBDYW4gdGhpcyBjb2RlIGFjdHVhbGx5ICpydW4qIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IExldCdzIGNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSB0byBydWxlIG91dCBvYnZpb3VzIG5vLWdvcywgbGlrZSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS5cblxuU28sIGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCByZWFjaGFibGU/IFllcywgaXQgaXMgY2FsbGVkIGR1cmluZyBuZXRucyBkZXN0cnVjdGlvbiB2aWEgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYF9faXBfdnNfY2xlYW51cF9iYXRjaGAuIEV4Y2VsbGVudCEgTmV0bnMgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSAqY29tbW9uKiBpbiBzeXprYWxsZXIgZnV6emluZywgc28gd2UgaGF2ZSBhIGdvb2QgcGF0aC5cblxuVGhlIGZhY3QgdGhhdCB0aGlzIHBhdGNoIGRlYWxzIHdpdGggdGltZXIgc2h1dGRvd24gdmVyc3VzIGRlbGV0aW9uIGlzIGludGVyZXN0aW5nLiBUaGlzIHN1YnRsZSBjaGFuZ2UgY291bGQgdHJpZ2dlciByYWNlIGNvbmRpdGlvbnMsIG9yIGludGVyYWN0IHdpdGggdGltZXIgcmVhcm1pbmcgb3IgdGhlIHRpbWVyIGxpZmVjeWNsZSwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZXhpc3RpbmcgZGVzdCB0cmFzaCBleHBpcmF0aW9uIChgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgKSBhbmQgbmV0bnMgY2xlYW51cCBpbnRlcmFjdGlvbi4gV2UgaGF2ZSB0byBzZWUgaWYgcmUtYXJtaW5nIGEgc2h1dC1kb3duIHRpbWVyIHdpbGwgdHJpcCBzb21lIHN1YnN5c3RlbSBjaGVja3Mgb3IgY2F1c2UgYSB3YXJuaW5nLiBMZXQncyBjaGVjayBpZiBgbW9kX3RpbWVyYCBvbiBzaHV0IGRvd24gdGltZXIgcHJvZHVjZXMgYSB3YXJuaW5nIG9yIGludGVyYWN0cyB3aXRoIGBpcF92c190cmFzaF9wdXRfZGVzdGAuXG5cbkxldCdzIGxvb2sgYXQgYGlwX3ZzX3RyYXNoX3B1dF9kZXN0YC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIGBtb2RfdGltZXJgIGNhbGwsIHdoaWNoIGhhcHBlbnMgb25seSBpZiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoYCBpcyBlbXB0eSBhbmQgYGNsZWFudXBgIGlzIGZhbHNlLiBJZiB0aGVyZSdzIGEgcmFjZSBiZXR3ZWVuIGNsZWFudXAgYW5kIHRoZSB0aW1lciByZWFybWluZyAob3IgbGFjayBvZiksIHRoaW5ncyBjb3VsZCBnZXQgaW50ZXJlc3RpbmcuXG5cblNvLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpcyBpbiBjb3JlIG5ldHdvcmtpbmcvbmV0ZmlsdGVyIGNvZGUgKGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgKSBhbmQgaXMgY29tcGxldGVseSByZWFjaGFibGUgaW4gb3VyIHRhcmdldCBlbnZpcm9ubWVudHMuXG5cbk5vdywgZm9yIGZvY3VzIHN5bWJvbHMuIFdlIGhhdmU6XG5cbiogICBgaXBfdnNfdHJhc2hfY2xlYW51cGAgKHRoZSBtYWluIHRhcmdldCBvZiB0aGUgcGF0Y2gpXG4qICAgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgICh3aGljaCBjYWxscyBpdCBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cClcbiogICBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgIChoYW5kbGVzIHB1dHRpbmcgZGVzdGluYXRpb25zIGluIHRoZSB0cmFzaCwgYW5kIHBvdGVudGlhbGx5IHJlLWFybXMgdGhlIHRpbWVyKVxuKiAgIGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWAgKHRoZSB0aW1lciBleHBpcmF0aW9uIGZ1bmN0aW9uKVxuKiAgIGBpcF92c19jb250cm9sX25ldF9pbml0YCAoaW5pdCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSlcblxuYGlwX3ZzX3RyYXNoX2NsZWFudXBgIGlzIHN0YXRpYywgYnV0IGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCBpcyBjYWxsZWQgZnJvbSBgaXBfdnNfY29yZS5jYC4gV2UgY2FuIGluY2x1ZGUgdGhlbSBhbGwgaW4gdGhlIGZvY3VzIHN5bWJvbCBsaXN0LlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYGlwX3ZzX2N0bC5jYCBmb3IgYW55IG90aGVyIGBkZXN0X3RyYXNoYCByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXZSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIHRoaW5rIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0OS4xMjY1MjA4OTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjI4OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3RfdHJhc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTA4PWlwX3ZzX3RyYXNoX2dldF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGludCBkZXN0X2FmLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExMTYtXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExMTc6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTE4OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGVzdCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE5LVxcdFxcdElQX1ZTX0RCR19CVUYoMywgXFxcIkRlc3RpbmF0aW9uICV1LyVzOiV1IHN0aWxsIGluIHRyYXNoLCBcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE0MS1vdXQ6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNDI6XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNDMtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE0OD1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9wdXRfZGVzdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUxLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1MjpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTMtXFx0SVBfVlNfREJHX0JVRigzLCBcXFwiTW92aW5nIGRlc3QgJXM6JXUgaW50byB0cmFzaCwgZGVzdC1cXHUwMDNlcmVmY250PSVkXFxcXG5cXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTUtXFx0XFx0ICAgICAgcmVmY291bnRfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlcmVmY250KSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNTY6XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gpIFxcdTAwMjZcXHUwMDI2ICFjbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTU3OlxcdFxcdG1vZF90aW1lcihcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE1OC1cXHRcXHRcXHQgIGppZmZpZXMgKyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXFx1MDAzZVxcdTAwM2UgMSkpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU5LVxcdC8qIGRlc3QgbGl2ZXMgaW4gdHJhc2ggd2l0aCByZWZlcmVuY2UgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MDpcXHRsaXN0X2FkZChcXHUwMDI2ZGVzdC1cXHUwMDNldF9saXN0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNjEtXFx0ZGVzdC1cXHUwMDNlaWRsZV9zdGFydCA9IGlzdGFydDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MjpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE2My19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTY6XFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTc6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk4LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZkZXN0LVxcdTAwM2V0X2xpc3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE2OTQ9aXBfdnNfZGVsX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzIyOnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIzLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHRpbWVyX2NvbnRhaW5lcl9vZihpcHZzLCB0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzI1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZGVzdF90cmFzaF90aW1lcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjYtXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpuZXh0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3Mjk6XFx0c3Bpbl9sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzMwOlxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBuZXh0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MzEtXFx0XFx0aWYgKHJlZmNvdW50X3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXJlZmNudCkgXFx1MDAzZSAxKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NDctXFx0fVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzQ4OlxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVxcdFxcdFxcdCAgamlmZmllcyArIChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcXHUwMDNlXFx1MDAzZSAxKSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NTE6XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NTItfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIxMTk9c3RhdGljIHZvaWQgaXBfdnNfdW5saW5rX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjEtXFx0aXBfdnNfdW5yZWdpc3Rlcl9jb25udHJhY2soc3ZjKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyMjpcXHQvKiBIb2xkIHN2YyB0byBhdm9pZCBkb3VibGUgcmVsZWFzZSBmcm9tIGRlc3RfdHJhc2ggKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyMy1cXHRhdG9taWNfaW5jKFxcdTAwMjZzdmMtXFx1MDAzZXJlZmNudCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyNDc6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ4OlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5OlxcdHRpbWVyX3NldHVwKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNTAtXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCsrKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNj1fX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTM1MC1cXHRcXHRcXHQgKiBkZXZpY2UgaXMgZ29pbmcgZG93biBvciBpZiBzZXJ2ZXIgaXMgcmVtb3ZlZCBhbmRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjM1MTpcXHRcXHRcXHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTM1Mi1cXHRcXHRcXHQgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDg5PV9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNTI5LVxcdFxcdFxcdCAqIGRldmljZSBpcyBnb2luZyBkb3duIG9yIGlmIHNlcnZlciBpcyByZW1vdmVkIGFuZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NTMwOlxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNTMxLVxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0OS4xOTc3NTQ5NTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjEyNDgyNjM2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBQYXRoKipcblxuT2theSwgbGV0J3MgbmFpbCB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMuICpJUF9WUyogaXMgZGVmaW5pdGVseSBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IGRlcGVuZGVuY2llcyBjaGVjayBjb25maXJtcyBpdCByZXF1aXJlcyBib3RoICpJTkVUKiBhbmQgKk5FVEZJTFRFUiouIFRodXMsIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gc2V0IEkgbmVlZCB0byBjb25zaWRlciBpcyBgW1wiSVBfVlNcIiwgXCJORVRGSUxURVJcIiwgXCJJTkVUXCJdYC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFmZmVjdGVkIGJ5IHRoZSBwYXRjaC4gSSBuZWVkIHRvIGZvY3VzIG9uIGBpcF92c190cmFzaF9jbGVhbnVwYCwgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgLCBgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgLCBhbmQgYGlwX3ZzX3RyYXNoX3B1dF9kZXN0YC4gVGhlc2UgYXJlIGNsZWFybHkga2V5LCBhbmQgd2FycmFudCBjYXJlZnVsIGV4YW1pbmF0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGVtLlxuXG5TbywgSSdtIGNvbmZpZGVudCBhYm91dCB0aGVzZSBmYWN0czpcbiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZSAoQWJzb2x1dGVseSwgd2UgbmVlZCB0byB0ZXN0IHRoaXMpXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiSVBfVlNcIiwgXCJORVRGSUxURVJcIiwgXCJJTkVUXCJdYCAoQmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcywgdGhlc2UgYXJlIHRoZSBtaW5pbXVtcylcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImlwX3ZzX3RyYXNoX2NsZWFudXBcIiwgXCJpcF92c19jb250cm9sX25ldF9jbGVhbnVwXCIsIFwiaXBfdnNfZGVzdF90cmFzaF9leHBpcmVcIiwgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXWAgKFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29kZSBhcmVhcyB0aGF0IGNoYW5nZWQpLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkLCBpdCBjZW50ZXJzIG9uIHRoZSBwYXRjaCdzIG1vZGlmaWNhdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIElQVlMuIFRoaXMgaXMgd2hlcmUgYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBiZWluZyByZXBsYWNlZCBieSBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAuIFRoaXMgaXMgYWJvdXQgdGltZXIgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IGRlYWN0aXZhdGlvbiBhbmQgc2h1dGRvd24gZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGluIHRoZSBJUFZTIG5ldGZpbHRlciBtb2R1bGUuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHZpcnR1YWwgZW52aXJvbm1lbnRzIGFuZCBuZXR3b3JrIG5hbWVzcGFjZSBsaWZlIGN5Y2xlcywgYW5kIElQVlMgb3BlcmF0aW9ucyBjYW4gY2VydGFpbmx5IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MTcsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjQ0NjAyMjQyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjY0MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c190cmFzaF9jbGVhbnVwXCIsXG4gICAgXCJpcF92c19jb250cm9sX25ldF9jbGVhbnVwXCIsXG4gICAgXCJpcF92c19kZXN0X3RyYXNoX2V4cGlyZVwiLFxuICAgIFwiaXBfdnNfdHJhc2hfcHV0X2Rlc3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVzdGluYXRpb24gdHJhc2ggdGltZXIgdGVhcmRvd24gbG9naWMgaW4gSVBWUyAobmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jKSBieSBzd2l0Y2hpbmcgZnJvbSB0aW1lcl9kZWxldGVfc3luYyB0byB0aW1lcl9zaHV0ZG93bl9zeW5jLiBUaGlzIHJlYWNoYWJsZSBjb2RlIHBhdGggZXhlY3V0ZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAgYW5kIGRlc3RpbmF0aW9uIHRyYXNoIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbmV0ZmlsdGVyIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MjA6MTAuNTg4NjczMTMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzMTUzNjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjU4OTE0MzYxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyMDMxMDYxODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxcblxcblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzY2FlNjFkMDQ3NDkzNWU2NWJiZDlmMWEyNzJkOGI3Yjk5ZmJmZmI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggNGMxYzczOTQ0NmI3Ni4uMGViNmNkYjVmZWMzNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5AQCAtMTE5Miw3ICsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiB7XG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDtcbiBcbi1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4rXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4gXHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjU4OTE0NDQ3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDUwMDMzMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRpbWVyIENoYW5nZSBpbiBJUFZTKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZTogc3dpdGNoaW5nIGB0aW1lcl9kZWxldGVfc3luY2AgdG8gYHRpbWVyX3NodXRkb3duX3N5bmNgIGZvciB0aGUgYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgd2l0aGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24gaW4gYGlwX3ZzX2N0bC5jYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGltZXIgbWFuYWdlbWVudCwgYW5kIHRoZSBkaWZmZXJlbmNlIGxpa2VseSBsaWVzIGluIGhvdyB0aGV5IGRlYWwgd2l0aCB0aGUgdGltZXIncyBjYWxsYmFjayBhbmQgc3luY2hyb25pemF0aW9uLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gTGV0J3MgcHVsbCB1cCB0aGF0IGZpbGUsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLCBhbmQgdXNlIG15IGVkaXRvcidzIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgbGFyZ2VyIHBpY3R1cmUgd2lsbCBoZWxwIG1lIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgYW5kIHdoYXQgcG90ZW50aWFsIGltcGFjdCBpdCBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSdzIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjE3LjYzOTE4MDQ4NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTM5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExODUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExODU6XFx0ICpcXG4xMTg2OlxcdCAqICBXaGVuIHRoZSBpcF92c19jb250cm9sX2NsZWFydXAgaXMgYWN0aXZhdGVkIGJ5IGlwdnMgbW9kdWxlIGV4aXQsXFxuMTE4NzpcXHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcXG4xMTg4OlxcdCAqICBhcmUgZXhwaXJlZCwgYW5kIHRoZSByZWZjbnQgb2YgZWFjaCBkZXN0aW5hdGlvbiBpbiB0aGUgdHJhc2ggbXVzdFxcbjExODk6XFx0ICogIGJlIDEsIHNvIHdlIHNpbXBseSByZWxlYXNlIHRoZW0gaGVyZS5cXG4xMTkwOlxcdCAqL1xcbjExOTE6XFx0c3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4xMTkyOlxcdHtcXG4xMTkzOlxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xcbjExOTQ6XFx0XFxuMTE5NTpcXHRcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG4xMTk2OlxcdFxcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xcbjExOTc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbjExOTg6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRlc3QtXFx1MDAzZXRfbGlzdCk7XFxuMTE5OTpcXHRcXHRcXHRpcF92c19kZXN0X2ZyZWUoZGVzdCk7XFxuMTIwMDpcXHRcXHR9XFxuMTIwMTpcXHR9XFxuMTIwMjpcXHRcXG4xMjAzOlxcdHN0YXRpYyB2b2lkIGlwX3ZzX3N0YXRzX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4xMjA0OlxcdHtcXG4xMjA1OlxcdFxcdHN0cnVjdCBpcF92c19zdGF0c19yY3UgKnJzID0gY29udGFpbmVyX29mKGhlYWQsXFxuMTIwNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXFxuMTIwNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHJjdV9oZWFkKTtcXG4xMjA4OlxcdFxcbjEyMDk6XFx0XFx0aXBfdnNfc3RhdHNfcmVsZWFzZShcXHUwMDI2cnMtXFx1MDAzZXMpO1xcbjEyMTA6XFx0XFx0a2ZyZWUocnMpO1xcbjEyMTE6XFx0fVxcbjEyMTI6XFx0XFxuMTIxMzpcXHRzdGF0aWMgdm9pZFxcbjEyMTQ6XFx0aXBfdnNfY29weV9zdGF0cyhzdHJ1Y3QgaXBfdnNfa3N0YXRzICpkc3QsIHN0cnVjdCBpcF92c19zdGF0cyAqc3JjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoyMDoxNy42Mzk0NzY4NTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk4MDcxMDM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGltZXIgU2h1dGRvd24gYW5kIEtNU0FOIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHRpbWVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYHRpbWVyX2RlbGV0ZV9zeW5jYCBvciBgZGVsX3RpbWVyX3N5bmNgLCBhbmQgZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gY29uc2lkZXIgS01TQU4gaW4gdGhpcyBzY2VuYXJpby5cblxuYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIGNsZWFybHkgYSBsaWZldGltZSBtYW5hZ2VtZW50IHRvb2wuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSB0ZWFyZG93biBvciBjbGVhbnVwIHByb2Nlc3MgYnkgZW5zdXJpbmcgdGhlIHRpbWVyIGlzbid0IHJlLWFybWVkIHVuZXhwZWN0ZWRseS4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgcHJvdGVjdGluZyB0aGUgdGltZXIgaGFuZGxlciBmcm9tIGFjY2Vzc2luZyBmcmVlZCByZXNvdXJjZXMuIEZyb20gYSBzZWN1cml0eSBzdGFuZHBvaW50LCB0aGlzIGFwcGVhcnMgdG8gYmUgcHVyZWx5IGFib3V0IHRlYXJkb3duIGFuZCBwcmV2ZW50aW5nIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhhdCBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBkaWZmZXJlbnQgc2FuaXRpemVycy4gRm9yIHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiwgd2UncmUgbG9va2luZyBmb3IgaXNzdWVzIHJlbGF0ZWQgdG8gcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgd2l0aCB0aGUgdGltZXIsIG9yIGluc3RhbmNlcyB3aGVyZSBhIHRpbWVyIGlzIHVzZWQgYWZ0ZXIgY2xlYW51cCBoYXMgb2NjdXJyZWQuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuXG5cbkdpdmVuIHdoYXQgSSBzZWUgaW4gdGhlIGNvZGUgY2hhbmdlcywgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBubyBwb3RlbnRpYWwgZm9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgYW5kIG5vIGJ1ZmZlciBib3VuZHMgbWFuaXB1bGF0aW9ucy4gVGhpcyBpcyBjcnVjaWFsOiB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aW1lciBsaWZldGltZSBtYW5hZ2VtZW50IGR1cmluZyBzaHV0ZG93bi5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCYXNlZCBvbiBteSBhbmFseXNpcywgdGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgbm8uIFRoZSBjb2RlIGFwcGVhcnMgdG8gaGFuZGxlIHRoZSB0ZWFyZG93biBpbiBhIHdheSB0aGF0IG1pbmltaXplcyB0aGVzZSByaXNrcy4gVGhpcyBtYWtlcyB0aGUgYE5lZWRzS01TQU5gIGZsYWcgaXJyZWxldmFudCBoZXJlLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblRoZSBydWxlIGlzIGNsZWFyOiBLTVNBTiBpcyBjb3N0bHkgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgdGhlcmUgaXMgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gV2Ugc2hvdWxkIG9ubHkgZW5hYmxlIEtNU0FOIGlmIHRoZSBjb2RlIGNoYW5nZSBpbnRyb2R1Y2VzIHJpc2tzIHRoYXQgYXJlICpvbmx5KiBkZXRlY3RlZCBieSBLTVNBTi4gU2luY2UgS0FTQU4gYW5kIHN0YW5kYXJkIGRldGVjdG9ycyBjYXRjaCB0aGUgbGlrZWx5IGlzc3VlcywgS01TQU4gaXMgbm90IG5lZWRlZC4gVGhlIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIG9yIHplcm9lZCBiZWZvcmUgYmVpbmcgcmVhZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGhlcmUuIFRoaXMgYWxpZ25zIHdpdGggdGhlIGNyaXRlcmlhIGZvciBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNCwiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoyMDoyMi42MjAxODk4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 16:35:49 +0000 UTC FinishedAt: 2026-09-05 17:20:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2b4707a149a55e8fa75c9ef32b359d60f470a566", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NETFILTER", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2b4707a149a55e8fa75c9ef32b359d60f470a566", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NETFILTER", "INET" ], "series_id": "b5fcbb51-56e5-40d6-8262-e39ede0f43a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ip_vs_trash_cleanup", "ip_vs_control_net_cleanup", "ip_vs_dest_trash_expire", "ip_vs_trash_put_dest" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUiYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXBfdnNfdHJhc2hfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtpcF92c19jb250cm9sX25ldF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlJiMzNDssCiAgICAmIzM0O2lwX3ZzX3RyYXNoX3B1dF9kZXN0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxuXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2NhZTYxZDA0NzQ5MzVlNjViYmQ5ZjFhMjcyZDhiN2I5OWZiZmZiNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgU2VwIDUgMTc6MTk6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMTkyLDcgJiM0MzsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiB7XG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDtcbiBcbi1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4mIzQzO1x0dGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xuIFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xuIFx0XHRsaXN0X2RlbChcdTAwMjZkZXN0LVx1MDAzZXRfbGlzdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfZGVzdF90cmFzaF9leHBpcmUmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzY2FlNjFkMDQ3NDkzNWU2NWJiZDlmMWEyNzJkOGI3Yjk5ZmJmZmI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwppbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCkBAIC0xMTkyLDcgJiM0MzsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykKIHsKIAlzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDsKIAotCXRpbWVyX2RlbGV0ZV9zeW5jKCZhbXA7aXB2cy0mZ3Q7ZGVzdF90cmFzaF90aW1lcik7CiYjNDM7CXRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKTsKIAkvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCAmYW1wO2lwdnMtJmd0O2Rlc3RfdHJhc2gsIHRfbGlzdCkgewogCQlsaXN0X2RlbCgmYW1wO2Rlc3QtJmd0O3RfbGlzdCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUFZTIENsZWFudXAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpZmYuIEl0IGxvb2tzIGxpa2UgYSBjaGFuZ2Ugd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLiBUaGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIGlzIGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24uIEFoLCBJIHNlZSwgaXQmIzM5O3MgYSByZXBsYWNlbWVudCBvZiBgdGltZXJfZGVsZXRlX3N5bmNgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmNgIG9uIGBpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyYC4gSW50ZXJlc3RpbmcuIEkga25vdyBib3RoIG9mIHRob3NlIHRpbWVyIGZ1bmN0aW9ucywgYW5kIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGltZXIgbWFuYWdlbWVudCBhbmQgc3luY2hyb25pemF0aW9uIGluIHRoZSBJUFZTIGNvbnRleHQuIFRoZSBmYWN0IHRoYXQgYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIHVzZWQgc3VnZ2VzdHMgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCB0byBlbnN1cmluZyB0aGUgdGltZXImIzM5O3MgZ3JhY2VmdWwgdGVybWluYXRpb24sIHBlcmhhcHMgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIHJlc291cmNlIGxlYWtzLgoKTm93LCBJIG5lZWQgdG8gZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBoYXZlIHRvIHNlZSB0aGlzIGNoYW5nZSBpbiBpdHMgY29udGV4dC4gV2hhdCYjMzk7cyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBmdW5jdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGA/IEl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhICYjMzQ7dHJhc2gmIzM0OyBvciBjbGVhbnVwIHByb2Nlc3MsIHByZXN1bWFibHkgZm9yIElQVlMgZGVzdGluYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgdGhlIHRpbWVyLCBhbmQgd2h5IHRoaXMgcGFydGljdWxhciBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeS4KCkxldCYjMzk7cyBxdWlja2x5IGdldCB0aGUgc291cmNlIGNvZGUuIEkgd2lsbCB1c2UgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdyYWIgdGhlIHJlbGV2YW50IGNvZGUgYW5kIGdldCB0aGUgZnVsbCBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGFuZCBhbHNvIHRoZSB1c2VzIG9mIHRoZSBgZGVzdF90cmFzaF90aW1lcmAuIFRoYXQgc2hvdWxkIGFsbG93IG1lIHRvIGZvcm11bGF0ZSBhIHByb3BlciBhc3Nlc3NtZW50IG9mIHRoaXMgY2hhbmdlLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBhIGJ1ZyBmaXgsIG9yIHNpbXBseSBhIGNvZGUgbW9kZXJuaXphdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE4MDpcdH1cbjExODE6XHRcbjExODI6XHQvKlxuMTE4MzpcdCAqICBDbGVhbiB1cCBhbGwgdGhlIGRlc3RpbmF0aW9ucyBpbiB0aGUgdHJhc2hcbjExODQ6XHQgKiAgQ2FsbGVkIGJ5IHRoZSBpcF92c19jb250cm9sX2NsZWFudXAoKVxuMTE4NTpcdCAqXG4xMTg2Olx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcbjExODc6XHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcbjExODg6XHQgKiAgYXJlIGV4cGlyZWQsIGFuZCB0aGUgcmVmY250IG9mIGVhY2ggZGVzdGluYXRpb24gaW4gdGhlIHRyYXNoIG11c3RcbjExODk6XHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxuMTE5MDpcdCAqL1xuMTE5MTpcdHN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4xMTkyOlx0e1xuMTE5MzpcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XG4xMTk0Olx0XG4xMTk1Olx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4xMTk2Olx0XHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbjExOTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4xMTk4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbjExOTk6XHRcdFx0aXBfdnNfZGVzdF9mcmVlKGRlc3QpO1xuMTIwMDpcdFx0fVxuMTIwMTpcdH1cbjEyMDI6XHRcbjEyMDM6XHRzdGF0aWMgdm9pZCBpcF92c19zdGF0c19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4xMjA0Olx0e1xuMTIwNTpcdFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcbjEyMDY6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXG4xMjA3Olx0XHRcdFx0XHRcdFx0ICByY3VfaGVhZCk7XG4xMjA4Olx0XG4xMjA5Olx0XHRpcF92c19zdGF0c19yZWxlYXNlKFx1MDAyNnJzLVx1MDAzZXMpO1xuMTIxMDpcdFx0a2ZyZWUocnMpO1xuMTIxMTpcdH1cbjEyMTI6XHRcbjEyMTM6XHRzdGF0aWMgdm9pZFxuMTIxNDpcdGlwX3ZzX2NvcHlfc3RhdHMoc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnNyYylcbjEyMTU6XHR7XG4xMjE2Olx0I2RlZmluZSBJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoYykgZHN0LVx1MDAzZWMgPSBzcmMtXHUwMDNla3N0YXRzLmMgLSBzcmMtXHUwMDNla3N0YXRzMC5jXG4xMjE3Olx0XG4xMjE4Olx0XHRzcGluX2xvY2soXHUwMDI2c3JjLVx1MDAzZWxvY2spO1xuMTIxOTpcdFxuMTIyMDpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGNvbm5zKTtcbjEyMjE6XHRcdElQX1ZTX1NIT1dfU1RBVFNfQ09VTlRFUihpbnBrdHMpO1xuMTIyMjpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKG91dHBrdHMpO1xuMTIyMzpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGluYnl0ZXMpO1xuMTIyNDpcdFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKG91dGJ5dGVzKTtcbjEyMjU6XHRcbjEyMjY6XHRcdGlwX3ZzX3JlYWRfZXN0aW1hdG9yKGRzdCwgc3JjKTtcbjEyMjc6XHRcbjEyMjg6XHRcdHNwaW5fdW5sb2NrKFx1MDAyNnNyYy1cdTAwM2Vsb2NrKTtcbjEyMjk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHRyYWNlIGl0cyB1c2FnZS4gSSYjMzk7bSBnb2luZyB0byBmaXJlIHVwIGBncmVwcGVyYC4gSXQmIzM5O3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBxdWlja2x5IGZpbmQgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdnNfdHJhc2hfY2xlYW51cCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE3ND1zdGF0aWMgdm9pZCBpcF92c19kZXN0X2ZyZWUoc3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTAtICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5MTpzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTIte1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MzE1PXZvaWQgX19uZXRfZXhpdCBpcF92c19jb250cm9sX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTc6XHRpcF92c190cmFzaF9jbGVhbnVwKGlwdnMpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTgtXHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwX3N5c2N0bChpcHZzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzgwCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgQ2FsbCBQYXRoOiBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlcmUmIzM5O3MgYSByZWFzb24gdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAsIGlzIG9uIG15IG1pbmQuIEl0JiMzOTtzIHRpbWUgdG8gZm9sbG93IHRoZSB0cmFpbC4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gbWV0aG9kaWNhbGx5IHRyYWNlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaXRzIGludm9jYXRpb25zIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCwgZXNwZWNpYWxseSBpbiB0aGUgd2lkZXIgbmV0d29yayBjb250cm9sIHBsYW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzOyB3aGljaCBjb21wb25lbnRzIGFyZSByZWxpYW50IG9uIHRoZSBjbGVhbnVwIGl0IHByb3ZpZGVzPyBUaGlzIHdpbGwgcXVpY2tseSBwYWludCBhIHBpY3R1cmUgb2YgaXRzIHJvbGUgYW5kIGhlbHAgbWUgemVybyBpbiBvbiB3aGF0ZXZlciYjMzk7cyBkcml2aW5nIHRoaXMgaW52ZXN0aWdhdGlvbi4gU28sIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgY2FsbCBncmFwaCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF92c19jb250cm9sX25ldF9jbGVhbnVwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwX3ZzLmg9MTc5Nz12b2lkIGlwX3ZzX3Byb3RvY29sX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTc5ODp2b2lkIGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpO1xuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNzk5LXZvaWQgaXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI0ODA9c3RhdGljIGludCBfX25ldF9pbml0IF9faXBfdnNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTI1LXByb3RvY29sX2ZhaWw6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jOjI1MjY6XHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTI3LWNvbnRyb2xfZmFpbDpcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1MzQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBfX2lwX3ZzX2NsZWFudXBfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTQ0LVx0XHRpcF92c19wcm90b2NvbF9uZXRfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjU0NTpcdFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjU0Ni1cdFx0aXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKGlwdnMpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MDQ2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTE5MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MTkyOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTE5My17XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMTg9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IHJldHVybiAwOyB9XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTIxOTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IH1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MjIwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MjMwPWludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTMxNTp2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE2LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE3LVx0aXBfdnNfdHJhc2hfY2xlYW51cChpcHZzKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MzE4Olx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTMxOS1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZpcHZzLVx1MDAzZWVzdF9yZWxvYWRfd29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIG9mIElQVlMgQ2xlYW51cCBpbiBOZXR3b3JrIE5hbWVzcGFjZSBUZWFyLWRvd24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBJUFZTIGNvZGUgaGFuZGxlcyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIGR1cmluZyB0aGUgdGVhcmRvd24gcHJvY2Vzcy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYF9faXBfdnNfY2xlYW51cF9iYXRjaGAgZnVuY3Rpb24sIHdoaWNoLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGlzIHJlZ2lzdGVyZWQgYXMgYSBwZXJuZXQgZXhpdCBmdW5jdGlvbiDigJMgc29tZXRoaW5nIGxpa2UgYG9wcy5leGl0X2JhdGNoID0gX19pcF92c19jbGVhbnVwX2JhdGNoYC4KCk15IHRyYWluIG9mIHRob3VnaHQgcmlnaHQgbm93IGlzIGNlbnRlcmVkIG9uIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHN5emthbGxlci4gU2luY2Ugc3l6a2FsbGVyIGlzIGNvbnN0YW50bHkgc3Bpbm5pbmcgdXAgYW5kIHRlYXJpbmcgZG93biBuZXR3b3JrIG5hbWVzcGFjZXMg4oCTIHVzaW5nIGB1bnNoYXJlKENMT05FX05FV05FVClgLCBgY2xvbmVgLCBhbmQgc29ja2V0IGNhbGxzIOKAkyBpdCYjMzk7cyBhIHBlcmZlY3QgZW52aXJvbm1lbnQgdG8gc3RyZXNzLXRlc3QgdGhpcyBhcmVhLiBXaGVuIGEgbmV0bnMgZXhpdHMsIHRoZSBgb3BzLSZndDtleGl0YCBvciwgaW4gdGhpcyBjYXNlLCBgb3BzLSZndDtleGl0X2JhdGNoYCBmdW5jdGlvbnMgZ2V0IGludm9rZWQuIFRoYXQmIzM5O3Mgd2hlcmUgSSBiZWxpZXZlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgIGNvbWVzIGludG8gcGxheS4KClNwZWNpZmljYWxseSwgaW5zaWRlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLCBpdCYjMzk7cyBjYWxsaW5nIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpYCwgd2hpY2ggdGhlbiBjYWxscyBgaXBfdnNfdHJhc2hfY2xlYW51cChpcHZzKWAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMgSSBuZWVkIHRvIGFuYWx5emUuCgpJJiMzOTttIGFsc28gY3VyaW91cyBhYm91dCB0aGUgYGRlc3RfdHJhc2hfdGltZXJgLiBJcyB0aGlzIHRpbWVyIHByb3Blcmx5IGluaXRpYWxpemVkIGFuZCB1c2VkPyBJIG5lZWQgdG8gdHJhY2sgZG93biBhbnkgaW5zdGFuY2VzIG9mIGBkZXN0X3RyYXNoX3RpbWVyYCB3aXRoaW4gdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIGNsZWFudXAgcHJvY2Vzcy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBzZWFyY2ggZm9yIHRoYXQgdmFyaWFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rlc3RfdHJhc2hfdGltZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXBfdnMuaD0xMTU2PXN0cnVjdCBuZXRuc19pcHZzIHtcbi0tXG5pbmNsdWRlL25ldC9pcF92cy5oLTEyMDItXHRzcGlubG9ja190XHRcdGRlc3RfdHJhc2hfbG9jaztcbmluY2x1ZGUvbmV0L2lwX3ZzLmg6MTIwMzpcdHN0cnVjdCB0aW1lcl9saXN0XHRkZXN0X3RyYXNoX3RpbWVyOyAvKiBleHBpcmF0aW9uIHRpbWVyICovXG5pbmNsdWRlL25ldC9pcF92cy5oLTEyMDQtXHRzdHJ1Y3QgbXV0ZXhcdFx0c2VydmljZV9tdXRleDsgICAgLyogc2VydmljZSByZWNvbmZpZyAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTQ4PXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX3B1dF9kZXN0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU2LVx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoKSBcdTAwMjZcdTAwMjYgIWNsZWFudXApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1NzpcdFx0bW9kX3RpbWVyKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU4LVx0XHRcdCAgamlmZmllcyAmIzQzOyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXHUwMDNlXHUwMDNlIDEpKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5Ni1cdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzIyPXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzI0LVx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSB0aW1lcl9jb250YWluZXJfb2YoaXB2cywgdCxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzI1Olx0XHRcdFx0XHRcdCAgICAgZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNi1cdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbmV4dDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc0OC1cdGlmICghbGlzdF9lbXB0eShcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XHRcdG1vZF90aW1lcihcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc1MC1cdFx0XHQgIGppZmZpZXMgJiM0MzsgKElQX1ZTX0RFU1RfVFJBU0hfUEVSSU9EIFx1MDAzZVx1MDAzZSAxKSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMzA9aW50IF9fbmV0X2luaXQgaXBfdnNfY29udHJvbF9uZXRfaW5pdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI0OC1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5Olx0dGltZXJfc2V0dXAoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCYjNDM7JiM0MzspIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM1NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQVlMgVGltZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNoYW5nZTogYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBub3cgYHRpbWVyX3NodXRkb3duX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKWAuIFJpZ2h0IGF3YXksIHRoZSBhbGFybSBiZWxscyBhcmUgZ29pbmcgb2ZmIGluIG15IGhlYWQuIFdoeSB0aGlzIGNoYW5nZT8gVGhlIGNvbW1lbnQgc2F5cyBgdGltZXJfc2h1dGRvd25fc3luY2AgcHJldmVudHMgcmVhcm1pbmcgdGhlIHRpbWVyLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBoZXJlLiBJcyB0aGVyZSBhIHNjZW5hcmlvIHdoZXJlIHRoaXMgdGltZXIgKm5lZWRzKiB0byBiZSByZWFybWVkPyBBbmQgaWYgc28sIGhvdyBkb2VzIHNodXR0aW5nIGl0IGRvd24gYWZmZWN0IHRoZSBvdmVyYWxsIHN5c3RlbSBmdW5jdGlvbmFsaXR5PwoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBJcyB0aGlzIGEgY29kZSBwYXRoIHRoYXQmIzM5O3MgZWFzaWx5IHJlYWNoYWJsZT8gQ2FuIEkgdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBqdXN0IGEgcmVndWxhciBzeXN0ZW0/IFllcywgSVBWUyBpcyBhIGNvcmUgbmV0ZmlsdGVyIHN1YnN5c3RlbS4gSSBjYW4gYWNjZXNzIGl0IHZpYSBzb2Nrb3B0cywgbmV0bGluayDigJMgdGhpbmdzIGxpa2UgYGlwdnNhZG1gLCBnZW5lcmljIG5ldGxpbmssIGV2ZW4gaXB0YWJsZXMgaW50ZXJhY3Rpb24uIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgc3RhbmRhcmQgb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBnb29kOyBpdCBtZWFucyB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBsaWtlbHkgdGVzdCBhbmQgcmVwcm9kdWNlIHdpdGhvdXQgdG9vIG11Y2ggaGFzc2xlLgoKTmV4dCBzdGVwOiBJIG5lZWQgdG8gdmVyaWZ5IGFueSBgS2NvbmZpZ2AgcmVxdWlyZW1lbnRzLiBJJiMzOTttIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGJlaGF2aW9yLCBvciB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDM5OSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTYtXHR0cmlzdGF0ZSBcJiMzNDtJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyNzppZiBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyOTpjb25maWdcdElQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDtJUHY2IHN1cHBvcnQgZm9yIElQVlNcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMxOlx0ZGVwZW5kcyBvbiBJUFY2ID0geSB8fCBJUF9WUyA9IElQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyLVx0c2VsZWN0IE5GX0RFRlJBR19JUFY2XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozODpjb25maWdcdElQX1ZTX0RFQlVHXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNDQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcdElQX1ZTX1RBQl9CSVRTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00Ni1cdGludCBcJiMzNDtJUFZTIGNvbm5lY3Rpb24gdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTc3PWNvbW1lbnQgXCYjMzQ7SVBWUyB0cmFuc3BvcnQgcHJvdG9jb2wgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNzgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo3OTpjb25maWdcdElQX1ZTX1BST1RPX1RDUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODAtXHRib29sIFwmIzM0O1RDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo4NTpjb25maWdcdElQX1ZTX1BST1RPX1VEUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXHRib29sIFwmIzM0O1VEUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctOTAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcdElQX1ZTX1BST1RPX0FIX0VTUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTI6XHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTkzLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6OTQ6Y29uZmlnXHRJUF9WU19QUk9UT19FU1Bcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk1LVx0Ym9vbCBcJiMzNDtFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTAwOmNvbmZpZ1x0SVBfVlNfUFJPVE9fQUhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cdGJvb2wgXCYjMzQ7QUggbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwNy1cdGJvb2wgXCYjMzQ7U0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXCYjMzQ7SVBWUyBzY2hlZHVsZXJcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjExNTpjb25maWdcdElQX1ZTX1JSXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXHR0cmlzdGF0ZSBcJiMzNDtyb3VuZC1yb2JpbiBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTIzLSBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcdElQX1ZTX1dSUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcm91bmQtcm9iaW4gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEzNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEzNzpjb25maWdcdElQX1ZTX0xDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzgtXHR0cmlzdGF0ZSBcJiMzNDtsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNDc6Y29uZmlnXHRJUF9WU19XTENcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE1Ni1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNTgtXHRcdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIGZhaWxvdmVyIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNjYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNjc6Y29uZmlnICBJUF9WU19PVkZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cdHRyaXN0YXRlIFwmIzM0O3dlaWdodGVkIG92ZXJmbG93IHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNzctXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXHRJUF9WU19MQkxDXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNzktXHR0cmlzdGF0ZSBcJiMzNDtsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xOTEtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxOTI6Y29uZmlnICBJUF9WU19MQkxDUlxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7bG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMDktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXHRJUF9WU19ESFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7ZGVzdGluYXRpb24gaGFzaGluZyBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjE5LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjIwOmNvbmZpZ1x0SVBfVlNfU0hcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIyMS1cdHRyaXN0YXRlIFwmIzM0O3NvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMzA6Y29uZmlnXHRJUF9WU19NSFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVx0dHJpc3RhdGUgXCYjMzQ7bWFnbGV2IGhhc2hpbmcgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI0OC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcdElQX1ZTX1NFRFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjUwLVx0dHJpc3RhdGUgXCYjMzQ7c2hvcnRlc3QgZXhwZWN0ZWQgZGVsYXkgc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI2MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI2Mjpjb25maWdcdElQX1ZTX05RXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZSBcJiMzNDtuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjc1OmNvbmZpZ1x0SVBfVlNfVFdPU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVx0dHJpc3RhdGUgXCYjMzQ7d2VpZ2h0ZWQgcmFuZG9tIHR3b3MgY2hvaWNlIGxlYXN0LWNvbm5lY3Rpb24gc2NoZWR1bGluZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMxOT1jb21tZW50ICYjMzk7SVBWUyBhcHBsaWNhdGlvbiBoZWxwZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIwLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzIxOmNvbmZpZ1x0SVBfVlNfRlRQXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtGVFAgcHJvdG9jb2wgaGVscGVyXCYjMzQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjM6XHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1RDUCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9OQVQgXHUwMDI2XHUwMDI2IFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjQtXHRcdE5GX0NPTk5UUkFDS19GVFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyNTpcdHNlbGVjdCBJUF9WU19ORkNUXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjYtXHRoZWxwXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM2LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzM3OmNvbmZpZ1x0SVBfVlNfTkZDVFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzM4LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZ1wmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0NC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjM0NTpjb25maWdcdElQX1ZTX1BFX1NJUFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzQ2LVx0dHJpc3RhdGUgXCYjMzQ7U0lQIHBlcnNpc3RlbmNlIGVuZ2luZVwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0OC1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLX1NJUFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTM1Mj1jb25maWcgR0NPVl9QUk9GSUxFX0lQVlNcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNjAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNjE6ZW5kaWYgIyBJUF9WU1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT03PWlwX3ZzX3Byb3RvLW9ianMteSA6PVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjg6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19UQ1ApICYjNDM7PSBpcF92c19wcm90b190Y3Aub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjk6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19VRFApICYjNDM7PSBpcF92c19wcm90b191ZHAub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjEwOmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fQUhfRVNQKSAmIzQzOz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxMTppcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX1NDVFApICYjNDM7PSBpcF92c19wcm90b19zY3RwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xMz1pcF92cy1leHRyYV9vYmpzLXkgOj1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNDppcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICYjNDM7PSBpcF92c19uZmN0Lm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT0xNj1pcF92cy1vYmpzIDo9XHRpcF92c19jb25uLm8gaXBfdnNfY29yZS5vIGlwX3ZzX2N0bC5vIGlwX3ZzX3NjaGVkLm9cdCAgIFxcXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTIyLSMgSVBWUyBjb3JlXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0lQX1ZTKSAmIzQzOz0gaXBfdnMub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI0LVxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI1LSMgSVBWUyBzY2hlZHVsZXJzXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0lQX1ZTX1JSKSAmIzQzOz0gaXBfdnNfcnIub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19JUF9WU19XUlIpICYjNDM7PSBpcF92c193cnIub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19JUF9WU19MQykgJiM0Mzs9IGlwX3ZzX2xjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyOTpvYmotJChDT05GSUdfSVBfVlNfV0xDKSAmIzQzOz0gaXBfdnNfd2xjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSVBfVlNfRk8pICYjNDM7PSBpcF92c19mby5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0lQX1ZTX09WRikgJiM0Mzs9IGlwX3ZzX292Zi5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0lQX1ZTX0xCTEMpICYjNDM7PSBpcF92c19sYmxjLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSVBfVlNfTEJMQ1IpICYjNDM7PSBpcF92c19sYmxjci5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0lQX1ZTX0RIKSAmIzQzOz0gaXBfdnNfZGgub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUF9WU19TSCkgJiM0Mzs9IGlwX3ZzX3NoLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfSVBfVlNfTUgpICYjNDM7PSBpcF92c19taC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQX1ZTX1NFRCkgJiM0Mzs9IGlwX3ZzX3NlZC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0lQX1ZTX05RKSAmIzQzOz0gaXBfdnNfbnEub1xubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19JUF9WU19UV09TKSAmIzQzOz0gaXBfdnNfdHdvcy5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDEtIyBJUFZTIGFwcGxpY2F0aW9uIGhlbHBlcnNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfSVBfVlNfRlRQKSAmIzQzOz0gaXBfdnNfZnRwLm9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00My1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00NC0jIElQVlMgY29ubmVjdGlvbiB0ZW1wbGF0ZSByZXRyaWV2ZXJzXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0lQX1ZTX1BFX1NJUCkgJiM0Mzs9IGlwX3ZzX3BlX3NpcC5vXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDYtaWZkZWYgQ09ORklHX0dDT1ZfUFJPRklMRV9JUFZTXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTcyPWlwX3ZzX2FwcF9pbmNfbmV3KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfYXBwICphcHAsIF9fdTE2IHByb3RvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMDgtXHRsaXN0X2FkZChcdTAwMjZpbmMtXHUwMDNlYV9saXN0LCBcdTAwMjZhcHAtXHUwMDNlaW5jc19saXN0KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMDk6XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMgQXBwICVzOiV1IHJlZ2lzdGVyZWRcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTEwLVx0XHQgIHBwLVx1MDAzZW5hbWUsIGluYy1cdTAwM2VuYW1lLCBudG9ocyhpbmMtXHUwMDNlcG9ydCkpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz0xMjQ9aXBfdnNfYXBwX2luY19yZWxlYXNlKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfYXBwICppbmMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTEzMy1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMzQ6XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMgQXBwICVzOiV1IHVucmVnaXN0ZXJlZFxcblwmIzM0Oyxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMzUtXHRcdCAgcHAtXHUwMDNlbmFtZSwgaW5jLVx1MDAzZW5hbWUsIG50b2hzKGluYy1cdTAwM2Vwb3J0KSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTI4Nz1zdGF0aWMgaW5saW5lIHZvaWQgdnNfZml4X3NlcShjb25zdCBzdHJ1Y3QgaXBfdnNfc2VxICp2c2VxLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMjk4LVx0XHRcdHRoLVx1MDAzZXNlcSA9IGh0b25sKHNlcSAmIzQzOyB2c2VxLVx1MDAzZWRlbHRhKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoyOTk6XHRcdFx0SVBfVlNfREJHKDksIFwmIzM0OyVzKCk6IGFkZGVkIGRlbHRhICglZCkgdG8gc2VxXFxuXCYjMzQ7LFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMwMC1cdFx0XHRcdCAgX19mdW5jX18sIHZzZXEtXHUwMDNlZGVsdGEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMDItXHRcdFx0dGgtXHUwMDNlc2VxID0gaHRvbmwoc2VxICYjNDM7IHZzZXEtXHUwMDNlcHJldmlvdXNfZGVsdGEpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjMwMzpcdFx0XHRJUF9WU19EQkcoOSwgXCYjMzQ7JXMoKTogYWRkZWQgcHJldmlvdXNfZGVsdGEgKCVkKSB0byBzZXFcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzA0LVx0XHRcdFx0ICBfX2Z1bmNfXywgdnNlcS1cdTAwM2VwcmV2aW91c19kZWx0YSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTMxND12c19maXhfYWNrX3NlcShjb25zdCBzdHJ1Y3QgaXBfdnNfc2VxICp2c2VxLCBzdHJ1Y3QgdGNwaGRyICp0aClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzI3LVx0XHRcdHRoLVx1MDAzZWFja19zZXEgPSBodG9ubChhY2tfc2VxIC0gdnNlcS1cdTAwM2VkZWx0YSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzI4Olx0XHRcdElQX1ZTX0RCRyg5LCBcJiMzNDslcygpOiBzdWJ0cmFjdGVkIGRlbHRhIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMyOS1cdFx0XHRcdCAgXCYjMzQ7KCVkKSBmcm9tIGFja19zZXFcXG5cJiMzNDssIF9fZnVuY19fLCB2c2VxLVx1MDAzZWRlbHRhKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzMyLVx0XHRcdHRoLVx1MDAzZWFja19zZXEgPSBodG9ubChhY2tfc2VxIC0gdnNlcS1cdTAwM2VwcmV2aW91c19kZWx0YSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzMzOlx0XHRcdElQX1ZTX0RCRyg5LCBcJiMzNDslcygpOiBzdWJ0cmFjdGVkIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMzNC1cdFx0XHRcdCAgXCYjMzQ7cHJldmlvdXNfZGVsdGEgKCVkKSBmcm9tIGFja19zZXFcXG5cJiMzNDssXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTM1OT1zdGF0aWMgaW5saW5lIGludCBhcHBfdGNwX3BrdF9vdXQoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zNzktXHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozODA6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9PVVRfU0VRKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4MS1cdFx0dnNfZml4X3NlcShcdTAwMjZjcC1cdTAwM2VvdXRfc2VxLCB0aCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzgyOlx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfSU5fU0VRKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4My1cdFx0dnNfZml4X2Fja19zZXEoXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLCB0aCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM5OC1cdFx0dnNfc2VxX3VwZGF0ZShjcCwgXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozOTk6XHRcdFx0ICAgICAgSVBfVlNfQ09OTl9GX09VVF9TRVEsIHNlcSwgZGlmZik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDAwLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz00MzU9c3RhdGljIGlubGluZSBpbnQgYXBwX3RjcF9wa3RfaW4oc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NTUtXHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzo0NTY6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU3LVx0XHR2c19maXhfc2VxKFx1MDAyNmNwLVx1MDAzZWluX3NlcSwgdGgpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ1ODpcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU5LVx0XHR2c19maXhfYWNrX3NlcShcdTAwMjZjcC1cdTAwM2VvdXRfc2VxLCB0aCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ3NC1cdFx0dnNfc2VxX3VwZGF0ZShjcCwgXHUwMDI2Y3AtXHUwMDNlaW5fc2VxLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ3NTpcdFx0XHQgICAgICBJUF9WU19DT05OX0ZfSU5fU0VRLCBzZXEsIGRpZmYpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ3Ni1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozOTojaWZuZGVmIENPTkZJR19JUF9WU19UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo0MDojZGVmaW5lIENPTkZJR19JUF9WU19UQUJfQklUU1x0MTJcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDEtI2VuZGlmXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00NS0qL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo0NjpzdGF0aWMgaW50IGlwX3ZzX2Nvbm5fdGFiX2JpdHMgPSBDT05GSUdfSVBfVlNfVEFCX0JJVFM7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3LW1vZHVsZV9wYXJhbV9uYW1lZChjb25uX3RhYl9iaXRzLCBpcF92c19jb25uX3RhYl9iaXRzLCBpbnQsIDA0NDQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NTQ9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICppcF92c19jb25uX2NhY2hlcCBfX3JlYWRfbW9zdGx5O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTYtLyogV2UgbmVlZCBhbiBhZGRyc3RybGVuIHRoYXQgd29ya3Mgd2l0aCBvciB3aXRob3V0IHY2ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU3OiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1ODojZGVmaW5lIElQX1ZTX0FERFJTVFJMRU4gSU5FVDZfQUREUlNUUkxFTlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OS0jZWxzZVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2MDojZGVmaW5lIElQX1ZTX0FERFJTVFJMRU4gKDgmIzQzOzEpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYxLSNlbmRpZlxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTg0PXN0YXRpYyB1MzIgaXBfdnNfY29ubl9oYXNoa2V5KHN0cnVjdCBpcF92c19yaHQgKnQsIGludCBhZiwgdW5zaWduZWQgaW50IHByb3RvLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTkwLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxOTE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTE5Mi1cdGlmIChhZiA9PSBBRl9JTkVUNikge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MjYxPXN0YXRpYyBpbmxpbmUgaW50IGlwX3ZzX2Nvbm5faGFzaChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yNzAtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjI3MTpcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI3Mi1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTItXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjI5MzpcdGNwLVx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9IQVNIRUQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTI5NC1cdFdSSVRFX09OQ0UoY3AtXHUwMDNlaG4wLmhhc2hfa2V5LCBoYXNoX2tleSk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zMDYtXHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2aXB2cy1cdTAwM2Vjb25uX2NvdW50KSBcdTAwM2UgdC1cdTAwM2V1X3RocmVzaCBcdTAwMjZcdTAwMjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzA3Olx0ICAgICF0ZXN0X2FuZF9zZXRfYml0KElQX1ZTX1dPUktfQ09OTl9SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncykpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMwOC1cdFx0bW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fZGZsX2xvbmdfd3EsIFx1MDAyNmlwdnMtXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0zMTY9c3RhdGljIGlubGluZSBib29sIGlwX3ZzX2Nvbm5fdW5saW5rKHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMyNC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzI1Olx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfT05FX1BBQ0tFVClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzI2LVx0XHRyZXR1cm4gcmVmY291bnRfZGVjX2lmX29uZShcdTAwMjZjcC1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozMzk6XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9IQVNIRUQpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQwLVx0XHQvKiBEZWNyZWFzZSByZWZjbnQgYW5kIHVubGluayBjb25uIG9ubHkgaWYgd2UgYXJlIGxhc3QgdXNlciAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ1LVx0XHRcdFx0aGxpc3RfYmxfZGVsX3JjdShcdTAwMjZjcC1cdTAwM2VobjEubm9kZSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjM0NjpcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSEFTSEVEO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNDctXHRcdFx0cmV0ID0gdHJ1ZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTM2Nz1fX2lwX3ZzX2Nvbm5faW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNjgte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozNjk6XHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzcwLVx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSBwLVx1MDAzZWlwdnM7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zOTUtXHRcdFx0XHQgICAgKCFwLVx1MDAzZWNwb3J0IF5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mzk2Olx0XHRcdFx0ICAgICAoIShjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zOTctXHRcdFx0XHQgICAgcC1cdTAwM2Vwcm90b2NvbCA9PSBjcC1cdTAwM2Vwcm90b2NvbCkge1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NDEzPXN0cnVjdCBpcF92c19jb25uICppcF92c19jb25uX2luX2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQyOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMwOlx0SVBfVlNfREJHX0JVRig5LCBcJiMzNDtsb29rdXAvaW4gJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQzMS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00MzQtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz00NzU9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2N0X2luX2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDc2LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDc3Olx0REVDTEFSRV9JUF9WU19SSFRfV0FMS19CVUNLRVRfUkNVKCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3OC1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cdTAwM2VpcHZzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTE0LVx0XHRcdFx0ICAgIHAtXHUwMDNlY3BvcnQgPT0gY3AtXHUwMDNlY3BvcnQgXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjUxNTpcdFx0XHRcdCAgICBjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MTYtXHRcdFx0XHQgICAgcC1cdTAwM2Vwcm90b2NvbCA9PSBjcC1cdTAwM2Vwcm90b2NvbCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUyOS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMwOlx0SVBfVlNfREJHX0JVRig5LCBcJiMzNDt0ZW1wbGF0ZSBsb29rdXAvaW4gJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUzMS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjUzMzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MzQtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz01NDM9c3RydWN0IGlwX3ZzX2Nvbm4gKmlwX3ZzX2Nvbm5fb3V0X2dldChjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTQ0LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTQ1Olx0REVDTEFSRV9JUF9WU19SSFRfV0FMS19CVUNLRVRfUkNVKCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU0Ni1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cdTAwM2VpcHZzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTY5LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1NzA6XHRcdFx0XHRpZiAoSVBfVlNfRldEX01FVEhPRChjcCkgIT0gSVBfVlNfQ09OTl9GX01BU1EpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTcxLVx0XHRcdFx0XHRzcG9ydCA9IGNwLVx1MDAzZXZwb3J0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTkzLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTQ6XHRJUF9WU19EQkdfQlVGKDksIFwmIzM0O2xvb2t1cC9vdXQgJXMgJXM6JWQtXHUwMDNlJXM6JWQgJXNcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU5NS1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTk2Olx0XHQgICAgICBJUF9WU19EQkdfQUREUihwLVx1MDAzZWFmLCBwLVx1MDAzZWNhZGRyKSwgbnRvaHMocC1cdTAwM2VjcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU5NzpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cdTAwM2VhZiwgcC1cdTAwM2V2YWRkciksIG50b2hzKHAtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTgtXHRcdCAgICAgIGNwID8gXCYjMzQ7aGl0XCYjMzQ7IDogXCYjMzQ7bm90IGhpdFwmIzM0Oyk7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz02MjA9c3RhdGljIHZvaWQgX19pcF92c19jb25uX3B1dF90aW1lcihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYyMS17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjYyMjpcdHVuc2lnbmVkIGxvbmcgdCA9IChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpID9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjIzLVx0XHQwIDogY3AtXHUwMDNldGltZW91dDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTYyOT12b2lkIGlwX3ZzX2Nvbm5fcHV0KHN0cnVjdCBpcF92c19jb25uICpjcClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjMwLXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NjMxOlx0aWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02MzItXHQgICAgKHJlZmNvdW50X3JlYWQoXHUwMDI2Y3AtXHUwMDNlcmVmY250KSA9PSAxKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTY0Mz12b2lkIGlwX3ZzX2Nvbm5fZmlsbF9jcG9ydChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIF9fYmUxNiBjcG9ydClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4NC1cdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2Y3AtXHUwMDNlbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjY4NTpcdFx0XHRpZiAoY3AtXHUwMDNlZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCBcdTAwMjZcdTAwMjYgYnlfbWUpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4Ni1cdFx0XHRcdGNwLVx1MDAzZWNwb3J0ID0gMDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY4OC1cdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjcC1cdTAwM2Vsb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Njg5Olx0XHRcdElQX1ZTX0VSUl9STChcJiMzNDslcygpOiBUb28gbWFueSBodCBjaGFuZ2VzIGZvciBkaXIgJWRcXG5cJiMzNDssXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTY5MC1cdFx0XHRcdCAgICAgX19mdW5jX18sIGRpcik7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NTctXHQvKiBGaWxsIGNwb3J0IG9uY2UsIGV2ZW4gaWYgbXVsdGlwbGUgcGFja2V0cyB0cnkgdG8gZG8gaXQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzU4Olx0aWYgKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXHUwMDI2XHUwMDI2ICghY3AtXHUwMDNlY3BvcnQgfHwgYnlfbWUpKSB7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc1OS1cdFx0LyogSWYgd2UgcmFjZSB3aXRoIHJlc2l6aW5nIG1ha2Ugc3VyZSBjcG9ydCBpcyBzZXQgZm9yIGRpciAxICovXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NjUtXHRcdFx0YXRvbWljX2RlYyhcdTAwMjZpcHZzLVx1MDAzZW5vX2Nwb3J0X2Nvbm5zW2FmX2lkXSk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjc2NjpcdFx0XHRjcC1cdTAwM2VmbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfTk9fQ1BPUlQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc2Ny1cdFx0fVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fY2hhbmdlX2Z3ZF9tYXNrKHN0cnVjdCBpcF92c19jb25uICpjcCwgdTMyIG5ld19mbGFncylcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTgwNC1cdC8qIFNlZSBpcF92c19jb25uX3VzZV9oYXNoMigpIGZvciByZWZlcmVuY2UgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA1Olx0aWYgKChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSB8fFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDYtXHQgICAgLyogTm8gY2hhbmdlIGluIGRvdWJsZSBoYXNoaW5nID8gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA3Olx0ICAgIChJUF9WU19GV0RfTUVUSE9EKGNwKSA9PSBJUF9WU19DT05OX0ZfTUFTUSkgPT1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA4Olx0ICAgICgobmV3X2ZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfRldEX01BU0spID09IElQX1ZTX0NPTk5fRl9NQVNRKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDktXHRcdGNwLVx1MDAzZWZsYWdzID0gbmV3X2ZsYWdzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODY2PWludCBpcF92c19jb25uX2Rlc2lyZWRfc2l6ZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX3JodCAqdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg2OS1cdHJldHVybiBpcF92c19yaHRfZGVzaXJlZF9zaXplKGlwdnMsIHQsIGF0b21pY19yZWFkKFx1MDAyNmlwdnMtXHUwMDNlY29ubl9jb3VudCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjg3MDpcdFx0XHRcdCAgICAgIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04NzEtXHRcdFx0XHQgICAgICBpcF92c19jb25uX3RhYl9iaXRzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTg3NT1zdHJ1Y3QgaXBfdnNfcmh0ICppcF92c19jb25uX3RhYl9hbGxvYyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IGJ1Y2tldHMsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODItXHRzY291bnRzID0gY2xhbXAoYnVja2V0cyBcdTAwM2VcdTAwM2UgNiwgMSwgMjU2KTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODgzOlx0LyogbG9ja3M6IGJhc2VkIG9uIHBhcmFsbGVsIElQX1ZTX0NPTk5fRl9OT19DUE9SVCBvcGVyYXRpb25zICYjNDM7IHJlc2l6ZSAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODQtXHRsb2NrcyA9IGNsYW1wKDgsIDEsIHNjb3VudHMpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODg5LVx0dC1cdTAwM2VsZmFjdG9yID0gbGZhY3Rvcjtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODkwOlx0aXBfdnNfcmh0X3NldF90aHJlc2hvbGRzKHQsIHQtXHUwMDNlc2l6ZSwgbGZhY3RvciwgSVBfVlNfQ09OTl9UQUJfTUlOX0JJVFMsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg5MS1cdFx0XHRcdCBpcF92c19jb25uX3RhYl9iaXRzKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTg5Nj1zdGF0aWMgdm9pZCBjb25uX3Jlc2l6ZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTE0LVx0LyogQWxsb3cgd29yayB0byBiZSBxdWV1ZWQgYWdhaW4gKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE1Olx0Y2xlYXJfYml0KElQX1ZTX1dPUktfQ09OTl9SRVNJWkUsIFx1MDAyNmlwdnMtXHUwMDNld29ya19mbGFncyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxNi1cdHQgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGlwdnMtXHUwMDNlY29ubl90YWIsIDEpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTM1LVx0LyogRmxpcCB0aGUgdGFibGVfaWQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTM2Olx0dF9uZXctXHUwMDNldGFibGVfaWQgPSB0LVx1MDAzZXRhYmxlX2lkIF4gSVBfVlNfUkhUX1RBQkxFX0lEX01BU0s7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkzNy1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTEwMjM9c3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjQte1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI1Olx0c3dpdGNoIChJUF9WU19GV0RfTUVUSE9EKGNwKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI2Olx0Y2FzZSBJUF9WU19DT05OX0ZfTUFTUTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTAyNy1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19uYXRfeG1pdDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjktXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzA6XHRjYXNlIElQX1ZTX0NPTk5fRl9UVU5ORUw6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMzItXHRcdGlmIChjcC1cdTAwM2VkYWYgPT0gQUZfSU5FVDYpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDM4LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDM5Olx0Y2FzZSBJUF9WU19DT05OX0ZfRFJPVVRFOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQwLVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2RyX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQyLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDQzOlx0Y2FzZSBJUF9WU19DT05OX0ZfTE9DQUxOT0RFOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ0LVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX251bGxfeG1pdDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNDc6XHRjYXNlIElQX1ZTX0NPTk5fRl9CWVBBU1M6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDgtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfYnlwYXNzX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDUyLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDUzOiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU0LXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXRfdjYoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU1LXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NjpcdHN3aXRjaCAoSVBfVlNfRldEX01FVEhPRChjcCkpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NzpcdGNhc2UgSVBfVlNfQ09OTl9GX01BU1E6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNTgtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbmF0X3htaXRfdjY7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDYwLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDYxOlx0Y2FzZSBJUF9WU19DT05OX0ZfVFVOTkVMOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDYyLVx0XHRpZiAoY3AtXHUwMDNlZGFmID09IEFGX0lORVQ2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA2ODpcdGNhc2UgSVBfVlNfQ09OTl9GX0RST1VURTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2OS1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19kcl94bWl0X3Y2O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3MS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA3MjpcdGNhc2UgSVBfVlNfQ09OTl9GX0xPQ0FMTk9ERTpcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3My1cdFx0Y3AtXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19udWxsX3htaXQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDc1LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDc2Olx0Y2FzZSBJUF9WU19DT05OX0ZfQllQQVNTOlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDc3LVx0XHRjcC1cdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2J5cGFzc194bWl0X3Y2O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OT1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDItXHRpZiAoY3AtXHUwMDNlcHJvdG9jb2wgIT0gSVBQUk9UT19VRFApXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMDM6XHRcdGNvbm5fZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX09ORV9QQUNLRVQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDQtXHRmbGFncyA9IGNwLVx1MDAzZWZsYWdzO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA1LVx0LyogQmluZCB3aXRoIHRoZSBkZXN0aW5hdGlvbiBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgdHJhbnNtaXR0ZXIgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwNjpcdGlmIChmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1NZTkMpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEwNy1cdFx0LyogU3luY2VkIGNvbm5zIGFyZSBoYXNoZWQsIHNvIHRoZXkgY2FuIG5vdCBnZXQgdGhpcyBmbGFnICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMDg6XHRcdGNvbm5fZmxhZ3MgXHUwMDI2PSB+SVBfVlNfQ09OTl9GX09ORV9QQUNLRVQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDktXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTEyLVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTExMzpcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTQ6XHRcdFx0Y29ubl9mbGFncyBcdTAwMjY9IH5JUF9WU19DT05OX0ZfSU5BQ1RJVkU7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMTUtXHRcdC8qIGNvbm5lY3Rpb25zIGluaGVyaXQgZm9yd2FyZGluZyBtZXRob2QgZnJvbSBkZXN0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTY6XHRcdGZsYWdzIFx1MDAyNj0gfihJUF9WU19DT05OX0ZfRldEX01BU0sgfCBJUF9WU19DT05OX0ZfTk9PVVRQVVQpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTE3LVx0XHRmbGFncyB8PSBjb25uX2ZsYWdzO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMC1cdFx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMjE6XHRcdGlmIChjcC1cdTAwM2VmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX0hBU0hFRClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMi1cdFx0XHRpcF92c19jb25uX2NoYW5nZV9md2RfbWFzayhjcCwgZmxhZ3MpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzMC1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzMTpcdElQX1ZTX0RCR19CVUYoNywgXCYjMzQ7QmluZC1kZXN0ICVzIGM6JXM6JWQgdjolczolZCBcJiMzNDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzMi1cdFx0ICAgICAgXCYjMzQ7ZDolczolZCBmd2Q6JWMgczoldSBjb25uLVx1MDAzZWZsYWdzOiVYIGNvbm4tXHUwMDNlcmVmY250OiVkIFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzNC1cdFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShjcC1cdTAwM2Vwcm90b2NvbCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMzU6XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVx1MDAzZWFmLCBcdTAwMjZjcC1cdTAwM2VjYWRkciksIG50b2hzKGNwLVx1MDAzZWNwb3J0KSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzNjpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIoY3AtXHUwMDNlYWYsIFx1MDAyNmNwLVx1MDAzZXZhZGRyKSwgbnRvaHMoY3AtXHUwMDNldnBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM3Olx0XHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cdTAwM2VkYWYsIFx1MDAyNmNwLVx1MDAzZWRhZGRyKSwgbnRvaHMoY3AtXHUwMDNlZHBvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTM4LVx0XHQgICAgICBpcF92c19md2RfdGFnKGNwKSwgY3AtXHUwMDNlc3RhdGUsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQyLVx0LyogVXBkYXRlIHRoZSBjb25uZWN0aW9uIGNvdW50ZXJzICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExNDM6XHRpZiAoIShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ0LVx0XHRpbnQgdGM7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ5LVx0XHQgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE1MDpcdFx0aWYgKCEoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExNTEtXHRcdFx0YXRvbWljX2luYyhcdTAwMjZkZXN0LVx1MDAzZWFjdGl2ZWNvbm5zKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTExNjc9dm9pZCBpcF92c190cnlfYmluZF9kZXN0KHN0cnVjdCBpcF92c19jb25uICpjcClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMDAtXHRcdGNwLVx1MDAzZXBhY2tldF94bWl0ID0gTlVMTDtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIwMTojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIwMi1cdFx0aWYgKGNwLVx1MDAzZWFmID09IEFGX0lORVQ2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTIyMD1zdGF0aWMgaW5saW5lIHZvaWQgaXBfdnNfdW5iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIyNi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIyNzpcdElQX1ZTX0RCR19CVUYoNywgXCYjMzQ7VW5iaW5kLWRlc3QgJXMgYzolczolZCB2OiVzOiVkIFwmIzM0O1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjI4LVx0XHQgICAgICBcJiMzNDtkOiVzOiVkIGZ3ZDolYyBzOiV1IGNvbm4tXHUwMDNlZmxhZ3M6JVggY29ubi1cdTAwM2VyZWZjbnQ6JWQgXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjMwLVx0XHQgICAgICBpcF92c19wcm90b19uYW1lKGNwLVx1MDAzZXByb3RvY29sKSxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMTpcdFx0ICAgICAgSVBfVlNfREJHX0FERFIoY3AtXHUwMDNlYWYsIFx1MDAyNmNwLVx1MDAzZWNhZGRyKSwgbnRvaHMoY3AtXHUwMDNlY3BvcnQpLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjMyOlx0XHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cdTAwM2VhZiwgXHUwMDI2Y3AtXHUwMDNldmFkZHIpLCBudG9ocyhjcC1cdTAwM2V2cG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMzM6XHRcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVx1MDAzZWRhZiwgXHUwMDI2Y3AtXHUwMDNlZGFkZHIpLCBudG9ocyhjcC1cdTAwM2VkcG9ydCksXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzQtXHRcdCAgICAgIGlwX3ZzX2Z3ZF90YWcoY3ApLCBjcC1cdTAwM2VzdGF0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzgtXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzOTpcdGlmICghKGNwLVx1MDAzZWZsYWdzIFx1MDAyNiBJUF9WU19DT05OX0ZfVEVNUExBVEUpKSB7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MTYKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9yIGNvbnRleHQgc3Vycm91bmRpbmcgdGhlIGBJUF9WU2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjb25zdWx0IHRoZSBzb3VyY2UuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGxvb2sgaW50byBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzdWFsbHkgbGl2ZSwgYW5kIGl0JiMzOTtzIHRoZSByaWdodCBwbGFjZSB0byBmaW5kIGFueSBkZXBlbmRlbmNpZXMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gQnkgZXhhbWluaW5nIHRoYXQgS2NvbmZpZyBmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciBgSVBfVlNgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB3aGVuIGRpZ2dpbmcgaW50byBrZXJuZWwgY29uZmlncy4gSXQmIzM5O3MgYWJvdXQgYnVpbGRpbmcgYSBtZW50YWwgbWFwIG9mIHRoZSBmZWF0dXJlJiMzOTtzIHJlcXVpcmVtZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjU6bWVudWNvbmZpZyBJUF9WU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0yODY9Y29tbWVudCAmIzM5O0lQVlMgU0ggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI4ODpjb25maWcgSVBfVlNfU0hfVEFCX0JJVFNcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cdGludCBcJiMzNDtJUFZTIHNvdXJjZSBoYXNoaW5nIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zMDE9Y29tbWVudCAmIzM5O0lQVlMgTUggc2NoZWR1bGVyJiMzOTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMwMzpjb25maWcgSVBfVlNfTUhfVEFCX0lOREVYXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXHRpbnQgXCYjMzQ7SVBWUyBtYWdsZXYgaGFzaGluZyB0YWJsZSBpbmRleCBvZiBzaXplICh0aGUgcHJpbWUgbnVtYmVycylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwMDkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJUFZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IElQVlMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBmb2N1cyBvbiBsaW5lcyAxIHRocm91Z2ggMjYuIFRoaXMgc2VjdGlvbiBsaWtlbHkgZGVmaW5lcyB0aGUgY29yZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBJUFZTIGl0c2VsZiwgYmVmb3JlIGdldHRpbmcgaW50byBtb3JlIHNwZWNpZmljIGZlYXR1cmVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBmb3VuZGF0aW9uYWwgYnVpbGRpbmcgYmxvY2tzIC0gdGhpbmdzIGxpa2Ugd2hldGhlciBpdCYjMzk7cyBtb2R1bGFyLCBpZiBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgYENPTkZJR19JUF9WU2Agb3B0aW9uLCBhbmQgaG9wZWZ1bGx5LCBzb21lIGNvbW1lbnRhcnkgdGhhdCBjbGFyaWZpZXMgdGhlIGludGVudGlvbiBvZiB0aGUgc2V0dGluZ3MuIFRoaXMgaW5pdGlhbCBibG9jayBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZnJhbWV3b3JrIHRvIHVuZGVyc3RhbmQgdGhlIHN1YnNlcXVlbnQsIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBWaXJ0dWFsIFNlcnZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdG1lbnVjb25maWcgSVBfVlNcbiAgIDY6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHZpcnR1YWwgc2VydmVyIHN1cHBvcnRcJiMzNDtcbiAgIDc6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG4gICA4Olx0XHRkZXBlbmRzIG9uIChORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLPW4pXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElQIFZpcnR1YWwgU2VydmVyIHN1cHBvcnQgd2lsbCBsZXQgeW91IGJ1aWxkIGEgaGlnaC1wZXJmb3JtYW5jZVxuICAxMTpcdFx0ICB2aXJ0dWFsIHNlcnZlciBiYXNlZCBvbiBjbHVzdGVyIG9mIHR3byBvciBtb3JlIHJlYWwgc2VydmVycy4gVGhpc1xuICAxMjpcdFx0ICBvcHRpb24gbXVzdCBiZSBlbmFibGVkIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNsdXN0ZXJlZCBjb21wdXRlcnNcbiAgMTM6XHRcdCAgdGhhdCB3aWxsIHRha2UgY2FyZSBvZiBpbnRlcmNlcHRpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYVxuICAxNDpcdFx0ICBzaW5nbGUgSVAgYWRkcmVzcyBhbmQgc2NoZWR1bGluZyB0aGVtIHRvIHJlYWwgc2VydmVycy5cbiAgMTU6XHRcbiAgMTY6XHRcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcbiAgMTc6XHRcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxuICAxODpcdFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXG4gIDE5Olx0XHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcbiAgMjA6XHRcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxuICAyMTpcdFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcbiAgMjI6XHRcdCAgZm9sbG93aW5nIFVSTDogXHUwMDNjaHR0cDovL3d3dy5saW51eHZpcnR1YWxzZXJ2ZXIub3JnL1x1MDAzZS5cbiAgMjM6XHRcbiAgMjQ6XHRcdCAgSWYgeW91IHdhbnQgdG8gY29tcGlsZSBpdCBpbiBrZXJuZWwsIHNheSBZLiBUbyBjb21waWxlIGl0IGFzIGFcbiAgMjU6XHRcdCAgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBJZiB1bnN1cmUsIHNheSBOLlxuICAyNjpcdFxuICAyNzpcdGlmIElQX1ZTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnXHRJUF9WU19JUFY2XG4gIDMwOlx0XHRib29sIFwmIzM0O0lQdjYgc3VwcG9ydCBmb3IgSVBWU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEwMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBBbmFseXNpcyBmb3IgSVBWUyBUaW1lciBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBJUF9WU2AgZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLCBzbyBpdCYjMzk7cyBjb3JlIG5ldHdvcmtpbmcgc3R1ZmYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgYHRpbWVyX2RlbGV0ZV9zeW5jYCB0byBgdGltZXJfc2h1dGRvd25fc3luY2AgY2hhbmdlIGluIGBpcF92c190cmFzaF9jbGVhbnVwYCwgaXMgd29ydGggdGhlIGZ1enppbmcgZWZmb3J0LgoKVGhlIHRyaWFnZSBndWlkZWxpbmVzIGFyZSBjbGVhcjogcmVhY2hhYmlsaXR5IGlzIGtpbmcuIENhbiB0aGlzIGNvZGUgYWN0dWFsbHkgKnJ1biogaW4gYSBzdGFuZGFyZCBmdXp6aW5nIGVudmlyb25tZW50IGxpa2UgUUVNVT8gTGV0JiMzOTtzIGNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSB0byBydWxlIG91dCBvYnZpb3VzIG5vLWdvcywgbGlrZSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4KClNvLCBpcyBgaXBfdnNfdHJhc2hfY2xlYW51cGAgcmVhY2hhYmxlPyBZZXMsIGl0IGlzIGNhbGxlZCBkdXJpbmcgbmV0bnMgZGVzdHJ1Y3Rpb24gdmlhIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBmcm9tIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLiBFeGNlbGxlbnQhIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgKmNvbW1vbiogaW4gc3l6a2FsbGVyIGZ1enppbmcsIHNvIHdlIGhhdmUgYSBnb29kIHBhdGguCgpUaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCB0aW1lciBzaHV0ZG93biB2ZXJzdXMgZGVsZXRpb24gaXMgaW50ZXJlc3RpbmcuIFRoaXMgc3VidGxlIGNoYW5nZSBjb3VsZCB0cmlnZ2VyIHJhY2UgY29uZGl0aW9ucywgb3IgaW50ZXJhY3Qgd2l0aCB0aW1lciByZWFybWluZyBvciB0aGUgdGltZXIgbGlmZWN5Y2xlLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBleGlzdGluZyBkZXN0IHRyYXNoIGV4cGlyYXRpb24gKGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWApIGFuZCBuZXRucyBjbGVhbnVwIGludGVyYWN0aW9uLiBXZSBoYXZlIHRvIHNlZSBpZiByZS1hcm1pbmcgYSBzaHV0LWRvd24gdGltZXIgd2lsbCB0cmlwIHNvbWUgc3Vic3lzdGVtIGNoZWNrcyBvciBjYXVzZSBhIHdhcm5pbmcuIExldCYjMzk7cyBjaGVjayBpZiBgbW9kX3RpbWVyYCBvbiBzaHV0IGRvd24gdGltZXIgcHJvZHVjZXMgYSB3YXJuaW5nIG9yIGludGVyYWN0cyB3aXRoIGBpcF92c190cmFzaF9wdXRfZGVzdGAuCgpMZXQmIzM5O3MgbG9vayBhdCBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYG1vZF90aW1lcmAgY2FsbCwgd2hpY2ggaGFwcGVucyBvbmx5IGlmIGBpcHZzLSZndDtkZXN0X3RyYXNoYCBpcyBlbXB0eSBhbmQgYGNsZWFudXBgIGlzIGZhbHNlLiBJZiB0aGVyZSYjMzk7cyBhIHJhY2UgYmV0d2VlbiBjbGVhbnVwIGFuZCB0aGUgdGltZXIgcmVhcm1pbmcgKG9yIGxhY2sgb2YpLCB0aGluZ3MgY291bGQgZ2V0IGludGVyZXN0aW5nLgoKU28sIGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzIGluIGNvcmUgbmV0d29ya2luZy9uZXRmaWx0ZXIgY29kZSAoYG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY2ApIGFuZCBpcyBjb21wbGV0ZWx5IHJlYWNoYWJsZSBpbiBvdXIgdGFyZ2V0IGVudmlyb25tZW50cy4KCk5vdywgZm9yIGZvY3VzIHN5bWJvbHMuIFdlIGhhdmU6CgoqICAgYGlwX3ZzX3RyYXNoX2NsZWFudXBgICh0aGUgbWFpbiB0YXJnZXQgb2YgdGhlIHBhdGNoKQoqICAgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgICh3aGljaCBjYWxscyBpdCBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCkKKiAgIGBpcF92c190cmFzaF9wdXRfZGVzdGAgKGhhbmRsZXMgcHV0dGluZyBkZXN0aW5hdGlvbnMgaW4gdGhlIHRyYXNoLCBhbmQgcG90ZW50aWFsbHkgcmUtYXJtcyB0aGUgdGltZXIpCiogICBgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgICh0aGUgdGltZXIgZXhwaXJhdGlvbiBmdW5jdGlvbikKKiAgIGBpcF92c19jb250cm9sX25ldF9pbml0YCAoaW5pdCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSkKCmBpcF92c190cmFzaF9jbGVhbnVwYCBpcyBzdGF0aWMsIGJ1dCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAgaXMgY2FsbGVkIGZyb20gYGlwX3ZzX2NvcmUuY2AuIFdlIGNhbiBpbmNsdWRlIHRoZW0gYWxsIGluIHRoZSBmb2N1cyBzeW1ib2wgbGlzdC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYGlwX3ZzX2N0bC5jYCBmb3IgYW55IG90aGVyIGBkZXN0X3RyYXNoYCByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXZSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIHRoaW5rIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXN0X3RyYXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9pcHZzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTA4PWlwX3ZzX3RyYXNoX2dldF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGludCBkZXN0X2FmLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE2LVx0ICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTExNzpcdHNwaW5fbG9ja19iaChcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTExODpcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGVzdCwgXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE5LVx0XHRJUF9WU19EQkdfQlVGKDMsIFwmIzM0O0Rlc3RpbmF0aW9uICV1LyVzOiV1IHN0aWxsIGluIHRyYXNoLCBcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE0MS1vdXQ6XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE0MjpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTQzLVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTQ4PXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX3B1dF9kZXN0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzLFxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUxLXtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTUyOlx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUzLVx0SVBfVlNfREJHX0JVRigzLCBcJiMzNDtNb3ZpbmcgZGVzdCAlczoldSBpbnRvIHRyYXNoLCBkZXN0LVx1MDAzZXJlZmNudD0lZFxcblwmIzM0Oyxcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE1NS1cdFx0ICAgICAgcmVmY291bnRfcmVhZChcdTAwMjZkZXN0LVx1MDAzZXJlZmNudCkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNTY6XHRpZiAobGlzdF9lbXB0eShcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpIFx1MDAyNlx1MDAyNiAhY2xlYW51cClcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTU3Olx0XHRtb2RfdGltZXIoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTgtXHRcdFx0ICBqaWZmaWVzICYjNDM7IChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcdTAwM2VcdTAwM2UgMSkpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTktXHQvKiBkZXN0IGxpdmVzIGluIHRyYXNoIHdpdGggcmVmZXJlbmNlICovXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MDpcdGxpc3RfYWRkKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNjEtXHRkZXN0LVx1MDAzZWlkbGVfc3RhcnQgPSBpc3RhcnQ7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MjpcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTYzLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk0LVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5NjpcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTc6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTgtXHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTY5ND1pcF92c19kZWxfZGVzdChzdHJ1Y3QgaXBfdnNfc2VydmljZSAqc3ZjLCBzdHJ1Y3QgaXBfdnNfZGVzdF91c2VyX2tlcm4gKnVkZXN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIxLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3MjI6c3RhdGljIHZvaWQgaXBfdnNfZGVzdF90cmFzaF9leHBpcmUoc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyMy17XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNC1cdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gdGltZXJfY29udGFpbmVyX29mKGlwdnMsIHQsXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyNTpcdFx0XHRcdFx0XHQgICAgIGRlc3RfdHJhc2hfdGltZXIpO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjYtXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm5leHQ7XG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjgtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyOTpcdHNwaW5fbG9jayhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTczMDpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBuZXh0LCBcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MzEtXHRcdGlmIChyZWZjb3VudF9yZWFkKFx1MDAyNmRlc3QtXHUwMDNlcmVmY250KSBcdTAwM2UgMSlcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTc0Ny1cdH1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzQ4Olx0aWYgKCFsaXN0X2VtcHR5KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCkpXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTc0OTpcdFx0bW9kX3RpbWVyKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcixcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVx0XHRcdCAgamlmZmllcyAmIzQzOyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXHUwMDNlXHUwMDNlIDEpKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzUxOlx0c3Bpbl91bmxvY2soXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NTItfVxuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0yMTE5PXN0YXRpYyB2b2lkIGlwX3ZzX3VubGlua19zZXJ2aWNlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGJvb2wgY2xlYW51cClcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyMS1cdGlwX3ZzX3VucmVnaXN0ZXJfY29ubnRyYWNrKHN2Yyk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyMjpcdC8qIEhvbGQgc3ZjIHRvIGF2b2lkIGRvdWJsZSByZWxlYXNlIGZyb20gZGVzdF90cmFzaCAqL1xubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjMtXHRhdG9taWNfaW5jKFx1MDAyNnN2Yy1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MjMwPWludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDYtXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTI0NzpcdElOSVRfTElTVF9IRUFEKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6NTI0ODpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5Olx0dGltZXJfc2V0dXAoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCYjNDM7JiM0MzspIHtcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNj1fX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy0zNTAtXHRcdFx0ICogZGV2aWNlIGlzIGdvaW5nIGRvd24gb3IgaWYgc2VydmVyIGlzIHJlbW92ZWQgYW5kXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjM1MTpcdFx0XHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtMzUyLVx0XHRcdCAqL1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDg5PV9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTUyOS1cdFx0XHQgKiBkZXZpY2UgaXMgZ29pbmcgZG93biBvciBpZiBzZXJ2ZXIgaXMgcmVtb3ZlZCBhbmRcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NTMwOlx0XHRcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3htaXQuYy01MzEtXHRcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzE3CgkJCQkJCQlvdXRwdXQ6IDE1NgoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVBWUyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIG5haWwgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb25zLiAqSVBfVlMqIGlzIGRlZmluaXRlbHkgbG9jYXRlZCBpbiBgbmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdgLCBzbyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTXkgZGVwZW5kZW5jaWVzIGNoZWNrIGNvbmZpcm1zIGl0IHJlcXVpcmVzIGJvdGggKklORVQqIGFuZCAqTkVURklMVEVSKi4gVGh1cywgdGhlIG1pbmltdW0gY29uZmlndXJhdGlvbiBzZXQgSSBuZWVkIHRvIGNvbnNpZGVyIGlzIGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O05FVEZJTFRFUiYjMzQ7LCAmIzM0O0lORVQmIzM0O11gLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHN5bWJvbHMgYWZmZWN0ZWQgYnkgdGhlIHBhdGNoLiBJIG5lZWQgdG8gZm9jdXMgb24gYGlwX3ZzX3RyYXNoX2NsZWFudXBgLCBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cGAsIGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWAsIGFuZCBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgLiBUaGVzZSBhcmUgY2xlYXJseSBrZXksIGFuZCB3YXJyYW50IGNhcmVmdWwgZXhhbWluYXRpb24gb2YgdGhlIGNvZGUgYXJvdW5kIHRoZW0uCgpTbywgSSYjMzk7bSBjb25maWRlbnQgYWJvdXQgdGhlc2UgZmFjdHM6CiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZSAoQWJzb2x1dGVseSwgd2UgbmVlZCB0byB0ZXN0IHRoaXMpCiogICBgRW5hYmxlQ29uZmlnc2A6IGBbJiMzNDtJUF9WUyYjMzQ7LCAmIzM0O05FVEZJTFRFUiYjMzQ7LCAmIzM0O0lORVQmIzM0O11gIChCYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCB0aGVzZSBhcmUgdGhlIG1pbmltdW1zKQoqICAgYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssICYjMzQ7aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cCYjMzQ7LCAmIzM0O2lwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlJiMzNDssICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0O11gIChUaGVzZSBhcmUgdGhlIGNyaXRpY2FsIGNvZGUgYXJlYXMgdGhhdCBjaGFuZ2VkKS4KClRoZSByZWFzb25pbmcgaXMgc29saWQsIGl0IGNlbnRlcnMgb24gdGhlIHBhdGNoJiMzOTtzIG1vZGlmaWNhdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIElQVlMuIFRoaXMgaXMgd2hlcmUgYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBiZWluZyByZXBsYWNlZCBieSBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtJmd0O2Rlc3RfdHJhc2hfdGltZXJgLiBUaGlzIGlzIGFib3V0IHRpbWVyIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBkZWFjdGl2YXRpb24gYW5kIHNodXRkb3duIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSB0ZWFyZG93biBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgbW9kdWxlLiBUaGlzIGlzIGNyaXRpY2FsIGZvciB2aXJ0dWFsIGVudmlyb25tZW50cyBhbmQgbmV0d29yayBuYW1lc3BhY2UgbGlmZSBjeWNsZXMsIGFuZCBJUFZTIG9wZXJhdGlvbnMgY2FuIGNlcnRhaW5seSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9WUyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVImIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwX3ZzX3RyYXNoX2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cCYjMzQ7LAogICAgJiMzNDtpcF92c19kZXN0X3RyYXNoX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtpcF92c190cmFzaF9wdXRfZGVzdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVzdGluYXRpb24gdHJhc2ggdGltZXIgdGVhcmRvd24gbG9naWMgaW4gSVBWUyAobmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jKSBieSBzd2l0Y2hpbmcgZnJvbSB0aW1lcl9kZWxldGVfc3luYyB0byB0aW1lcl9zaHV0ZG93bl9zeW5jLiBUaGlzIHJlYWNoYWJsZSBjb2RlIHBhdGggZXhlY3V0ZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAgYW5kIGRlc3RpbmF0aW9uIHRyYXNoIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbmV0ZmlsdGVyIHN1YnN5c3RlbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcF92c190cmFzaF9jbGVhbnVwJiMzNDssCiAgICAmIzM0O2lwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAmIzM0OywKICAgICYjMzQ7aXBfdnNfZGVzdF90cmFzaF9leHBpcmUmIzM0OywKICAgICYjMzQ7aXBfdnNfdHJhc2hfcHV0X2Rlc3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyYCBkdXJpbmcgbmV0bnMvSVBWUyBjbGVhbnVwIChgaXBfdnNfdHJhc2hfY2xlYW51cCgpYCkuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB0aW1lciBjYW5ub3QgYmUgcmUtYXJtZWQgYWZ0ZXIgZGVsZXRpb24gZHVyaW5nIHRlYXJkb3duLCBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE3OjE5OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jCmluZGV4IDRjMWM3Mzk0NDZiNzYuLjBlYjZjZGI1ZmVjMzUgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMKQEAgLTExOTIsNyAmIzQzOzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKQogewogCXN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0OwogCi0JdGltZXJfZGVsZXRlX3N5bmMoJmFtcDtpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyKTsKJiM0MzsJdGltZXJfc2h1dGRvd25fc3luYygmYW1wO2lwdnMtJmd0O2Rlc3RfdHJhc2hfdGltZXIpOwogCS8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsICZhbXA7aXB2cy0mZ3Q7ZGVzdF90cmFzaCwgdF9saXN0KSB7CiAJCWxpc3RfZGVsKCZhbXA7ZGVzdC0mZ3Q7dF9saXN0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE3OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMzMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGltZXIgQ2hhbmdlIGluIElQVlMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2U6IHN3aXRjaGluZyBgdGltZXJfZGVsZXRlX3N5bmNgIHRvIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBmb3IgdGhlIGBpcHZzLSZndDtkZXN0X3RyYXNoX3RpbWVyYCB3aXRoaW4gdGhlIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbiBpbiBgaXBfdnNfY3RsLmNgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aW1lciBtYW5hZ2VtZW50LCBhbmQgdGhlIGRpZmZlcmVuY2UgbGlrZWx5IGxpZXMgaW4gaG93IHRoZXkgZGVhbCB3aXRoIHRoZSB0aW1lciYjMzk7cyBjYWxsYmFjayBhbmQgc3luY2hyb25pemF0aW9uLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCByb2xlIG9mIGBpcF92c190cmFzaF9jbGVhbnVwYCB3aXRoaW4gdGhlIElQVlMgZnJhbWV3b3JrLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGF0IGZpbGUsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLCBhbmQgdXNlIG15IGVkaXRvciYjMzk7cyBgcmVhZC1maWxlYCBjb21tYW5kIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgdGhlIGxhcmdlciBwaWN0dXJlIHdpbGwgaGVscCBtZSBkZXRlcm1pbmUgd2h5IHRoaXMgY2hhbmdlIHdhcyBtYWRlIGFuZCB3aGF0IHBvdGVudGlhbCBpbXBhY3QgaXQgbWlnaHQgaGF2ZSBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxNzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTE4NTpcdCAqXG4xMTg2Olx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcbjExODc6XHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcbjExODg6XHQgKiAgYXJlIGV4cGlyZWQsIGFuZCB0aGUgcmVmY250IG9mIGVhY2ggZGVzdGluYXRpb24gaW4gdGhlIHRyYXNoIG11c3RcbjExODk6XHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxuMTE5MDpcdCAqL1xuMTE5MTpcdHN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXG4xMTkyOlx0e1xuMTE5MzpcdFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XG4xMTk0Olx0XG4xMTk1Olx0XHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4xMTk2Olx0XHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbjExOTc6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4xMTk4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbjExOTk6XHRcdFx0aXBfdnNfZGVzdF9mcmVlKGRlc3QpO1xuMTIwMDpcdFx0fVxuMTIwMTpcdH1cbjEyMDI6XHRcbjEyMDM6XHRzdGF0aWMgdm9pZCBpcF92c19zdGF0c19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4xMjA0Olx0e1xuMTIwNTpcdFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcbjEyMDY6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXG4xMjA3Olx0XHRcdFx0XHRcdFx0ICByY3VfaGVhZCk7XG4xMjA4Olx0XG4xMjA5Olx0XHRpcF92c19zdGF0c19yZWxlYXNlKFx1MDAyNnJzLVx1MDAzZXMpO1xuMTIxMDpcdFx0a2ZyZWUocnMpO1xuMTIxMTpcdH1cbjEyMTI6XHRcbjEyMTM6XHRzdGF0aWMgdm9pZFxuMTIxNDpcdGlwX3ZzX2NvcHlfc3RhdHMoc3RydWN0IGlwX3ZzX2tzdGF0cyAqZHN0LCBzdHJ1Y3QgaXBfdnNfc3RhdHMgKnNyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNAoJCQkJCQkJb3V0cHV0OiAxNzMKCQkJCQkJCXRob3VnaHRzOiA0MzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRpbWVyIFNodXRkb3duIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHRpbWVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYHRpbWVyX2RlbGV0ZV9zeW5jYCBvciBgZGVsX3RpbWVyX3N5bmNgLCBhbmQgZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gY29uc2lkZXIgS01TQU4gaW4gdGhpcyBzY2VuYXJpby4KCmB0aW1lcl9zaHV0ZG93bl9zeW5jYCBpcyBjbGVhcmx5IGEgbGlmZXRpbWUgbWFuYWdlbWVudCB0b29sLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBwcmV2ZW50IGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhlIHRlYXJkb3duIG9yIGNsZWFudXAgcHJvY2VzcyBieSBlbnN1cmluZyB0aGUgdGltZXIgaXNuJiMzOTt0IHJlLWFybWVkIHVuZXhwZWN0ZWRseS4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHByb3RlY3RpbmcgdGhlIHRpbWVyIGhhbmRsZXIgZnJvbSBhY2Nlc3NpbmcgZnJlZWQgcmVzb3VyY2VzLiBGcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludCwgdGhpcyBhcHBlYXJzIHRvIGJlIHB1cmVseSBhYm91dCB0ZWFyZG93biBhbmQgcHJldmVudGluZyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoYXQgcHJvY2Vzcy4KCk5vdywgbGV0JiMzOTtzIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBkaWZmZXJlbnQgc2FuaXRpemVycy4gRm9yIHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiwgd2UmIzM5O3JlIGxvb2tpbmcgZm9yIGlzc3VlcyByZWxhdGVkIHRvIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIHdpdGggdGhlIHRpbWVyLCBvciBpbnN0YW5jZXMgd2hlcmUgYSB0aW1lciBpcyB1c2VkIGFmdGVyIGNsZWFudXAgaGFzIG9jY3VycmVkLiBLTVNBTiwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLgoKR2l2ZW4gd2hhdCBJIHNlZSBpbiB0aGUgY29kZSBjaGFuZ2VzLCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIHBvdGVudGlhbCBmb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSwgbm8gY29uZGl0aW9uYWwgYnJhbmNoaW5nIGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YSwgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgbm8gYnVmZmVyIGJvdW5kcyBtYW5pcHVsYXRpb25zLiBUaGlzIGlzIGNydWNpYWw6IHRoZSBwcmltYXJ5IGZvY3VzIGlzIG9uIHRpbWVyIGxpZmV0aW1lIG1hbmFnZW1lbnQgZHVyaW5nIHNodXRkb3duLgoKVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCYXNlZCBvbiBteSBhbmFseXNpcywgdGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgbm8uIFRoZSBjb2RlIGFwcGVhcnMgdG8gaGFuZGxlIHRoZSB0ZWFyZG93biBpbiBhIHdheSB0aGF0IG1pbmltaXplcyB0aGVzZSByaXNrcy4gVGhpcyBtYWtlcyB0aGUgYE5lZWRzS01TQU5gIGZsYWcgaXJyZWxldmFudCBoZXJlLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuCgpUaGUgcnVsZSBpcyBjbGVhcjogS01TQU4gaXMgY29zdGx5IGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoZXJlIGlzIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFdlIHNob3VsZCBvbmx5IGVuYWJsZSBLTVNBTiBpZiB0aGUgY29kZSBjaGFuZ2UgaW50cm9kdWNlcyByaXNrcyB0aGF0IGFyZSAqb25seSogZGV0ZWN0ZWQgYnkgS01TQU4uIFNpbmNlIEtBU0FOIGFuZCBzdGFuZGFyZCBkZXRlY3RvcnMgY2F0Y2ggdGhlIGxpa2VseSBpc3N1ZXMsIEtNU0FOIGlzIG5vdCBuZWVkZWQuIFRoZSBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBvciB6ZXJvZWQgYmVmb3JlIGJlaW5nIHJlYWQuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyBoZXJlLiBUaGlzIGFsaWducyB3aXRoIHRoZSBjcml0ZXJpYSBmb3Igc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuCgpJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTc6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxuXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyYCBkdXJpbmcgbmV0bnMvSVBWUyBjbGVhbnVwIChgaXBfdnNfdHJhc2hfY2xlYW51cCgpYCkuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSB0aW1lciBjYW5ub3QgYmUgcmUtYXJtZWQgYWZ0ZXIgZGVsZXRpb24gZHVyaW5nIHRlYXJkb3duLCBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgYW5kIHVzZS1hZnRlci1mcmVlIGJ1Z3MuXG5cblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MTUuMDE1Mjg0NzUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc2MDQ5MzM4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGRlc3RpbmF0aW9uIHRyYXNoIHRpbWVyIHRlYXJkb3duIGxvZ2ljIGluIElQVlMgKG5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYykgYnkgc3dpdGNoaW5nIGZyb20gdGltZXJfZGVsZXRlX3N5bmMgdG8gdGltZXJfc2h1dGRvd25fc3luYy4gVGhpcyByZWFjaGFibGUgY29kZSBwYXRoIGV4ZWN1dGVzIGR1cmluZyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwIGFuZCBkZXN0aW5hdGlvbiB0cmFzaCBtYW5hZ2VtZW50IGluIHRoZSBJUFZTIG5ldGZpbHRlciBzdWJzeXN0ZW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjE1LjAxNTI5MTAxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2NTQ2MDkwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xcbkBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xcbiBcXG4tXFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xcbitcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG4gXFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRlc3QtXFx1MDAzZXRfbGlzdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjE2LjU4MTM0NjkzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTQwMDczMjA5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjYWU2MWQwNDc0OTM1ZTY1YmJkOWYxYTI3MmQ4YjdiOTlmYmZmYjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE3OjE5OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5pbmRleCA0YzFjNzM5NDQ2Yjc2Li4wZWI2Y2RiNWZlYzM1IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNcbkBAIC0xMTkyLDcgKzExOTIsNyBAQCBzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxuIHtcbiBcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xuIFxuLVx0dGltZXJfZGVsZXRlX3N5bmMoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcbitcdHRpbWVyX3NodXRkb3duX3N5bmMoXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcbiBcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXHUwMDI2aXB2cy1cdTAwM2VkZXN0X3RyYXNoLCB0X2xpc3QpIHtcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZGVzdC1cdTAwM2V0X2xpc3QpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MTYuNTgxMzQ4MjA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQwNzM1NDAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVlMgQ2xlYW51cCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRpZmYuIEl0IGxvb2tzIGxpa2UgYSBjaGFuZ2Ugd2l0aGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLiBUaGUgc3BlY2lmaWMgbW9kaWZpY2F0aW9uIGlzIGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24uIEFoLCBJIHNlZSwgaXQncyBhIHJlcGxhY2VtZW50IG9mIGB0aW1lcl9kZWxldGVfc3luY2Agd2l0aCBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAuIEludGVyZXN0aW5nLiBJIGtub3cgYm90aCBvZiB0aG9zZSB0aW1lciBmdW5jdGlvbnMsIGFuZCBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGltZXIgbWFuYWdlbWVudCBhbmQgc3luY2hyb25pemF0aW9uIGluIHRoZSBJUFZTIGNvbnRleHQuIFRoZSBmYWN0IHRoYXQgYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIHVzZWQgc3VnZ2VzdHMgYSBtb3JlIHJvYnVzdCBhcHByb2FjaCB0byBlbnN1cmluZyB0aGUgdGltZXIncyBncmFjZWZ1bCB0ZXJtaW5hdGlvbiwgcGVyaGFwcyBwcmV2ZW50aW5nIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgcmVzb3VyY2UgbGVha3MuXG5cbk5vdywgSSBuZWVkIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgaGF2ZSB0byBzZWUgdGhpcyBjaGFuZ2UgaW4gaXRzIGNvbnRleHQuIFdoYXQncyB0aGUgc3Vycm91bmRpbmcgY29kZSBkb2luZz8gV2hhdCdzIHRoZSBvdmVyYWxsIGZ1bmN0aW9uIG9mIGBpcF92c190cmFzaF9jbGVhbnVwYD8gSXQncyBkZWFsaW5nIHdpdGggYSBcInRyYXNoXCIgb3IgY2xlYW51cCBwcm9jZXNzLCBwcmVzdW1hYmx5IGZvciBJUFZTIGRlc3RpbmF0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYW5kIHRoZSB0aW1lciwgYW5kIHdoeSB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHdhcyBuZWNlc3NhcnkuXG5cbkxldCdzIHF1aWNrbHkgZ2V0IHRoZSBzb3VyY2UgY29kZS4gSSB3aWxsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ3JhYiB0aGUgcmVsZXZhbnQgY29kZSBhbmQgZ2V0IHRoZSBmdWxsIGNvbnRleHQgYXJvdW5kIHRoaXMgZnVuY3Rpb24gYW5kIGFsc28gdGhlIHVzZXMgb2YgdGhlIGBkZXN0X3RyYXNoX3RpbWVyYC4gVGhhdCBzaG91bGQgYWxsb3cgbWUgdG8gZm9ybXVsYXRlIGEgcHJvcGVyIGFzc2Vzc21lbnQgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB0aGlzIGlzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGEgYnVnIGZpeCwgb3Igc2ltcGx5IGEgY29kZSBtb2Rlcm5pemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTIxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MjAuOTg4NzA0MzAyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgxMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTgwOlxcdH1cXG4xMTgxOlxcdFxcbjExODI6XFx0LypcXG4xMTgzOlxcdCAqICBDbGVhbiB1cCBhbGwgdGhlIGRlc3RpbmF0aW9ucyBpbiB0aGUgdHJhc2hcXG4xMTg0OlxcdCAqICBDYWxsZWQgYnkgdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYW51cCgpXFxuMTE4NTpcXHQgKlxcbjExODY6XFx0ICogIFdoZW4gdGhlIGlwX3ZzX2NvbnRyb2xfY2xlYXJ1cCBpcyBhY3RpdmF0ZWQgYnkgaXB2cyBtb2R1bGUgZXhpdCxcXG4xMTg3OlxcdCAqICB0aGUgc2VydmljZSB0YWJsZXMgbXVzdCBoYXZlIGJlZW4gZmx1c2hlZCBhbmQgYWxsIHRoZSBjb25uZWN0aW9uc1xcbjExODg6XFx0ICogIGFyZSBleHBpcmVkLCBhbmQgdGhlIHJlZmNudCBvZiBlYWNoIGRlc3RpbmF0aW9uIGluIHRoZSB0cmFzaCBtdXN0XFxuMTE4OTpcXHQgKiAgYmUgMSwgc28gd2Ugc2ltcGx5IHJlbGVhc2UgdGhlbSBoZXJlLlxcbjExOTA6XFx0ICovXFxuMTE5MTpcXHRzdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbjExOTI6XFx0e1xcbjExOTM6XFx0XFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpueHQ7XFxuMTE5NDpcXHRcXG4xMTk1OlxcdFxcdHRpbWVyX3NodXRkb3duX3N5bmMoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIpO1xcbjExOTY6XFx0XFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxuMTE5NzpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZGVzdCwgbnh0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XFxuMTE5ODpcXHRcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZGVzdC1cXHUwMDNldF9saXN0KTtcXG4xMTk5OlxcdFxcdFxcdGlwX3ZzX2Rlc3RfZnJlZShkZXN0KTtcXG4xMjAwOlxcdFxcdH1cXG4xMjAxOlxcdH1cXG4xMjAyOlxcdFxcbjEyMDM6XFx0c3RhdGljIHZvaWQgaXBfdnNfc3RhdHNfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbjEyMDQ6XFx0e1xcbjEyMDU6XFx0XFx0c3RydWN0IGlwX3ZzX3N0YXRzX3JjdSAqcnMgPSBjb250YWluZXJfb2YoaGVhZCxcXG4xMjA2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IGlwX3ZzX3N0YXRzX3JjdSxcXG4xMjA3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgcmN1X2hlYWQpO1xcbjEyMDg6XFx0XFxuMTIwOTpcXHRcXHRpcF92c19zdGF0c19yZWxlYXNlKFxcdTAwMjZycy1cXHUwMDNlcyk7XFxuMTIxMDpcXHRcXHRrZnJlZShycyk7XFxuMTIxMTpcXHR9XFxuMTIxMjpcXHRcXG4xMjEzOlxcdHN0YXRpYyB2b2lkXFxuMTIxNDpcXHRpcF92c19jb3B5X3N0YXRzKHN0cnVjdCBpcF92c19rc3RhdHMgKmRzdCwgc3RydWN0IGlwX3ZzX3N0YXRzICpzcmMpXFxuMTIxNTpcXHR7XFxuMTIxNjpcXHQjZGVmaW5lIElQX1ZTX1NIT1dfU1RBVFNfQ09VTlRFUihjKSBkc3QtXFx1MDAzZWMgPSBzcmMtXFx1MDAzZWtzdGF0cy5jIC0gc3JjLVxcdTAwM2Vrc3RhdHMwLmNcXG4xMjE3OlxcdFxcbjEyMTg6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZzcmMtXFx1MDAzZWxvY2spO1xcbjEyMTk6XFx0XFxuMTIyMDpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoY29ubnMpO1xcbjEyMjE6XFx0XFx0SVBfVlNfU0hPV19TVEFUU19DT1VOVEVSKGlucGt0cyk7XFxuMTIyMjpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIob3V0cGt0cyk7XFxuMTIyMzpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIoaW5ieXRlcyk7XFxuMTIyNDpcXHRcXHRJUF9WU19TSE9XX1NUQVRTX0NPVU5URVIob3V0Ynl0ZXMpO1xcbjEyMjU6XFx0XFxuMTIyNjpcXHRcXHRpcF92c19yZWFkX2VzdGltYXRvcihkc3QsIHNyYyk7XFxuMTIyNzpcXHRcXG4xMjI4OlxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZzcmMtXFx1MDAzZWxvY2spO1xcbjEyMjk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyMC45ODg5ODc3NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODgwODYyMzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGlwX3ZzX3RyYXNoX2NsZWFudXBgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgYWx3YXlzIGRvIGlzIHRyYWNlIGl0cyB1c2FnZS4gSSdtIGdvaW5nIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJdCdzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gcXVpY2tseSBmaW5kIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlIHdoZXJlIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgYW5kIHBvdGVudGlhbCBpbXBhY3Qgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyMi44Njk4NTMyMjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyNDkzMzE5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF92c190cmFzaF9jbGVhbnVwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTc0PXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfZnJlZShzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTkwLSAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTkxOnN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTIte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUzMTU9dm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MzE3OlxcdGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTgtXFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjI1LjQ5NDc5MDk1NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwODQ2MTc1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKlRyYWNpbmcgdGhlIENhbGwgUGF0aDogYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhlcmUncyBhIHJlYXNvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24sIGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCwgaXMgb24gbXkgbWluZC4gSXQncyB0aW1lIHRvIGZvbGxvdyB0aGUgdHJhaWwuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIG1ldGhvZGljYWxseSB0cmFjZSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBpbnZvY2F0aW9ucyBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdpZGVyIG5ldHdvcmsgY29udHJvbCBwbGFuZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVwc3RyZWFtIGRlcGVuZGVuY2llczsgd2hpY2ggY29tcG9uZW50cyBhcmUgcmVsaWFudCBvbiB0aGUgY2xlYW51cCBpdCBwcm92aWRlcz8gVGhpcyB3aWxsIHF1aWNrbHkgcGFpbnQgYSBwaWN0dXJlIG9mIGl0cyByb2xlIGFuZCBoZWxwIG1lIHplcm8gaW4gb24gd2hhdGV2ZXIncyBkcml2aW5nIHRoaXMgaW52ZXN0aWdhdGlvbi4gU28sIGxldCdzIHN0YXJ0IHdpdGggYSBjYWxsIGdyYXBoIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzgwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MjcuNTc5NDE1NTAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTkxOTAwODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTE3OTc9dm9pZCBpcF92c19wcm90b2NvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxNzk4OnZvaWQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyk7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xNzk5LXZvaWQgaXBfdnNfZXN0aW1hdG9yX25ldF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM9MjQ4MD1zdGF0aWMgaW50IF9fbmV0X2luaXQgX19pcF92c19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjUyNS1wcm90b2NvbF9mYWlsOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmM6MjUyNjpcXHRpcF92c19jb250cm9sX25ldF9jbGVhbnVwKGlwdnMpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMtMjUyNy1jb250cm9sX2ZhaWw6XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jPTI1MzQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBfX2lwX3ZzX2NsZWFudXBfYmF0Y2goc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jLTI1NDQtXFx0XFx0aXBfdnNfcHJvdG9jb2xfbmV0X2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYzoyNTQ1OlxcdFxcdGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYy0yNTQ2LVxcdFxcdGlwX3ZzX2VzdGltYXRvcl9uZXRfY2xlYW51cChpcHZzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz01MDQ2PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0X3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MTkyOnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUxOTMte1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTUyMTg9c3RhdGljIGludCBfX25ldF9pbml0IGlwX3ZzX2NvbnRyb2xfbmV0X2luaXRfc3lzY3RsKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKSB7IHJldHVybiAwOyB9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyMTk6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcF92c19jb250cm9sX25ldF9jbGVhbnVwX3N5c2N0bChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cykgeyB9XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyMjAtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTU6dm9pZCBfX25ldF9leGl0IGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTYte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy01MzE3LVxcdGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUzMTg6XFx0aXBfdnNfY29udHJvbF9uZXRfY2xlYW51cF9zeXNjdGwoaXB2cyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUzMTktXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2Vlc3RfcmVsb2FkX3dvcmspO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOToyOS45OTg2MjcwMzZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDMyODg3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gb2YgSVBWUyBDbGVhbnVwIGluIE5ldHdvcmsgTmFtZXNwYWNlIFRlYXItZG93bioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBJUFZTIGNvZGUgaGFuZGxlcyBuZXR3b3JrIG5hbWVzcGFjZSBjbGVhbnVwLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdGhpbmdzIGFyZSBjbGVhbmVkIHVwIGR1cmluZyB0aGUgdGVhcmRvd24gcHJvY2Vzcy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgX19pcF92c19jbGVhbnVwX2JhdGNoYCBmdW5jdGlvbiwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgcmVnaXN0ZXJlZCBhcyBhIHBlcm5ldCBleGl0IGZ1bmN0aW9uIOKAkyBzb21ldGhpbmcgbGlrZSBgb3BzLmV4aXRfYmF0Y2ggPSBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgLlxuXG5NeSB0cmFpbiBvZiB0aG91Z2h0IHJpZ2h0IG5vdyBpcyBjZW50ZXJlZCBvbiBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBzeXprYWxsZXIuIFNpbmNlIHN5emthbGxlciBpcyBjb25zdGFudGx5IHNwaW5uaW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gbmV0d29yayBuYW1lc3BhY2VzIOKAkyB1c2luZyBgdW5zaGFyZShDTE9ORV9ORVdORVQpYCwgYGNsb25lYCwgYW5kIHNvY2tldCBjYWxscyDigJMgaXQncyBhIHBlcmZlY3QgZW52aXJvbm1lbnQgdG8gc3RyZXNzLXRlc3QgdGhpcyBhcmVhLiBXaGVuIGEgbmV0bnMgZXhpdHMsIHRoZSBgb3BzLVx1MDAzZWV4aXRgIG9yLCBpbiB0aGlzIGNhc2UsIGBvcHMtXHUwMDNlZXhpdF9iYXRjaGAgZnVuY3Rpb25zIGdldCBpbnZva2VkLiBUaGF0J3Mgd2hlcmUgSSBiZWxpZXZlIGBfX2lwX3ZzX2NsZWFudXBfYmF0Y2hgIGNvbWVzIGludG8gcGxheS5cblxuU3BlY2lmaWNhbGx5LCBpbnNpZGUgYF9faXBfdnNfY2xlYW51cF9iYXRjaGAsIGl0J3MgY2FsbGluZyBgaXBfdnNfY29udHJvbF9uZXRfY2xlYW51cChpcHZzKWAsIHdoaWNoIHRoZW4gY2FsbHMgYGlwX3ZzX3RyYXNoX2NsZWFudXAoaXB2cylgLiBUaGlzIGlzIHRoZSBjb3JlIGxvZ2ljIEkgbmVlZCB0byBhbmFseXplLlxuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBgZGVzdF90cmFzaF90aW1lcmAuIElzIHRoaXMgdGltZXIgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYW5kIHVzZWQ/IEkgbmVlZCB0byB0cmFjayBkb3duIGFueSBpbnN0YW5jZXMgb2YgYGRlc3RfdHJhc2hfdGltZXJgIHdpdGhpbiB0aGUgY29kZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgY2xlYW51cCBwcm9jZXNzLiBMZXQncyBzdGFydCB3aXRoIGEgc2VhcmNoIGZvciB0aGF0IHZhcmlhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQ1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjMzLjAzMTUxNzdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjUwNTYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVzdF90cmFzaF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9pcF92cy5oPTExNTY9c3RydWN0IG5ldG5zX2lwdnMge1xcbi0tXFxuaW5jbHVkZS9uZXQvaXBfdnMuaC0xMjAyLVxcdHNwaW5sb2NrX3RcXHRcXHRkZXN0X3RyYXNoX2xvY2s7XFxuaW5jbHVkZS9uZXQvaXBfdnMuaDoxMjAzOlxcdHN0cnVjdCB0aW1lcl9saXN0XFx0ZGVzdF90cmFzaF90aW1lcjsgLyogZXhwaXJhdGlvbiB0aW1lciAqL1xcbmluY2x1ZGUvbmV0L2lwX3ZzLmgtMTIwNC1cXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRzZXJ2aWNlX211dGV4OyAgICAvKiBzZXJ2aWNlIHJlY29uZmlnICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE0OD1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9wdXRfZGVzdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU2LVxcdGlmIChsaXN0X2VtcHR5KFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoKSBcXHUwMDI2XFx1MDAyNiAhY2xlYW51cClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1NzpcXHRcXHRtb2RfdGltZXIoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTgtXFx0XFx0XFx0ICBqaWZmaWVzICsgKElQX1ZTX0RFU1RfVFJBU0hfUEVSSU9EIFxcdTAwM2VcXHUwMDNlIDEpKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTkxPXN0YXRpYyB2b2lkIGlwX3ZzX3RyYXNoX2NsZWFudXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE5NTpcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE5Ni1cXHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xNzIyPXN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjQtXFx0c3RydWN0IG5ldG5zX2lwdnMgKmlwdnMgPSB0aW1lcl9jb250YWluZXJfb2YoaXB2cywgdCxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTcyNTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGRlc3RfdHJhc2hfdGltZXIpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzI2LVxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbmV4dDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzQ4LVxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVxcdFxcdFxcdCAgamlmZmllcyArIChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcXHUwMDNlXFx1MDAzZSAxKSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDgtXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyNDk6XFx0dGltZXJfc2V0dXAoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXIsIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlLCAwKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtNTI1MC1cXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIElQX1ZTX0FGX01BWDsgaWR4KyspIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6MzUuMjk2NTgxNTM1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4NDMyMzE1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUFZTIFRpbWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY2hhbmdlOiBgdGltZXJfZGVsZXRlX3N5bmNgIGlzIG5vdyBgdGltZXJfc2h1dGRvd25fc3luYyhcdTAwMjZpcHZzLVx1MDAzZWRlc3RfdHJhc2hfdGltZXIpYC4gUmlnaHQgYXdheSwgdGhlIGFsYXJtIGJlbGxzIGFyZSBnb2luZyBvZmYgaW4gbXkgaGVhZC4gV2h5IHRoaXMgY2hhbmdlPyBUaGUgY29tbWVudCBzYXlzIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBwcmV2ZW50cyByZWFybWluZyB0aGUgdGltZXIuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIElzIHRoZXJlIGEgc2NlbmFyaW8gd2hlcmUgdGhpcyB0aW1lciAqbmVlZHMqIHRvIGJlIHJlYXJtZWQ/IEFuZCBpZiBzbywgaG93IGRvZXMgc2h1dHRpbmcgaXQgZG93biBhZmZlY3QgdGhlIG92ZXJhbGwgc3lzdGVtIGZ1bmN0aW9uYWxpdHk/XG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29udGV4dC4gSXMgdGhpcyBhIGNvZGUgcGF0aCB0aGF0J3MgZWFzaWx5IHJlYWNoYWJsZT8gQ2FuIEkgdHJpZ2dlciB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBqdXN0IGEgcmVndWxhciBzeXN0ZW0/IFllcywgSVBWUyBpcyBhIGNvcmUgbmV0ZmlsdGVyIHN1YnN5c3RlbS4gSSBjYW4gYWNjZXNzIGl0IHZpYSBzb2Nrb3B0cywgbmV0bGluayDigJMgdGhpbmdzIGxpa2UgYGlwdnNhZG1gLCBnZW5lcmljIG5ldGxpbmssIGV2ZW4gaXB0YWJsZXMgaW50ZXJhY3Rpb24uIE5ldG5zIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBhcmUgc3RhbmRhcmQgb3BlcmF0aW9ucy4gVGhhdCdzIGdvb2Q7IGl0IG1lYW5zIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGxpa2VseSB0ZXN0IGFuZCByZXByb2R1Y2Ugd2l0aG91dCB0b28gbXVjaCBoYXNzbGUuXG5cbk5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBhbnkgYEtjb25maWdgIHJlcXVpcmVtZW50cy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoZXRoZXIgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGJlaGF2aW9yLCBvciB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzU3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjE5OjM4LjEzOTgxNjQwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc1MTU5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDM5OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3OmlmIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjgtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjk6Y29uZmlnXFx0SVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIklQdjYgc3VwcG9ydCBmb3IgSVBWU1xcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMTpcXHRkZXBlbmRzIG9uIElQVjYgPSB5IHx8IElQX1ZTID0gSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyLVxcdHNlbGVjdCBORl9ERUZSQUdfSVBWNlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mzg6Y29uZmlnXFx0SVBfVlNfREVCVUdcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00NC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo0NTpjb25maWdcXHRJUF9WU19UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQ2LVxcdGludCBcXFwiSVBWUyBjb25uZWN0aW9uIHRhYmxlIHNpemUgKHRoZSBOdGggcG93ZXIgb2YgMilcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz03Nz1jb21tZW50IFxcXCJJUFZTIHRyYW5zcG9ydCBwcm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTc4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjc5OmNvbmZpZ1xcdElQX1ZTX1BST1RPX1RDUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIlRDUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6ODU6Y29uZmlnXFx0SVBfVlNfUFJPVE9fVURQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctODYtXFx0Ym9vbCBcXFwiVURQIGxvYWQgYmFsYW5jaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MTpjb25maWdcXHRJUF9WU19QUk9UT19BSF9FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5MjpcXHRkZWZfYm9vbCBJUF9WU19QUk9UT19FU1AgfHwgSVBfVlNfUFJPVE9fQUhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo5NDpjb25maWdcXHRJUF9WU19QUk9UT19FU1BcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy05NS1cXHRib29sIFxcXCJFU1AgbG9hZCBiYWxhbmNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTk5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwMDpjb25maWdcXHRJUF9WU19QUk9UT19BSFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJBSCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTA1LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEwNjpjb25maWcgIElQX1ZTX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMDctXFx0Ym9vbCBcXFwiU0NUUCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MTEzPWNvbW1lbnQgXFxcIklQVlMgc2NoZWR1bGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTExNC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxMTU6Y29uZmlnXFx0SVBfVlNfUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMTYtXFx0dHJpc3RhdGUgXFxcInJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjMtIFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjEyNDpjb25maWdcXHRJUF9WU19XUlJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIndlaWdodGVkIHJvdW5kLXJvYmluIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTM3OmNvbmZpZ1xcdElQX1ZTX0xDXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTM4LVxcdHRyaXN0YXRlIFxcXCJsZWFzdC1jb25uZWN0aW9uIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0xNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MTQ3OmNvbmZpZ1xcdElQX1ZTX1dMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE0OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE1Nzpjb25maWcgIElQX1ZTX0ZPXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTU4LVxcdFxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCBmYWlsb3ZlciBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTY2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE2Nzpjb25maWcgIElQX1ZTX09WRlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE2OC1cXHR0cmlzdGF0ZSBcXFwid2VpZ2h0ZWQgb3ZlcmZsb3cgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoxNzg6Y29uZmlnXFx0SVBfVlNfTEJMQ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTE3OS1cXHR0cmlzdGF0ZSBcXFwibG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjE5Mjpjb25maWcgIElQX1ZTX0xCTENSXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMTkzLVxcdHRyaXN0YXRlIFxcXCJsb2NhbGl0eS1iYXNlZCBsZWFzdC1jb25uZWN0aW9uIHdpdGggcmVwbGljYXRpb24gc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIwOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMTA6Y29uZmlnXFx0SVBfVlNfREhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcImRlc3RpbmF0aW9uIGhhc2hpbmcgc2NoZWR1bGluZ1xcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTIxOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyMjA6Y29uZmlnXFx0SVBfVlNfU0hcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjEtXFx0dHJpc3RhdGUgXFxcInNvdXJjZSBoYXNoaW5nIHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yMjktXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjMwOmNvbmZpZ1xcdElQX1ZTX01IXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjMxLVxcdHRyaXN0YXRlIFxcXCJtYWdsZXYgaGFzaGluZyBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjQ4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI0OTpjb25maWdcXHRJUF9WU19TRURcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNTAtXFx0dHJpc3RhdGUgXFxcInNob3J0ZXN0IGV4cGVjdGVkIGRlbGF5IHNjaGVkdWxpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yNjEtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MjYyOmNvbmZpZ1xcdElQX1ZTX05RXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjYzLVxcdHRyaXN0YXRlIFxcXCJuZXZlciBxdWV1ZSBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc0LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjI3NTpjb25maWdcXHRJUF9WU19UV09TXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjc2LVxcdHRyaXN0YXRlIFxcXCJ3ZWlnaHRlZCByYW5kb20gdHdvcyBjaG9pY2UgbGVhc3QtY29ubmVjdGlvbiBzY2hlZHVsaW5nXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzE5PWNvbW1lbnQgJ0lQVlMgYXBwbGljYXRpb24gaGVscGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyMC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMjE6Y29uZmlnXFx0SVBfVlNfRlRQXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJGVFAgcHJvdG9jb2wgaGVscGVyXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyMzpcXHRkZXBlbmRzIG9uIElQX1ZTX1BST1RPX1RDUCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfTkFUIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMjQtXFx0XFx0TkZfQ09OTlRSQUNLX0ZUUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnOjMyNTpcXHRzZWxlY3QgSVBfVlNfTkZDVFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMyNi1cXHRoZWxwXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMzYtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzM3OmNvbmZpZ1xcdElQX1ZTX05GQ1RcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMzgtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmdcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDQtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzQ1OmNvbmZpZ1xcdElQX1ZTX1BFX1NJUFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTM0Ni1cXHR0cmlzdGF0ZSBcXFwiU0lQIHBlcnNpc3RlbmNlIGVuZ2luZVxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBJUF9WU19QUk9UT19VRFBcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNDgtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tfU0lQXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZz0zNTI9Y29uZmlnIEdDT1ZfUFJPRklMRV9JUFZTXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zNjAtXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzYxOmVuZGlmICMgSVBfVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZT03PWlwX3ZzX3Byb3RvLW9ianMteSA6PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo4OmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVENQKSArPSBpcF92c19wcm90b190Y3Aub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo5OmlwX3ZzX3Byb3RvLW9ianMtJChDT05GSUdfSVBfVlNfUFJPVE9fVURQKSArPSBpcF92c19wcm90b191ZHAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxMDppcF92c19wcm90by1vYmpzLSQoQ09ORklHX0lQX1ZTX1BST1RPX0FIX0VTUCkgKz0gaXBfdnNfcHJvdG9fYWhfZXNwLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MTE6aXBfdnNfcHJvdG8tb2Jqcy0kKENPTkZJR19JUF9WU19QUk9UT19TQ1RQKSArPSBpcF92c19wcm90b19zY3RwLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMTItXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlPTEzPWlwX3ZzLWV4dHJhX29ianMteSA6PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToxNDppcF92cy1leHRyYV9vYmpzLSQoQ09ORklHX0lQX1ZTX05GQ1QpICs9IGlwX3ZzX25mY3Qub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0xNS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU9MTY9aXBfdnMtb2JqcyA6PVxcdGlwX3ZzX2Nvbm4ubyBpcF92c19jb3JlLm8gaXBfdnNfY3RsLm8gaXBfdnNfc2NoZWQub1xcdCAgIFxcXFxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS0yMi0jIElQVlMgY29yZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyMzpvYmotJChDT05GSUdfSVBfVlMpICs9IGlwX3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtMjQtXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTI1LSMgSVBWUyBzY2hlZHVsZXJzXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19JUF9WU19SUikgKz0gaXBfdnNfcnIub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfSVBfVlNfV1JSKSArPSBpcF92c193cnIub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfSVBfVlNfTEMpICs9IGlwX3ZzX2xjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0lQX1ZTX1dMQykgKz0gaXBfdnNfd2xjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX0lQX1ZTX0ZPKSArPSBpcF92c19mby5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19JUF9WU19PVkYpICs9IGlwX3ZzX292Zi5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjMyOm9iai0kKENPTkZJR19JUF9WU19MQkxDKSArPSBpcF92c19sYmxjLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0lQX1ZTX0xCTENSKSArPSBpcF92c19sYmxjci5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19JUF9WU19ESCkgKz0gaXBfdnNfZGgub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfSVBfVlNfU0gpICs9IGlwX3ZzX3NoLm9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0lQX1ZTX01IKSArPSBpcF92c19taC5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUF9WU19TRUQpICs9IGlwX3ZzX3NlZC5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19JUF9WU19OUSkgKz0gaXBfdnNfbnEub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfSVBfVlNfVFdPUykgKz0gaXBfdnNfdHdvcy5vXFxubmV0L25ldGZpbHRlci9pcHZzL01ha2VmaWxlLTQwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00MS0jIElQVlMgYXBwbGljYXRpb24gaGVscGVyc1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfSVBfVlNfRlRQKSArPSBpcF92c19mdHAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00My1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvTWFrZWZpbGUtNDQtIyBJUFZTIGNvbm5lY3Rpb24gdGVtcGxhdGUgcmV0cmlldmVyc1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfSVBfVlNfUEVfU0lQKSArPSBpcF92c19wZV9zaXAub1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9NYWtlZmlsZS00Ni1pZmRlZiBDT05GSUdfR0NPVl9QUk9GSUxFX0lQVlNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz03Mj1pcF92c19hcHBfaW5jX25ldyhzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2FwcCAqYXBwLCBfX3UxNiBwcm90byxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0xMDgtXFx0bGlzdF9hZGQoXFx1MDAyNmluYy1cXHUwMDNlYV9saXN0LCBcXHUwMDI2YXBwLVxcdTAwM2VpbmNzX2xpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoxMDk6XFx0SVBfVlNfREJHKDksIFxcXCIlcyBBcHAgJXM6JXUgcmVnaXN0ZXJlZFxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTEwLVxcdFxcdCAgcHAtXFx1MDAzZW5hbWUsIGluYy1cXHUwMDNlbmFtZSwgbnRvaHMoaW5jLVxcdTAwM2Vwb3J0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9MTI0PWlwX3ZzX2FwcF9pbmNfcmVsZWFzZShzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IGlwX3ZzX2FwcCAqaW5jKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTEzMy1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MTM0OlxcdElQX1ZTX0RCRyg5LCBcXFwiJXMgQXBwICVzOiV1IHVucmVnaXN0ZXJlZFxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMTM1LVxcdFxcdCAgcHAtXFx1MDAzZW5hbWUsIGluYy1cXHUwMDNlbmFtZSwgbnRvaHMoaW5jLVxcdTAwM2Vwb3J0KSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9Mjg3PXN0YXRpYyBpbmxpbmUgdm9pZCB2c19maXhfc2VxKGNvbnN0IHN0cnVjdCBpcF92c19zZXEgKnZzZXEsIHN0cnVjdCB0Y3BoZHIgKnRoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTI5OC1cXHRcXHRcXHR0aC1cXHUwMDNlc2VxID0gaHRvbmwoc2VxICsgdnNlcS1cXHUwMDNlZGVsdGEpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzoyOTk6XFx0XFx0XFx0SVBfVlNfREJHKDksIFxcXCIlcygpOiBhZGRlZCBkZWx0YSAoJWQpIHRvIHNlcVxcXFxuXFxcIixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzAwLVxcdFxcdFxcdFxcdCAgX19mdW5jX18sIHZzZXEtXFx1MDAzZWRlbHRhKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMDItXFx0XFx0XFx0dGgtXFx1MDAzZXNlcSA9IGh0b25sKHNlcSArIHZzZXEtXFx1MDAzZXByZXZpb3VzX2RlbHRhKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzAzOlxcdFxcdFxcdElQX1ZTX0RCRyg5LCBcXFwiJXMoKTogYWRkZWQgcHJldmlvdXNfZGVsdGEgKCVkKSB0byBzZXFcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMwNC1cXHRcXHRcXHRcXHQgIF9fZnVuY19fLCB2c2VxLVxcdTAwM2VwcmV2aW91c19kZWx0YSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM9MzE0PXZzX2ZpeF9hY2tfc2VxKGNvbnN0IHN0cnVjdCBpcF92c19zZXEgKnZzZXEsIHN0cnVjdCB0Y3BoZHIgKnRoKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMyNy1cXHRcXHRcXHR0aC1cXHUwMDNlYWNrX3NlcSA9IGh0b25sKGFja19zZXEgLSB2c2VxLVxcdTAwM2VkZWx0YSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjMyODpcXHRcXHRcXHRJUF9WU19EQkcoOSwgXFxcIiVzKCk6IHN1YnRyYWN0ZWQgZGVsdGEgXFxcIlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zMjktXFx0XFx0XFx0XFx0ICBcXFwiKCVkKSBmcm9tIGFja19zZXFcXFxcblxcXCIsIF9fZnVuY19fLCB2c2VxLVxcdTAwM2VkZWx0YSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtMzMyLVxcdFxcdFxcdHRoLVxcdTAwM2VhY2tfc2VxID0gaHRvbmwoYWNrX3NlcSAtIHZzZXEtXFx1MDAzZXByZXZpb3VzX2RlbHRhKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmM6MzMzOlxcdFxcdFxcdElQX1ZTX0RCRyg5LCBcXFwiJXMoKTogc3VidHJhY3RlZCBcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTMzNC1cXHRcXHRcXHRcXHQgIFxcXCJwcmV2aW91c19kZWx0YSAoJWQpIGZyb20gYWNrX3NlcVxcXFxuXFxcIixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYz0zNTk9c3RhdGljIGlubGluZSBpbnQgYXBwX3RjcF9wa3Rfb3V0KHN0cnVjdCBpcF92c19jb25uICpjcCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy0zNzktXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjM4MDpcXHRpZiAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4MS1cXHRcXHR2c19maXhfc2VxKFxcdTAwMjZjcC1cXHUwMDNlb3V0X3NlcSwgdGgpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzozODI6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM4My1cXHRcXHR2c19maXhfYWNrX3NlcShcXHUwMDI2Y3AtXFx1MDAzZWluX3NlcSwgdGgpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTM5OC1cXHRcXHR2c19zZXFfdXBkYXRlKGNwLCBcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjM5OTpcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfT1VUX1NFUSwgc2VxLCBkaWZmKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDAwLVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jPTQzNT1zdGF0aWMgaW5saW5lIGludCBhcHBfdGNwX3BrdF9pbihzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfYXBwLmMtNDU1LVxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYzo0NTY6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTl9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ1Ny1cXHRcXHR2c19maXhfc2VxKFxcdTAwMjZjcC1cXHUwMDNlaW5fc2VxLCB0aCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ1ODpcXHRpZiAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09VVF9TRVEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jLTQ1OS1cXHRcXHR2c19maXhfYWNrX3NlcShcXHUwMDI2Y3AtXFx1MDAzZW91dF9zZXEsIHRoKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NzQtXFx0XFx0dnNfc2VxX3VwZGF0ZShjcCwgXFx1MDAyNmNwLVxcdTAwM2Vpbl9zZXEsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2FwcC5jOjQ3NTpcXHRcXHRcXHQgICAgICBJUF9WU19DT05OX0ZfSU5fU0VRLCBzZXEsIGRpZmYpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19hcHAuYy00NzYtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Mzk6I2lmbmRlZiBDT05GSUdfSVBfVlNfVEFCX0JJVFNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQwOiNkZWZpbmUgQ09ORklHX0lQX1ZTX1RBQl9CSVRTXFx0MTJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQxLSNlbmRpZlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00NS0qL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDY6c3RhdGljIGludCBpcF92c19jb25uX3RhYl9iaXRzID0gQ09ORklHX0lQX1ZTX1RBQl9CSVRTO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDctbW9kdWxlX3BhcmFtX25hbWVkKGNvbm5fdGFiX2JpdHMsIGlwX3ZzX2Nvbm5fdGFiX2JpdHMsIGludCwgMDQ0NCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTU0PXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqaXBfdnNfY29ubl9jYWNoZXAgX19yZWFkX21vc3RseTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTYtLyogV2UgbmVlZCBhbiBhZGRyc3RybGVuIHRoYXQgd29ya3Mgd2l0aCBvciB3aXRob3V0IHY2ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1NzojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjU4OiNkZWZpbmUgSVBfVlNfQUREUlNUUkxFTiBJTkVUNl9BRERSU1RSTEVOXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OS0jZWxzZVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NjA6I2RlZmluZSBJUF9WU19BRERSU1RSTEVOICg4KzEpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02MS0jZW5kaWZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTg0PXN0YXRpYyB1MzIgaXBfdnNfY29ubl9oYXNoa2V5KHN0cnVjdCBpcF92c19yaHQgKnQsIGludCBhZiwgdW5zaWduZWQgaW50IHByb3RvLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxOTE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xOTItXFx0aWYgKGFmID09IEFGX0lORVQ2KSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTI2MT1zdGF0aWMgaW5saW5lIGludCBpcF92c19jb25uX2hhc2goc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yNzAtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyNzE6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9PTkVfUEFDS0VUKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMjcyLVxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoyOTM6XFx0Y3AtXFx1MDAzZWZsYWdzIHw9IElQX1ZTX0NPTk5fRl9IQVNIRUQ7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0yOTQtXFx0V1JJVEVfT05DRShjcC1cXHUwMDNlaG4wLmhhc2hfa2V5LCBoYXNoX2tleSk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTMwNi1cXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fY291bnQpIFxcdTAwM2UgdC1cXHUwMDNldV90aHJlc2ggXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjMwNzpcXHQgICAgIXRlc3RfYW5kX3NldF9iaXQoSVBfVlNfV09SS19DT05OX1JFU0laRSwgXFx1MDAyNmlwdnMtXFx1MDAzZXdvcmtfZmxhZ3MpKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzA4LVxcdFxcdG1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX2RmbF9sb25nX3dxLCBcXHUwMDI2aXB2cy1cXHUwMDNlY29ubl9yZXNpemVfd29yaywgMCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTMxNj1zdGF0aWMgaW5saW5lIGJvb2wgaXBfdnNfY29ubl91bmxpbmsoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zMjQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozMjU6XFx0aWYgKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9PTkVfUEFDS0VUKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzI2LVxcdFxcdHJldHVybiByZWZjb3VudF9kZWNfaWZfb25lKFxcdTAwMjZjcC1cXHUwMDNlcmVmY250KTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MzM5OlxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSEFTSEVEKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0zNDAtXFx0XFx0LyogRGVjcmVhc2UgcmVmY250IGFuZCB1bmxpbmsgY29ubiBvbmx5IGlmIHdlIGFyZSBsYXN0IHVzZXIgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ1LVxcdFxcdFxcdFxcdGhsaXN0X2JsX2RlbF9yY3UoXFx1MDAyNmNwLVxcdTAwM2VobjEubm9kZSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozNDY6XFx0XFx0XFx0Y3AtXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfSEFTSEVEO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzQ3LVxcdFxcdFxcdHJldCA9IHRydWU7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTM2Nz1fX2lwX3ZzX2Nvbm5faW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMzY4LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjM2OTpcXHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM3MC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHAtXFx1MDAzZWlwdnM7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM5NS1cXHRcXHRcXHRcXHQgICAgKCFwLVxcdTAwM2VjcG9ydCBeXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzozOTY6XFx0XFx0XFx0XFx0ICAgICAoIShjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTM5Ny1cXHRcXHRcXHRcXHQgICAgcC1cXHUwMDNlcHJvdG9jb2wgPT0gY3AtXFx1MDAzZXByb3RvY29sKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTQxMz1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY29ubl9pbl9nZXQoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQyOS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMDpcXHRJUF9WU19EQkdfQlVGKDksIFxcXCJsb29rdXAvaW4gJXMgJXM6JWQtXFx1MDAzZSVzOiVkICVzXFxcXG5cXFwiLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDMxLVxcdFxcdCAgICAgIGlwX3ZzX3Byb3RvX25hbWUocC1cXHUwMDNlcHJvdG9jb2wpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NDMyOlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2VjYWRkciksIG50b2hzKHAtXFx1MDAzZWNwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQzMzpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihwLVxcdTAwM2VhZiwgcC1cXHUwMDNldmFkZHIpLCBudG9ocyhwLVxcdTAwM2V2cG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy00MzQtXFx0XFx0ICAgICAgY3AgPyBcXFwiaGl0XFxcIiA6IFxcXCJub3QgaGl0XFxcIik7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTQ3NT1zdHJ1Y3QgaXBfdnNfY29ubiAqaXBfdnNfY3RfaW5fZ2V0KGNvbnN0IHN0cnVjdCBpcF92c19jb25uX3BhcmFtICpwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNDc2LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjQ3NzpcXHRERUNMQVJFX0lQX1ZTX1JIVF9XQUxLX0JVQ0tFVF9SQ1UoKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTQ3OC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHAtXFx1MDAzZWlwdnM7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUxNC1cXHRcXHRcXHRcXHQgICAgcC1cXHUwMDNlY3BvcnQgPT0gY3AtXFx1MDAzZWNwb3J0IFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1MTU6XFx0XFx0XFx0XFx0ICAgIGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTE2LVxcdFxcdFxcdFxcdCAgICBwLVxcdTAwM2Vwcm90b2NvbCA9PSBjcC1cXHUwMDNlcHJvdG9jb2wgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTI5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMwOlxcdElQX1ZTX0RCR19CVUYoOSwgXFxcInRlbXBsYXRlIGxvb2t1cC9pbiAlcyAlczolZC1cXHUwMDNlJXM6JWQgJXNcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01MzEtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1MzI6XFx0XFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cXHUwMDNlYWYsIHAtXFx1MDAzZWNhZGRyKSwgbnRvaHMocC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTMzOlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2V2YWRkciksIG50b2hzKHAtXFx1MDAzZXZwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTUzNC1cXHRcXHQgICAgICBjcCA/IFxcXCJoaXRcXFwiIDogXFxcIm5vdCBoaXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NTQzPXN0cnVjdCBpcF92c19jb25uICppcF92c19jb25uX291dF9nZXQoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnApXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01NDQte1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTQ1OlxcdERFQ0xBUkVfSVBfVlNfUkhUX1dBTEtfQlVDS0VUX1JDVSgpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTQ2LVxcdHN0cnVjdCBuZXRuc19pcHZzICppcHZzID0gcC1cXHUwMDNlaXB2cztcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTY5LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTcwOlxcdFxcdFxcdFxcdGlmIChJUF9WU19GV0RfTUVUSE9EKGNwKSAhPSBJUF9WU19DT05OX0ZfTUFTUSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNTcxLVxcdFxcdFxcdFxcdFxcdHNwb3J0ID0gY3AtXFx1MDAzZXZwb3J0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTMtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTQ6XFx0SVBfVlNfREJHX0JVRig5LCBcXFwibG9va3VwL291dCAlcyAlczolZC1cXHUwMDNlJXM6JWQgJXNcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy01OTUtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo1OTY6XFx0XFx0ICAgICAgSVBfVlNfREJHX0FERFIocC1cXHUwMDNlYWYsIHAtXFx1MDAzZWNhZGRyKSwgbnRvaHMocC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NTk3OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKHAtXFx1MDAzZWFmLCBwLVxcdTAwM2V2YWRkciksIG50b2hzKHAtXFx1MDAzZXZwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTU5OC1cXHRcXHQgICAgICBjcCA/IFxcXCJoaXRcXFwiIDogXFxcIm5vdCBoaXRcXFwiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9NjIwPXN0YXRpYyB2b2lkIF9faXBfdnNfY29ubl9wdXRfdGltZXIoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjIxLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjYyMjpcXHR1bnNpZ25lZCBsb25nIHQgPSAoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX09ORV9QQUNLRVQpID9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYyMy1cXHRcXHQwIDogY3AtXFx1MDAzZXRpbWVvdXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTYyOT12b2lkIGlwX3ZzX2Nvbm5fcHV0KHN0cnVjdCBpcF92c19jb25uICpjcClcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYzMC17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2MzE6XFx0aWYgKChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfT05FX1BBQ0tFVCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTYzMi1cXHQgICAgKHJlZmNvdW50X3JlYWQoXFx1MDAyNmNwLVxcdTAwM2VyZWZjbnQpID09IDEpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jPTY0Mz12b2lkIGlwX3ZzX2Nvbm5fZmlsbF9jcG9ydChzdHJ1Y3QgaXBfdnNfY29ubiAqY3AsIF9fYmUxNiBjcG9ydClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjg0LVxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2Y3AtXFx1MDAzZWxvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6Njg1OlxcdFxcdFxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXFx1MDAyNlxcdTAwMjYgYnlfbWUpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02ODYtXFx0XFx0XFx0XFx0Y3AtXFx1MDAzZWNwb3J0ID0gMDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNjg4LVxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjcC1cXHUwMDNlbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo2ODk6XFx0XFx0XFx0SVBfVlNfRVJSX1JMKFxcXCIlcygpOiBUb28gbWFueSBodCBjaGFuZ2VzIGZvciBkaXIgJWRcXFxcblxcXCIsXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy02OTAtXFx0XFx0XFx0XFx0ICAgICBfX2Z1bmNfXywgZGlyKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNzU3LVxcdC8qIEZpbGwgY3BvcnQgb25jZSwgZXZlbiBpZiBtdWx0aXBsZSBwYWNrZXRzIHRyeSB0byBkbyBpdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzU4OlxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQgXFx1MDAyNlxcdTAwMjYgKCFjcC1cXHUwMDNlY3BvcnQgfHwgYnlfbWUpKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy03NTktXFx0XFx0LyogSWYgd2UgcmFjZSB3aXRoIHJlc2l6aW5nIG1ha2Ugc3VyZSBjcG9ydCBpcyBzZXQgZm9yIGRpciAxICovXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTc2NS1cXHRcXHRcXHRhdG9taWNfZGVjKFxcdTAwMjZpcHZzLVxcdTAwM2Vub19jcG9ydF9jb25uc1thZl9pZF0pO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6NzY2OlxcdFxcdFxcdGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+SVBfVlNfQ09OTl9GX05PX0NQT1JUO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtNzY3LVxcdFxcdH1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9Nzk3PXN0YXRpYyB2b2lkIGlwX3ZzX2Nvbm5fY2hhbmdlX2Z3ZF9tYXNrKHN0cnVjdCBpcF92c19jb25uICpjcCwgdTMyIG5ld19mbGFncylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODA0LVxcdC8qIFNlZSBpcF92c19jb25uX3VzZV9oYXNoMigpIGZvciByZWZlcmVuY2UgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjgwNTpcXHRpZiAoKGNwLVxcdTAwM2VmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkgfHxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTgwNi1cXHQgICAgLyogTm8gY2hhbmdlIGluIGRvdWJsZSBoYXNoaW5nID8gKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjgwNzpcXHQgICAgKElQX1ZTX0ZXRF9NRVRIT0QoY3ApID09IElQX1ZTX0NPTk5fRl9NQVNRKSA9PVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODA4OlxcdCAgICAoKG5ld19mbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9GV0RfTUFTSykgPT0gSVBfVlNfQ09OTl9GX01BU1EpKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04MDktXFx0XFx0Y3AtXFx1MDAzZWZsYWdzID0gbmV3X2ZsYWdzO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04NjY9aW50IGlwX3ZzX2Nvbm5fZGVzaXJlZF9zaXplKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3QgaXBfdnNfcmh0ICp0LFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04NjktXFx0cmV0dXJuIGlwX3ZzX3JodF9kZXNpcmVkX3NpemUoaXB2cywgdCwgYXRvbWljX3JlYWQoXFx1MDAyNmlwdnMtXFx1MDAzZWNvbm5fY291bnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6ODcwOlxcdFxcdFxcdFxcdCAgICAgIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODcxLVxcdFxcdFxcdFxcdCAgICAgIGlwX3ZzX2Nvbm5fdGFiX2JpdHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz04NzU9c3RydWN0IGlwX3ZzX3JodCAqaXBfdnNfY29ubl90YWJfYWxsb2Moc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBidWNrZXRzLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODItXFx0c2NvdW50cyA9IGNsYW1wKGJ1Y2tldHMgXFx1MDAzZVxcdTAwM2UgNiwgMSwgMjU2KTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjg4MzpcXHQvKiBsb2NrczogYmFzZWQgb24gcGFyYWxsZWwgSVBfVlNfQ09OTl9GX05PX0NQT1JUIG9wZXJhdGlvbnMgKyByZXNpemUgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTg4NC1cXHRsb2NrcyA9IGNsYW1wKDgsIDEsIHNjb3VudHMpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy04ODktXFx0dC1cXHUwMDNlbGZhY3RvciA9IGxmYWN0b3I7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzo4OTA6XFx0aXBfdnNfcmh0X3NldF90aHJlc2hvbGRzKHQsIHQtXFx1MDAzZXNpemUsIGxmYWN0b3IsIElQX1ZTX0NPTk5fVEFCX01JTl9CSVRTLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtODkxLVxcdFxcdFxcdFxcdCBpcF92c19jb25uX3RhYl9iaXRzKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9ODk2PXN0YXRpYyB2b2lkIGNvbm5fcmVzaXplX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTkxNC1cXHQvKiBBbGxvdyB3b3JrIHRvIGJlIHF1ZXVlZCBhZ2FpbiAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6OTE1OlxcdGNsZWFyX2JpdChJUF9WU19XT1JLX0NPTk5fUkVTSVpFLCBcXHUwMDI2aXB2cy1cXHUwMDNld29ya19mbGFncyk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MTYtXFx0dCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoaXB2cy1cXHUwMDNlY29ubl90YWIsIDEpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy05MzUtXFx0LyogRmxpcCB0aGUgdGFibGVfaWQgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjkzNjpcXHR0X25ldy1cXHUwMDNldGFibGVfaWQgPSB0LVxcdTAwM2V0YWJsZV9pZCBeIElQX1ZTX1JIVF9UQUJMRV9JRF9NQVNLO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtOTM3LVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMDIzPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c19iaW5kX3htaXQoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTAyNC17XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDI1OlxcdHN3aXRjaCAoSVBfVlNfRldEX01FVEhPRChjcCkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMjY6XFx0Y2FzZSBJUF9WU19DT05OX0ZfTUFTUTpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjctXFx0XFx0Y3AtXFx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbmF0X3htaXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwMjktXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDMwOlxcdGNhc2UgSVBfVlNfQ09OTl9GX1RVTk5FTDpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwMzE6I2lmZGVmIENPTkZJR19JUF9WU19JUFY2XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDMyLVxcdFxcdGlmIChjcC1cXHUwMDNlZGFmID09IEFGX0lORVQ2KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDM4LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTAzOTpcXHRjYXNlIElQX1ZTX0NPTk5fRl9EUk9VVEU6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQwLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2RyX3htaXQ7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDItXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMDQzOlxcdGNhc2UgSVBfVlNfQ09OTl9GX0xPQ0FMTk9ERTpcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNDQtXFx0XFx0Y3AtXFx1MDAzZXBhY2tldF94bWl0ID0gaXBfdnNfbnVsbF94bWl0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ2LVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA0NzpcXHRjYXNlIElQX1ZTX0NPTk5fRl9CWVBBU1M6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDQ4LVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX2J5cGFzc194bWl0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDUyLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1MzojaWZkZWYgQ09ORklHX0lQX1ZTX0lQVjZcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEwNTQtc3RhdGljIGlubGluZSB2b2lkIGlwX3ZzX2JpbmRfeG1pdF92NihzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDU1LXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNTY6XFx0c3dpdGNoIChJUF9WU19GV0RfTUVUSE9EKGNwKSkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA1NzpcXHRjYXNlIElQX1ZTX0NPTk5fRl9NQVNROlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA1OC1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19uYXRfeG1pdF92NjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2MC1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNjE6XFx0Y2FzZSBJUF9WU19DT05OX0ZfVFVOTkVMOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Mi1cXHRcXHRpZiAoY3AtXFx1MDAzZWRhZiA9PSBBRl9JTkVUNilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNjg6XFx0Y2FzZSBJUF9WU19DT05OX0ZfRFJPVVRFOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA2OS1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19kcl94bWl0X3Y2O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDcxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTA3MjpcXHRjYXNlIElQX1ZTX0NPTk5fRl9MT0NBTE5PREU6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMDczLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IGlwX3ZzX251bGxfeG1pdDtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3NS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEwNzY6XFx0Y2FzZSBJUF9WU19DT05OX0ZfQllQQVNTOlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTA3Ny1cXHRcXHRjcC1cXHUwMDNlcGFja2V0X3htaXQgPSBpcF92c19ieXBhc3NfeG1pdF92NjtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTA4OT1pcF92c19iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwLCBzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEwMi1cXHRpZiAoY3AtXFx1MDAzZXByb3RvY29sICE9IElQUFJPVE9fVURQKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwMzpcXHRcXHRjb25uX2ZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfT05FX1BBQ0tFVDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDQtXFx0ZmxhZ3MgPSBjcC1cXHUwMDNlZmxhZ3M7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA1LVxcdC8qIEJpbmQgd2l0aCB0aGUgZGVzdGluYXRpb24gYW5kIGl0cyBjb3JyZXNwb25kaW5nIHRyYW5zbWl0dGVyICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTA2OlxcdGlmIChmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9TWU5DKSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTA3LVxcdFxcdC8qIFN5bmNlZCBjb25ucyBhcmUgaGFzaGVkLCBzbyB0aGV5IGNhbiBub3QgZ2V0IHRoaXMgZmxhZyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEwODpcXHRcXHRjb25uX2ZsYWdzIFxcdTAwMjY9IH5JUF9WU19DT05OX0ZfT05FX1BBQ0tFVDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMDktXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMTItXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTEzOlxcdFxcdGlmICghKGZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSlcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjExMTQ6XFx0XFx0XFx0Y29ubl9mbGFncyBcXHUwMDI2PSB+SVBfVlNfQ09OTl9GX0lOQUNUSVZFO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTExNS1cXHRcXHQvKiBjb25uZWN0aW9ucyBpbmhlcml0IGZvcndhcmRpbmcgbWV0aG9kIGZyb20gZGVzdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTExNjpcXHRcXHRmbGFncyBcXHUwMDI2PSB+KElQX1ZTX0NPTk5fRl9GV0RfTUFTSyB8IElQX1ZTX0NPTk5fRl9OT09VVFBVVCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTE3LVxcdFxcdGZsYWdzIHw9IGNvbm5fZmxhZ3M7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMjAtXFx0XFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTIxOlxcdFxcdGlmIChjcC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfSEFTSEVEKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEyMi1cXHRcXHRcXHRpcF92c19jb25uX2NoYW5nZV9md2RfbWFzayhjcCwgZmxhZ3MpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTMwLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTEzMTpcXHRJUF9WU19EQkdfQlVGKDcsIFxcXCJCaW5kLWRlc3QgJXMgYzolczolZCB2OiVzOiVkIFxcXCJcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExMzItXFx0XFx0ICAgICAgXFxcImQ6JXM6JWQgZndkOiVjIHM6JXUgY29ubi1cXHUwMDNlZmxhZ3M6JVggY29ubi1cXHUwMDNlcmVmY250OiVkIFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzNC1cXHRcXHQgICAgICBpcF92c19wcm90b19uYW1lKGNwLVxcdTAwM2Vwcm90b2NvbCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM1OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2VjYWRkciksIG50b2hzKGNwLVxcdTAwM2VjcG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM2OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VhZiwgXFx1MDAyNmNwLVxcdTAwM2V2YWRkciksIG50b2hzKGNwLVxcdTAwM2V2cG9ydCksXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMTM3OlxcdFxcdCAgICAgIElQX1ZTX0RCR19BRERSKGNwLVxcdTAwM2VkYWYsIFxcdTAwMjZjcC1cXHUwMDNlZGFkZHIpLCBudG9ocyhjcC1cXHUwMDNlZHBvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTEzOC1cXHRcXHQgICAgICBpcF92c19md2RfdGFnKGNwKSwgY3AtXFx1MDAzZXN0YXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQyLVxcdC8qIFVwZGF0ZSB0aGUgY29ubmVjdGlvbiBjb3VudGVycyAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE0MzpcXHRpZiAoIShmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9URU1QTEFURSkpIHtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTExNDQtXFx0XFx0aW50IHRjO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTQ5LVxcdFxcdCAqL1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTE1MDpcXHRcXHRpZiAoIShmbGFncyBcXHUwMDI2IElQX1ZTX0NPTk5fRl9JTkFDVElWRSkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMTUxLVxcdFxcdFxcdGF0b21pY19pbmMoXFx1MDAyNmRlc3QtXFx1MDAzZWFjdGl2ZWNvbm5zKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM9MTE2Nz12b2lkIGlwX3ZzX3RyeV9iaW5kX2Rlc3Qoc3RydWN0IGlwX3ZzX2Nvbm4gKmNwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjAwLVxcdFxcdGNwLVxcdTAwM2VwYWNrZXRfeG1pdCA9IE5VTEw7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjAxOiNpZmRlZiBDT05GSUdfSVBfVlNfSVBWNlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIwMi1cXHRcXHRpZiAoY3AtXFx1MDAzZWFmID09IEFGX0lORVQ2KVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYz0xMjIwPXN0YXRpYyBpbmxpbmUgdm9pZCBpcF92c191bmJpbmRfZGVzdChzdHJ1Y3QgaXBfdnNfY29ubiAqY3ApXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMjYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYzoxMjI3OlxcdElQX1ZTX0RCR19CVUYoNywgXFxcIlVuYmluZC1kZXN0ICVzIGM6JXM6JWQgdjolczolZCBcXFwiXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYy0xMjI4LVxcdFxcdCAgICAgIFxcXCJkOiVzOiVkIGZ3ZDolYyBzOiV1IGNvbm4tXFx1MDAzZWZsYWdzOiVYIGNvbm4tXFx1MDAzZXJlZmNudDolZCBcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzAtXFx0XFx0ICAgICAgaXBfdnNfcHJvdG9fbmFtZShjcC1cXHUwMDNlcHJvdG9jb2wpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMTpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlYWYsIFxcdTAwMjZjcC1cXHUwMDNlY2FkZHIpLCBudG9ocyhjcC1cXHUwMDNlY3BvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMjpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlYWYsIFxcdTAwMjZjcC1cXHUwMDNldmFkZHIpLCBudG9ocyhjcC1cXHUwMDNldnBvcnQpLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmM6MTIzMzpcXHRcXHQgICAgICBJUF9WU19EQkdfQUREUihjcC1cXHUwMDNlZGFmLCBcXHUwMDI2Y3AtXFx1MDAzZWRhZGRyKSwgbnRvaHMoY3AtXFx1MDAzZWRwb3J0KSxcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jLTEyMzQtXFx0XFx0ICAgICAgaXBfdnNfZndkX3RhZyhjcCksIGNwLVxcdTAwM2VzdGF0ZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMtMTIzOC1cXHQvKiBVcGRhdGUgdGhlIGNvbm5lY3Rpb24gY291bnRlcnMgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jOjEyMzk6XFx0aWYgKCEoY3AtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSVBfVlNfQ09OTl9GX1RFTVBMQVRFKSkge1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTozOC4yMDczMzY5MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA4OTA4NjE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb3IgY29udGV4dCBzdXJyb3VuZGluZyB0aGUgYElQX1ZTYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNvbnN1bHQgdGhlIHNvdXJjZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbG9vayBpbnRvIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlc2Uga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB1c3VhbGx5IGxpdmUsIGFuZCBpdCdzIHRoZSByaWdodCBwbGFjZSB0byBmaW5kIGFueSBkZXBlbmRlbmNpZXMgdGhpcyBvcHRpb24gbWlnaHQgaGF2ZS4gQnkgZXhhbWluaW5nIHRoYXQgS2NvbmZpZyBmaWxlLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIG9yIGluIHBsYWNlIGZvciBgSVBfVlNgIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBUaGlzIGlzIHN0YW5kYXJkIHByb2NlZHVyZSB3aGVuIGRpZ2dpbmcgaW50byBrZXJuZWwgY29uZmlncy4gSXQncyBhYm91dCBidWlsZGluZyBhIG1lbnRhbCBtYXAgb2YgdGhlIGZlYXR1cmUncyByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTE2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6NDAuMjk2NDI1ODZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1Mzc4MzkzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy00LSNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzo1Om1lbnVjb25maWcgSVBfVlNcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9Mjg2PWNvbW1lbnQgJ0lQVlMgU0ggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4Ny1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzoyODg6Y29uZmlnIElQX1ZTX1NIX1RBQl9CSVRTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVxcdGludCBcXFwiSVBWUyBzb3VyY2UgaGFzaGluZyB0YWJsZSBzaXplICh0aGUgTnRoIHBvd2VyIG9mIDIpXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc9MzAxPWNvbW1lbnQgJ0lQVlMgTUggc2NoZWR1bGVyJ1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwMi1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZzozMDM6Y29uZmlnIElQX1ZTX01IX1RBQl9JTkRFWFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cXHRpbnQgXFxcIklQVlMgbWFnbGV2IGhhc2hpbmcgdGFibGUgaW5kZXggb2Ygc2l6ZSAodGhlIHByaW1lIG51bWJlcnMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0MC40NTAyMTUzMzhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0ODcxODMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb25maWd1cmF0aW9uIGZpbGU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgSVBWUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IElQVlMgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJJ2xsIGZvY3VzIG9uIGxpbmVzIDEgdGhyb3VnaCAyNi4gVGhpcyBzZWN0aW9uIGxpa2VseSBkZWZpbmVzIHRoZSBjb3JlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyByZWxhdGVkIHRvIElQVlMgaXRzZWxmLCBiZWZvcmUgZ2V0dGluZyBpbnRvIG1vcmUgc3BlY2lmaWMgZmVhdHVyZXMuIEknbSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGJ1aWxkaW5nIGJsb2NrcyAtIHRoaW5ncyBsaWtlIHdoZXRoZXIgaXQncyBtb2R1bGFyLCBpZiBpdCBkZXBlbmRzIG9uIHNwZWNpZmljIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBgQ09ORklHX0lQX1ZTYCBvcHRpb24sIGFuZCBob3BlZnVsbHksIHNvbWUgY29tbWVudGFyeSB0aGF0IGNsYXJpZmllcyB0aGUgaW50ZW50aW9uIG9mIHRoZSBzZXR0aW5ncy4gVGhpcyBpbml0aWFsIGJsb2NrIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBmcmFtZXdvcmsgdG8gdW5kZXJzdGFuZCB0aGUgc3Vic2VxdWVudCwgbW9yZSBncmFudWxhciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHNlZSB3aGF0J3MgaW4gc3RvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDA5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MTk6NDIuNTk4OTM1ODY1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIElQIFZpcnR1YWwgU2VydmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdG1lbnVjb25maWcgSVBfVlNcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJJUCB2aXJ0dWFsIHNlcnZlciBzdXBwb3J0XFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiAoTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDSz1uKVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJUCBWaXJ0dWFsIFNlcnZlciBzdXBwb3J0IHdpbGwgbGV0IHlvdSBidWlsZCBhIGhpZ2gtcGVyZm9ybWFuY2VcXG4gIDExOlxcdFxcdCAgdmlydHVhbCBzZXJ2ZXIgYmFzZWQgb24gY2x1c3RlciBvZiB0d28gb3IgbW9yZSByZWFsIHNlcnZlcnMuIFRoaXNcXG4gIDEyOlxcdFxcdCAgb3B0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZSBjbHVzdGVyZWQgY29tcHV0ZXJzXFxuICAxMzpcXHRcXHQgIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2YgaW50ZXJjZXB0aW5nIGluY29taW5nIGNvbm5lY3Rpb25zIHRvIGFcXG4gIDE0OlxcdFxcdCAgc2luZ2xlIElQIGFkZHJlc3MgYW5kIHNjaGVkdWxpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgVGhyZWUgcmVxdWVzdCBkaXNwYXRjaGluZyB0ZWNobmlxdWVzIGFyZSBpbXBsZW1lbnRlZCwgdGhleSBhcmVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBzZXJ2ZXIgdmlhIE5BVCwgdmlydHVhbCBzZXJ2ZXIgdmlhIHR1bm5lbGluZyBhbmQgdmlydHVhbFxcbiAgMTg6XFx0XFx0ICBzZXJ2ZXIgdmlhIGRpcmVjdCByb3V0aW5nLiBUaGUgc2V2ZXJhbCBzY2hlZHVsaW5nIGFsZ29yaXRobXMgY2FuXFxuICAxOTpcXHRcXHQgIGJlIHVzZWQgdG8gY2hvb3NlIHdoaWNoIHNlcnZlciB0aGUgY29ubmVjdGlvbiBpcyBkaXJlY3RlZCB0byxcXG4gIDIwOlxcdFxcdCAgdGh1cyBsb2FkIGJhbGFuY2luZyBjYW4gYmUgYWNoaWV2ZWQgYW1vbmcgdGhlIHNlcnZlcnMuICBGb3IgbW9yZVxcbiAgMjE6XFx0XFx0ICBpbmZvcm1hdGlvbiBhbmQgaXRzIGFkbWluaXN0cmF0aW9uIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB0aGVcXG4gIDIyOlxcdFxcdCAgZm9sbG93aW5nIFVSTDogXFx1MDAzY2h0dHA6Ly93d3cubGludXh2aXJ0dWFsc2VydmVyLm9yZy9cXHUwMDNlLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRcXHQgIElmIHlvdSB3YW50IHRvIGNvbXBpbGUgaXQgaW4ga2VybmVsLCBzYXkgWS4gVG8gY29tcGlsZSBpdCBhcyBhXFxuICAyNTpcXHRcXHQgIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0aWYgSVBfVlNcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnXFx0SVBfVlNfSVBWNlxcbiAgMzA6XFx0XFx0Ym9vbCBcXFwiSVB2NiBzdXBwb3J0IGZvciBJUFZTXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0Mi41OTkwMTI3MDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjUyNzUwMzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFuYWx5c2lzIGZvciBJUFZTIFRpbWVyIENoYW5nZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBJUF9WU2AgZGVwZW5kcyBvbiBgSU5FVGAgYW5kIGBORVRGSUxURVJgLCBzbyBpdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IHRoZSBgdGltZXJfZGVsZXRlX3N5bmNgIHRvIGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBjaGFuZ2UgaW4gYGlwX3ZzX3RyYXNoX2NsZWFudXBgLCBpcyB3b3J0aCB0aGUgZnV6emluZyBlZmZvcnQuXG5cblRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBhcmUgY2xlYXI6IHJlYWNoYWJpbGl0eSBpcyBraW5nLiBDYW4gdGhpcyBjb2RlIGFjdHVhbGx5ICpydW4qIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IExldCdzIGNoZWNrIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSB0byBydWxlIG91dCBvYnZpb3VzIG5vLWdvcywgbGlrZSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS5cblxuU28sIGlzIGBpcF92c190cmFzaF9jbGVhbnVwYCByZWFjaGFibGU/IFllcywgaXQgaXMgY2FsbGVkIGR1cmluZyBuZXRucyBkZXN0cnVjdGlvbiB2aWEgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYF9faXBfdnNfY2xlYW51cF9iYXRjaGAuIEV4Y2VsbGVudCEgTmV0bnMgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGFyZSAqY29tbW9uKiBpbiBzeXprYWxsZXIgZnV6emluZywgc28gd2UgaGF2ZSBhIGdvb2QgcGF0aC5cblxuVGhlIGZhY3QgdGhhdCB0aGlzIHBhdGNoIGRlYWxzIHdpdGggdGltZXIgc2h1dGRvd24gdmVyc3VzIGRlbGV0aW9uIGlzIGludGVyZXN0aW5nLiBUaGlzIHN1YnRsZSBjaGFuZ2UgY291bGQgdHJpZ2dlciByYWNlIGNvbmRpdGlvbnMsIG9yIGludGVyYWN0IHdpdGggdGltZXIgcmVhcm1pbmcgb3IgdGhlIHRpbWVyIGxpZmVjeWNsZSwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZXhpc3RpbmcgZGVzdCB0cmFzaCBleHBpcmF0aW9uIChgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgKSBhbmQgbmV0bnMgY2xlYW51cCBpbnRlcmFjdGlvbi4gV2UgaGF2ZSB0byBzZWUgaWYgcmUtYXJtaW5nIGEgc2h1dC1kb3duIHRpbWVyIHdpbGwgdHJpcCBzb21lIHN1YnN5c3RlbSBjaGVja3Mgb3IgY2F1c2UgYSB3YXJuaW5nLiBMZXQncyBjaGVjayBpZiBgbW9kX3RpbWVyYCBvbiBzaHV0IGRvd24gdGltZXIgcHJvZHVjZXMgYSB3YXJuaW5nIG9yIGludGVyYWN0cyB3aXRoIGBpcF92c190cmFzaF9wdXRfZGVzdGAuXG5cbkxldCdzIGxvb2sgYXQgYGlwX3ZzX3RyYXNoX3B1dF9kZXN0YC4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhlIGBtb2RfdGltZXJgIGNhbGwsIHdoaWNoIGhhcHBlbnMgb25seSBpZiBgaXB2cy1cdTAwM2VkZXN0X3RyYXNoYCBpcyBlbXB0eSBhbmQgYGNsZWFudXBgIGlzIGZhbHNlLiBJZiB0aGVyZSdzIGEgcmFjZSBiZXR3ZWVuIGNsZWFudXAgYW5kIHRoZSB0aW1lciByZWFybWluZyAob3IgbGFjayBvZiksIHRoaW5ncyBjb3VsZCBnZXQgaW50ZXJlc3RpbmcuXG5cblNvLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpcyBpbiBjb3JlIG5ldHdvcmtpbmcvbmV0ZmlsdGVyIGNvZGUgKGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgKSBhbmQgaXMgY29tcGxldGVseSByZWFjaGFibGUgaW4gb3VyIHRhcmdldCBlbnZpcm9ubWVudHMuXG5cbk5vdywgZm9yIGZvY3VzIHN5bWJvbHMuIFdlIGhhdmU6XG5cbiogICBgaXBfdnNfdHJhc2hfY2xlYW51cGAgKHRoZSBtYWluIHRhcmdldCBvZiB0aGUgcGF0Y2gpXG4qICAgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgICh3aGljaCBjYWxscyBpdCBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cClcbiogICBgaXBfdnNfdHJhc2hfcHV0X2Rlc3RgIChoYW5kbGVzIHB1dHRpbmcgZGVzdGluYXRpb25zIGluIHRoZSB0cmFzaCwgYW5kIHBvdGVudGlhbGx5IHJlLWFybXMgdGhlIHRpbWVyKVxuKiAgIGBpcF92c19kZXN0X3RyYXNoX2V4cGlyZWAgKHRoZSB0aW1lciBleHBpcmF0aW9uIGZ1bmN0aW9uKVxuKiAgIGBpcF92c19jb250cm9sX25ldF9pbml0YCAoaW5pdCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSlcblxuYGlwX3ZzX3RyYXNoX2NsZWFudXBgIGlzIHN0YXRpYywgYnV0IGBpcF92c19jb250cm9sX25ldF9jbGVhbnVwYCBpcyBjYWxsZWQgZnJvbSBgaXBfdnNfY29yZS5jYC4gV2UgY2FuIGluY2x1ZGUgdGhlbSBhbGwgaW4gdGhlIGZvY3VzIHN5bWJvbCBsaXN0LlxuXG5MZXQncyBkb3VibGUtY2hlY2sgYGlwX3ZzX2N0bC5jYCBmb3IgYW55IG90aGVyIGBkZXN0X3RyYXNoYCByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBXZSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIHRoaW5rIHdlIGhhdmUgZXZlcnl0aGluZyBjb3ZlcmVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0OS4xMjY1MjA4OTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMjI4OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlc3RfdHJhc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYz0xMTA4PWlwX3ZzX3RyYXNoX2dldF9kZXN0KHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsIGludCBkZXN0X2FmLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExMTYtXFx0ICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExMTc6XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTE4OlxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGVzdCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTE5LVxcdFxcdElQX1ZTX0RCR19CVUYoMywgXFxcIkRlc3RpbmF0aW9uICV1LyVzOiV1IHN0aWxsIGluIHRyYXNoLCBcXFwiXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE0MS1vdXQ6XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNDI6XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNDMtXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE0OD1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9wdXRfZGVzdChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTUxLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE1MjpcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTMtXFx0SVBfVlNfREJHX0JVRigzLCBcXFwiTW92aW5nIGRlc3QgJXM6JXUgaW50byB0cmFzaCwgZGVzdC1cXHUwMDNlcmVmY250PSVkXFxcXG5cXFwiLFxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNTUtXFx0XFx0ICAgICAgcmVmY291bnRfcmVhZChcXHUwMDI2ZGVzdC1cXHUwMDNlcmVmY250KSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExNTY6XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gpIFxcdTAwMjZcXHUwMDI2ICFjbGVhbnVwKVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxMTU3OlxcdFxcdG1vZF90aW1lcihcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcixcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE1OC1cXHRcXHRcXHQgIGppZmZpZXMgKyAoSVBfVlNfREVTVF9UUkFTSF9QRVJJT0QgXFx1MDAzZVxcdTAwM2UgMSkpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTU5LVxcdC8qIGRlc3QgbGl2ZXMgaW4gdHJhc2ggd2l0aCByZWZlcmVuY2UgKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MDpcXHRsaXN0X2FkZChcXHUwMDI2ZGVzdC1cXHUwMDNldF9saXN0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExNjEtXFx0ZGVzdC1cXHUwMDNlaWRsZV9zdGFydCA9IGlzdGFydDtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MTE2MjpcXHRzcGluX3VubG9ja19iaChcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTE2My19XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9MTE5MT1zdGF0aWMgdm9pZCBpcF92c190cmFzaF9jbGVhbnVwKHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTExOTQtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTU6XFx0dGltZXJfc2h1dGRvd25fc3luYyhcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTY6XFx0LyogTm8gbmVlZCB0byB1c2UgZGVzdF90cmFzaF9sb2NrICovXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjExOTc6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xMTk4LVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZkZXN0LVxcdTAwM2V0X2xpc3QpO1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTE2OTQ9aXBfdnNfZGVsX2Rlc3Qoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2Yywgc3RydWN0IGlwX3ZzX2Rlc3RfdXNlcl9rZXJuICp1ZGVzdClcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIxLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzIyOnN0YXRpYyB2b2lkIGlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzIzLXtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMTcyNC1cXHRzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cyA9IHRpbWVyX2NvbnRhaW5lcl9vZihpcHZzLCB0LFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzI1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZGVzdF90cmFzaF90aW1lcik7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjYtXFx0c3RydWN0IGlwX3ZzX2Rlc3QgKmRlc3QsICpuZXh0O1xcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MjgtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3Mjk6XFx0c3Bpbl9sb2NrKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzMwOlxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBuZXh0LCBcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3MzEtXFx0XFx0aWYgKHJlZmNvdW50X3JlYWQoXFx1MDAyNmRlc3QtXFx1MDAzZXJlZmNudCkgXFx1MDAzZSAxKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NDctXFx0fVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzoxNzQ4OlxcdGlmICghbGlzdF9lbXB0eShcXHUwMDI2aXB2cy1cXHUwMDNlZGVzdF90cmFzaCkpXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NDk6XFx0XFx0bW9kX3RpbWVyKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYy0xNzUwLVxcdFxcdFxcdCAgamlmZmllcyArIChJUF9WU19ERVNUX1RSQVNIX1BFUklPRCBcXHUwMDNlXFx1MDAzZSAxKSk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjE3NTE6XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfbG9jayk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTE3NTItfVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jPTIxMTk9c3RhdGljIHZvaWQgaXBfdnNfdW5saW5rX3NlcnZpY2Uoc3RydWN0IGlwX3ZzX3NlcnZpY2UgKnN2YywgYm9vbCBjbGVhbnVwKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTIxMjEtXFx0aXBfdnNfdW5yZWdpc3Rlcl9jb25udHJhY2soc3ZjKTtcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM6MjEyMjpcXHQvKiBIb2xkIHN2YyB0byBhdm9pZCBkb3VibGUgcmVsZWFzZSBmcm9tIGRlc3RfdHJhc2ggKi9cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMtMjEyMy1cXHRhdG9taWNfaW5jKFxcdTAwMjZzdmMtXFx1MDAzZXJlZmNudCk7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmM9NTIzMD1pbnQgX19uZXRfaW5pdCBpcF92c19jb250cm9sX25ldF9pbml0KHN0cnVjdCBuZXRuc19pcHZzICppcHZzKVxcbi0tXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNDYtXFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jOjUyNDc6XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gpO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ4OlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX2xvY2spO1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYzo1MjQ5OlxcdHRpbWVyX3NldHVwKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyLCBpcF92c19kZXN0X3RyYXNoX2V4cGlyZSwgMCk7XFxubmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jLTUyNTAtXFx0Zm9yIChpZHggPSAwOyBpZHggXFx1MDAzYyBJUF9WU19BRl9NQVg7IGlkeCsrKSB7XFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jPTMxNj1fX2lwX3ZzX2dldF9vdXRfcnQoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIGludCBza2JfYWYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTM1MC1cXHRcXHRcXHQgKiBkZXZpY2UgaXMgZ29pbmcgZG93biBvciBpZiBzZXJ2ZXIgaXMgcmVtb3ZlZCBhbmRcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jOjM1MTpcXHRcXHRcXHQgKiBzdG9yZWQgaW4gZGVzdF90cmFzaC5cXG5uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfeG1pdC5jLTM1Mi1cXHRcXHRcXHQgKi9cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM9NDg5PV9faXBfdnNfZ2V0X291dF9ydF92NihzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgaW50IHNrYl9hZiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNTI5LVxcdFxcdFxcdCAqIGRldmljZSBpcyBnb2luZyBkb3duIG9yIGlmIHNlcnZlciBpcyByZW1vdmVkIGFuZFxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmM6NTMwOlxcdFxcdFxcdCAqIHN0b3JlZCBpbiBkZXN0X3RyYXNoLlxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c194bWl0LmMtNTMxLVxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoxOTo0OS4xOTc3NTQ5NTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjEyNDgyNjM2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQVlMgQ29uZmlndXJhdGlvbiBhbmQgQ29kZSBQYXRoKipcblxuT2theSwgbGV0J3MgbmFpbCB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbnMuICpJUF9WUyogaXMgZGVmaW5pdGVseSBsb2NhdGVkIGluIGBuZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZ2AsIHNvIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE15IGRlcGVuZGVuY2llcyBjaGVjayBjb25maXJtcyBpdCByZXF1aXJlcyBib3RoICpJTkVUKiBhbmQgKk5FVEZJTFRFUiouIFRodXMsIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gc2V0IEkgbmVlZCB0byBjb25zaWRlciBpcyBgW1wiSVBfVlNcIiwgXCJORVRGSUxURVJcIiwgXCJJTkVUXCJdYC4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBzeW1ib2xzIGFmZmVjdGVkIGJ5IHRoZSBwYXRjaC4gSSBuZWVkIHRvIGZvY3VzIG9uIGBpcF92c190cmFzaF9jbGVhbnVwYCwgYGlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBgLCBgaXBfdnNfZGVzdF90cmFzaF9leHBpcmVgLCBhbmQgYGlwX3ZzX3RyYXNoX3B1dF9kZXN0YC4gVGhlc2UgYXJlIGNsZWFybHkga2V5LCBhbmQgd2FycmFudCBjYXJlZnVsIGV4YW1pbmF0aW9uIG9mIHRoZSBjb2RlIGFyb3VuZCB0aGVtLlxuXG5TbywgSSdtIGNvbmZpZGVudCBhYm91dCB0aGVzZSBmYWN0czpcbiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZSAoQWJzb2x1dGVseSwgd2UgbmVlZCB0byB0ZXN0IHRoaXMpXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiSVBfVlNcIiwgXCJORVRGSUxURVJcIiwgXCJJTkVUXCJdYCAoQmFzZWQgb24gdGhlIGRlcGVuZGVuY2llcywgdGhlc2UgYXJlIHRoZSBtaW5pbXVtcylcbiogICBgRm9jdXNTeW1ib2xzYDogYFtcImlwX3ZzX3RyYXNoX2NsZWFudXBcIiwgXCJpcF92c19jb250cm9sX25ldF9jbGVhbnVwXCIsIFwiaXBfdnNfZGVzdF90cmFzaF9leHBpcmVcIiwgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXWAgKFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29kZSBhcmVhcyB0aGF0IGNoYW5nZWQpLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkLCBpdCBjZW50ZXJzIG9uIHRoZSBwYXRjaCdzIG1vZGlmaWNhdGlvbiBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIElQVlMuIFRoaXMgaXMgd2hlcmUgYHRpbWVyX2RlbGV0ZV9zeW5jYCBpcyBiZWluZyByZXBsYWNlZCBieSBgdGltZXJfc2h1dGRvd25fc3luY2Agb24gYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAuIFRoaXMgaXMgYWJvdXQgdGltZXIgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IGRlYWN0aXZhdGlvbiBhbmQgc2h1dGRvd24gZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIHRlYXJkb3duIGluIHRoZSBJUFZTIG5ldGZpbHRlciBtb2R1bGUuIFRoaXMgaXMgY3JpdGljYWwgZm9yIHZpcnR1YWwgZW52aXJvbm1lbnRzIGFuZCBuZXR3b3JrIG5hbWVzcGFjZSBsaWZlIGN5Y2xlcywgYW5kIElQVlMgb3BlcmF0aW9ucyBjYW4gY2VydGFpbmx5IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGguXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU3MTcsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjQ0NjAyMjQyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjY0MjYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5FVEZJTFRFUlwiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwX3ZzX3RyYXNoX2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2NvbnRyb2xfbmV0X2NsZWFudXBcIixcbiAgICBcImlwX3ZzX2Rlc3RfdHJhc2hfZXhwaXJlXCIsXG4gICAgXCJpcF92c190cmFzaF9wdXRfZGVzdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB0cmFzaCB0aW1lciB0ZWFyZG93biBsb2dpYyBpbiBJUFZTIChuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmMpIGJ5IHN3aXRjaGluZyBmcm9tIHRpbWVyX2RlbGV0ZV9zeW5jIHRvIHRpbWVyX3NodXRkb3duX3N5bmMuIFRoaXMgcmVhY2hhYmxlIGNvZGUgcGF0aCBleGVjdXRlcyBkdXJpbmcgbmV0d29yayBuYW1lc3BhY2UgY2xlYW51cCBhbmQgZGVzdGluYXRpb24gdHJhc2ggbWFuYWdlbWVudCBpbiB0aGUgSVBWUyBuZXRmaWx0ZXIgc3Vic3lzdGVtLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJORVRGSUxURVJcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcF92c190cmFzaF9jbGVhbnVwXCIsXG4gICAgXCJpcF92c19jb250cm9sX25ldF9jbGVhbnVwXCIsXG4gICAgXCJpcF92c19kZXN0X3RyYXNoX2V4cGlyZVwiLFxuICAgIFwiaXBfdnNfdHJhc2hfcHV0X2Rlc3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZGVzdGluYXRpb24gdHJhc2ggdGltZXIgdGVhcmRvd24gbG9naWMgaW4gSVBWUyAobmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jKSBieSBzd2l0Y2hpbmcgZnJvbSB0aW1lcl9kZWxldGVfc3luYyB0byB0aW1lcl9zaHV0ZG93bl9zeW5jLiBUaGlzIHJlYWNoYWJsZSBjb2RlIHBhdGggZXhlY3V0ZXMgZHVyaW5nIG5ldHdvcmsgbmFtZXNwYWNlIGNsZWFudXAgYW5kIGRlc3RpbmF0aW9uIHRyYXNoIG1hbmFnZW1lbnQgaW4gdGhlIElQVlMgbmV0ZmlsdGVyIHN1YnN5c3RlbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTc6MjA6MTAuNTg4NjczMTMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzMTUzNjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjU4OTE0MzYxMloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyMDMxMDYxODg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgdGltZXJfZGVsZXRlX3N5bmMoKWAgd2l0aCBgdGltZXJfc2h1dGRvd25fc3luYygpYCBvbiBgaXB2cy1cXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgZHVyaW5nIG5ldG5zL0lQVlMgY2xlYW51cCAoYGlwX3ZzX3RyYXNoX2NsZWFudXAoKWApLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdGltZXIgY2Fubm90IGJlIHJlLWFybWVkIGFmdGVyIGRlbGV0aW9uIGR1cmluZyB0ZWFyZG93biwgcHJldmVudGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLlxcblxcblN1Y2ggbGlmZXRpbWUgYW5kIHRlYXJkb3duIGlzc3VlcyAodXNlLWFmdGVyLWZyZWUsIHRpbWVyIGNhbGxiYWNrcyBydW5uaW5nIG9uIGZyZWVkIHN0cnVjdHVyZXMpIGFyZSBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycy4gVGhlIHBhdGNoIGludHJvZHVjZXMgbm8gbWVtb3J5IGFsbG9jYXRpb25zLCBubyByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrIG9yIGhlYXAgZGF0YSwgYW5kIG5vIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzY2FlNjFkMDQ3NDkzNWU2NWJiZDlmMWEyNzJkOGI3Yjk5ZmJmZmI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxNzoxOToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuaW5kZXggNGMxYzczOTQ0NmI3Ni4uMGViNmNkYjVmZWMzNSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jdGwuY1xuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXG5AQCAtMTE5Miw3ICsxMTkyLDcgQEAgc3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcbiB7XG4gXHRzdHJ1Y3QgaXBfdnNfZGVzdCAqZGVzdCwgKm54dDtcbiBcbi1cdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4rXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcik7XG4gXHQvKiBObyBuZWVkIHRvIHVzZSBkZXN0X3RyYXNoX2xvY2sgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXN0LCBueHQsIFx1MDAyNmlwdnMtXHUwMDNlZGVzdF90cmFzaCwgdF9saXN0KSB7XG4gXHRcdGxpc3RfZGVsKFx1MDAyNmRlc3QtXHUwMDNldF9saXN0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjEwLjU4OTE0NDQ3MloiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MDUwMDMzMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRpbWVyIENoYW5nZSBpbiBJUFZTKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZTogc3dpdGNoaW5nIGB0aW1lcl9kZWxldGVfc3luY2AgdG8gYHRpbWVyX3NodXRkb3duX3N5bmNgIGZvciB0aGUgYGlwdnMtXHUwMDNlZGVzdF90cmFzaF90aW1lcmAgd2l0aGluIHRoZSBgaXBfdnNfdHJhc2hfY2xlYW51cGAgZnVuY3Rpb24gaW4gYGlwX3ZzX2N0bC5jYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGltZXIgbWFuYWdlbWVudCwgYW5kIHRoZSBkaWZmZXJlbmNlIGxpa2VseSBsaWVzIGluIGhvdyB0aGV5IGRlYWwgd2l0aCB0aGUgdGltZXIncyBjYWxsYmFjayBhbmQgc3luY2hyb25pemF0aW9uLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgcm9sZSBvZiBgaXBfdnNfdHJhc2hfY2xlYW51cGAgd2l0aGluIHRoZSBJUFZTIGZyYW1ld29yay4gTGV0J3MgcHVsbCB1cCB0aGF0IGZpbGUsIGBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY3RsLmNgLCBhbmQgdXNlIG15IGVkaXRvcidzIGByZWFkLWZpbGVgIGNvbW1hbmQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVW5kZXJzdGFuZGluZyB0aGUgbGFyZ2VyIHBpY3R1cmUgd2lsbCBoZWxwIG1lIGRldGVybWluZSB3aHkgdGhpcyBjaGFuZ2Ugd2FzIG1hZGUgYW5kIHdoYXQgcG90ZW50aWFsIGltcGFjdCBpdCBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSdzIGJlaGF2aW91ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE3OjIwOjE3LjYzOTE4MDQ4NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTM5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExODUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExODU6XFx0ICpcXG4xMTg2OlxcdCAqICBXaGVuIHRoZSBpcF92c19jb250cm9sX2NsZWFydXAgaXMgYWN0aXZhdGVkIGJ5IGlwdnMgbW9kdWxlIGV4aXQsXFxuMTE4NzpcXHQgKiAgdGhlIHNlcnZpY2UgdGFibGVzIG11c3QgaGF2ZSBiZWVuIGZsdXNoZWQgYW5kIGFsbCB0aGUgY29ubmVjdGlvbnNcXG4xMTg4OlxcdCAqICBhcmUgZXhwaXJlZCwgYW5kIHRoZSByZWZjbnQgb2YgZWFjaCBkZXN0aW5hdGlvbiBpbiB0aGUgdHJhc2ggbXVzdFxcbjExODk6XFx0ICogIGJlIDEsIHNvIHdlIHNpbXBseSByZWxlYXNlIHRoZW0gaGVyZS5cXG4xMTkwOlxcdCAqL1xcbjExOTE6XFx0c3RhdGljIHZvaWQgaXBfdnNfdHJhc2hfY2xlYW51cChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cylcXG4xMTkyOlxcdHtcXG4xMTkzOlxcdFxcdHN0cnVjdCBpcF92c19kZXN0ICpkZXN0LCAqbnh0O1xcbjExOTQ6XFx0XFxuMTE5NTpcXHRcXHR0aW1lcl9zaHV0ZG93bl9zeW5jKFxcdTAwMjZpcHZzLVxcdTAwM2VkZXN0X3RyYXNoX3RpbWVyKTtcXG4xMTk2OlxcdFxcdC8qIE5vIG5lZWQgdG8gdXNlIGRlc3RfdHJhc2hfbG9jayAqL1xcbjExOTc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlc3QsIG54dCwgXFx1MDAyNmlwdnMtXFx1MDAzZWRlc3RfdHJhc2gsIHRfbGlzdCkge1xcbjExOTg6XFx0XFx0XFx0bGlzdF9kZWwoXFx1MDAyNmRlc3QtXFx1MDAzZXRfbGlzdCk7XFxuMTE5OTpcXHRcXHRcXHRpcF92c19kZXN0X2ZyZWUoZGVzdCk7XFxuMTIwMDpcXHRcXHR9XFxuMTIwMTpcXHR9XFxuMTIwMjpcXHRcXG4xMjAzOlxcdHN0YXRpYyB2b2lkIGlwX3ZzX3N0YXRzX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4xMjA0OlxcdHtcXG4xMjA1OlxcdFxcdHN0cnVjdCBpcF92c19zdGF0c19yY3UgKnJzID0gY29udGFpbmVyX29mKGhlYWQsXFxuMTIwNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBpcF92c19zdGF0c19yY3UsXFxuMTIwNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHJjdV9oZWFkKTtcXG4xMjA4OlxcdFxcbjEyMDk6XFx0XFx0aXBfdnNfc3RhdHNfcmVsZWFzZShcXHUwMDI2cnMtXFx1MDAzZXMpO1xcbjEyMTA6XFx0XFx0a2ZyZWUocnMpO1xcbjEyMTE6XFx0fVxcbjEyMTI6XFx0XFxuMTIxMzpcXHRzdGF0aWMgdm9pZFxcbjEyMTQ6XFx0aXBfdnNfY29weV9zdGF0cyhzdHJ1Y3QgaXBfdnNfa3N0YXRzICpkc3QsIHN0cnVjdCBpcF92c19zdGF0cyAqc3JjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoyMDoxNy42Mzk0NzY4NTVaIiwiU2VxIjoyNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDk4MDcxMDM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVGltZXIgU2h1dGRvd24gYW5kIEtNU0FOIEFwcGxpY2FiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIGhlcmUgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIHRpbWVyIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGB0aW1lcl9zaHV0ZG93bl9zeW5jYCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYHRpbWVyX2RlbGV0ZV9zeW5jYCBvciBgZGVsX3RpbWVyX3N5bmNgLCBhbmQgZGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gY29uc2lkZXIgS01TQU4gaW4gdGhpcyBzY2VuYXJpby5cblxuYHRpbWVyX3NodXRkb3duX3N5bmNgIGlzIGNsZWFybHkgYSBsaWZldGltZSBtYW5hZ2VtZW50IHRvb2wuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSB0ZWFyZG93biBvciBjbGVhbnVwIHByb2Nlc3MgYnkgZW5zdXJpbmcgdGhlIHRpbWVyIGlzbid0IHJlLWFybWVkIHVuZXhwZWN0ZWRseS4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgcHJvdGVjdGluZyB0aGUgdGltZXIgaGFuZGxlciBmcm9tIGFjY2Vzc2luZyBmcmVlZCByZXNvdXJjZXMuIEZyb20gYSBzZWN1cml0eSBzdGFuZHBvaW50LCB0aGlzIGFwcGVhcnMgdG8gYmUgcHVyZWx5IGFib3V0IHRlYXJkb3duIGFuZCBwcmV2ZW50aW5nIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhhdCBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGFzc2VzcyB0aGUgcG90ZW50aWFsIGZvciBkaWZmZXJlbnQgc2FuaXRpemVycy4gRm9yIHN0YW5kYXJkIHNhbml0aXplcnMgbGlrZSBLQVNBTiwgd2UncmUgbG9va2luZyBmb3IgaXNzdWVzIHJlbGF0ZWQgdG8gcmFjZSBjb25kaXRpb25zLCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3Mgd2l0aCB0aGUgdGltZXIsIG9yIGluc3RhbmNlcyB3aGVyZSBhIHRpbWVyIGlzIHVzZWQgYWZ0ZXIgY2xlYW51cCBoYXMgb2NjdXJyZWQuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYWJvdXQgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuXG5cbkdpdmVuIHdoYXQgSSBzZWUgaW4gdGhlIGNvZGUgY2hhbmdlcywgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBubyBwb3RlbnRpYWwgZm9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UsIG5vIGNvbmRpdGlvbmFsIGJyYW5jaGluZyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGRhdGEsIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgYW5kIG5vIGJ1ZmZlciBib3VuZHMgbWFuaXB1bGF0aW9ucy4gVGhpcyBpcyBjcnVjaWFsOiB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aW1lciBsaWZldGltZSBtYW5hZ2VtZW50IGR1cmluZyBzaHV0ZG93bi5cblxuVGhlcmVmb3JlLCB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG9yIGV4cG9zZXMgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBCYXNlZCBvbiBteSBhbmFseXNpcywgdGhlIGFuc3dlciBpcyBkZWZpbml0aXZlbHkgbm8uIFRoZSBjb2RlIGFwcGVhcnMgdG8gaGFuZGxlIHRoZSB0ZWFyZG93biBpbiBhIHdheSB0aGF0IG1pbmltaXplcyB0aGVzZSByaXNrcy4gVGhpcyBtYWtlcyB0aGUgYE5lZWRzS01TQU5gIGZsYWcgaXJyZWxldmFudCBoZXJlLCBzbyBpdCBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblRoZSBydWxlIGlzIGNsZWFyOiBLTVNBTiBpcyBjb3N0bHkgYW5kIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgdGhlcmUgaXMgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gV2Ugc2hvdWxkIG9ubHkgZW5hYmxlIEtNU0FOIGlmIHRoZSBjb2RlIGNoYW5nZSBpbnRyb2R1Y2VzIHJpc2tzIHRoYXQgYXJlICpvbmx5KiBkZXRlY3RlZCBieSBLTVNBTi4gU2luY2UgS0FTQU4gYW5kIHN0YW5kYXJkIGRldGVjdG9ycyBjYXRjaCB0aGUgbGlrZWx5IGlzc3VlcywgS01TQU4gaXMgbm90IG5lZWRlZC4gVGhlIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIG9yIHplcm9lZCBiZWZvcmUgYmVpbmcgcmVhZC4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIGhlcmUuIFRoaXMgYWxpZ25zIHdpdGggdGhlIGNyaXRlcmlhIGZvciBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuSSdtIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNCwiT3V0cHV0VG9rZW5zIjoxNzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxNzoyMDoyMi42MjAxODk4OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYHRpbWVyX2RlbGV0ZV9zeW5jKClgIHdpdGggYHRpbWVyX3NodXRkb3duX3N5bmMoKWAgb24gYGlwdnMtXFx1MDAzZWRlc3RfdHJhc2hfdGltZXJgIGR1cmluZyBuZXRucy9JUFZTIGNsZWFudXAgKGBpcF92c190cmFzaF9jbGVhbnVwKClgKS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHRpbWVyIGNhbm5vdCBiZSByZS1hcm1lZCBhZnRlciBkZWxldGlvbiBkdXJpbmcgdGVhcmRvd24sIHByZXZlbnRpbmcgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdXNlLWFmdGVyLWZyZWUgYnVncy5cXG5cXG5TdWNoIGxpZmV0aW1lIGFuZCB0ZWFyZG93biBpc3N1ZXMgKHVzZS1hZnRlci1mcmVlLCB0aW1lciBjYWxsYmFja3MgcnVubmluZyBvbiBmcmVlZCBzdHJ1Y3R1cmVzKSBhcmUgZGV0ZWN0ZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5vIG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjayBvciBoZWFwIGRhdGEsIGFuZCBubyBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[1] Phase: Succeeded StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 17:20:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 17:20:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2] Phase: Succeeded StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 17:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-05 17:20:46 +0000 UTC FinishedAt: 2026-09-05 17:20:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-convert-artifact-2738415483/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-05 17:20:56 +0000 UTC FinishedAt: 2026-09-05 17:37:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-05 17:20:56 +0000 UTC FinishedAt: 2026-09-05 17:37:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6ac74db-6a86-4b8f-868f-3168f2a98d83,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-workflowlfmkz/series-workflowlfmkz-convert-artifact-2738415483/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": "28013e1f-0197-46d8-ac53-1f90e37bac46", "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-workflowlfmkz/series-workflowlfmkz-build-action-3074135737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-05 17:20:56 +0000 UTC FinishedAt: 2026-09-05 17:37:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6ac74db-6a86-4b8f-868f-3168f2a98d83,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-workflowlfmkz/series-workflowlfmkz-convert-artifact-2738415483/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": "28013e1f-0197-46d8-ac53-1f90e37bac46", "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-workflowlfmkz/series-workflowlfmkz-build-action-3074135737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-05 17:37:22 +0000 UTC FinishedAt: 2026-09-05 17:37:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-05 17:37:22 +0000 UTC FinishedAt: 2026-09-05 17:37:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-05 17:37:22 +0000 UTC FinishedAt: 2026-09-05 17:37:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-05 17:37:22 +0000 UTC FinishedAt: 2026-09-05 17:37:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-convert-artifact-3727127762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-05 17:37:32 +0000 UTC FinishedAt: 2026-09-05 17:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-05 17:37:32 +0000 UTC FinishedAt: 2026-09-05 17:39:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*28013e1f-0197-46d8-ac53-1f90e37bac46,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-workflowlfmkz/series-workflowlfmkz-build-action-3074135737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-05 17:39:46 +0000 UTC FinishedAt: 2026-09-05 17:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-05 17:39:46 +0000 UTC FinishedAt: 2026-09-05 17:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-05 17:39:46 +0000 UTC FinishedAt: 2026-09-05 17:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-05 17:39:46 +0000 UTC FinishedAt: 2026-09-05 17:59:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6ac74db-6a86-4b8f-868f-3168f2a98d83,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-workflowlfmkz/series-workflowlfmkz-convert-artifact-3727127762/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": "3fd72a88-c382-493a-a1a4-479d0d60ac7e", "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-workflowlfmkz/series-workflowlfmkz-build-action-579203942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-05 17:39:46 +0000 UTC FinishedAt: 2026-09-05 17:59:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d6ac74db-6a86-4b8f-868f-3168f2a98d83,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-workflowlfmkz/series-workflowlfmkz-convert-artifact-3727127762/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": "3fd72a88-c382-493a-a1a4-479d0d60ac7e", "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-workflowlfmkz/series-workflowlfmkz-build-action-579203942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-05 17:59:51 +0000 UTC FinishedAt: 2026-09-05 17:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-05 17:59:51 +0000 UTC FinishedAt: 2026-09-05 17:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-05 17:59:51 +0000 UTC FinishedAt: 2026-09-05 18:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-05 17:59:51 +0000 UTC FinishedAt: 2026-09-05 18:01:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3fd72a88-c382-493a-a1a4-479d0d60ac7e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-build-action-579203942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*28013e1f-0197-46d8-ac53-1f90e37bac46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3fd72a88-c382-493a-a1a4-479d0d60ac7e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-build-action-3074135737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-build-action-579203942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:01:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:01:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-convert-artifact-1025687591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-05 18:01:45 +0000 UTC FinishedAt: 2026-09-05 18:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-05 18:01:55 +0000 UTC FinishedAt: 2026-09-05 18:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlfmkz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ip_vs_trash_cleanup","ip_vs_control_net_cleanup","ip_vs_dest_trash_expire","ip_vs_trash_put_dest"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2b4707a149a55e8fa75c9ef32b359d60f470a566","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NETFILTER","INET"],"series_id":"b5fcbb51-56e5-40d6-8262-e39ede0f43a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-05 18:01:55 +0000 UTC FinishedAt: 2026-09-05 18:04:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*28013e1f-0197-46d8-ac53-1f90e37bac46,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3fd72a88-c382-493a-a1a4-479d0d60ac7e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-build-action-3074135737/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-build-action-579203942/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlfmkz/series-workflowlfmkz-convert-artifact-1025687591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}