Name: series-workflowb7fdp Phase: Succeeded StartedAt: 2026-09-05 18:18:29 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[0] Phase: Succeeded StartedAt: 2026-09-05 18:18:29 +0000 UTC FinishedAt: 2026-09-05 19:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[0].run-triage Phase: Succeeded StartedAt: 2026-09-05 18:18:29 +0000 UTC FinishedAt: 2026-09-05 19:03:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "9eab111e765729e93087ff86a2ec9b2ae42d0fa5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DIBS", "DIBS_LO", "SMC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "9eab111e765729e93087ff86a2ec9b2ae42d0fa5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DIBS", "DIBS_LO", "SMC" ], "series_id": "163829c9-8d41-41b8-8023-e31da2596acc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dibs_lo_move_data" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWJzX2xvX21vdmVfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxOTowMjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jIGIvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY1xuaW5kZXggNjQ5ZTRlMzc1YmUzMy4uNDRhMmU3NGMyZWZjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbkBAIC0yMzgsNiAmIzQzOzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHUxNiBzX21hc2s7XG4gXHR1OCBjbGllbnRfaWQ7XG4gXHR1MzIgc2JhX2lkeDtcbkBAIC0yNjcsMTIgJiM0MzsyNjgsMTIgQEAgc3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuIFx0aWYgKCFzZilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuJiM0MztcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpYnNfbG9fbW92ZV9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxOTowMjozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jCmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYwpAQCAtMjM4LDYgJiM0MzsyMzgsNyBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssCiB7CiAJc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlOwogCXN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MTYgc19tYXNrOwogCXU4IGNsaWVudF9pZDsKIAl1MzIgc2JhX2lkeDsKQEAgLTI2NywxMiAmIzQzOzI2OCwxMiBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssCiAJaWYgKCFzZikKIAkJcmV0dXJuIDA7CiAKLQlzcGluX2xvY2soJmFtcDtkaWJzLSZndDtsb2NrKTsKJiM0MzsJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkaWJzLSZndDtsb2NrLCBmbGFncyk7CiAJY2xpZW50X2lkID0gZGlicy0mZ3Q7ZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTsKIAlzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7CiAJaWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgJmFtcDsmYW1wOyBkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0pKQogCQlkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0tJmd0O29wcy0mZ3Q7aGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spOwotCXNwaW5fdW5sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jayk7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkaWJzLSZndDtsb2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gMDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExNAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBSZWxldmFudCBLZXJuZWwgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgbW9kaWZpY2F0aW9ucyBtYWRlIHRvIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgbWFwIG9mIHdoZXJlIHRoaXMgZmFsbHMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBjb250ZXh0OiB3aGF0ICppcyogdGhlIGBkcml2ZXJzL2RpYnNgIHN1YnN5c3RlbT8gV2hhdCBhcmUgdGhlIGVuYWJsaW5nIEtjb25maWcgb3B0aW9ucz8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGludGVyYWN0IHdpdGggdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBwYXJ0aWN1bGFybHkgYGRpYnNfbG9fbW92ZV9kYXRhYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgY29kZSBpcyBleGVjdXRlZC4KClRvIGZhY2lsaXRhdGUgdGhpcywgSSYjMzk7bGwgbGV2ZXJhZ2UgbXkgdXN1YWwgdG9vbHMuIEkmIzM5O20gdGhpbmtpbmcgYGdyZXBwZXJgIGlzIHRoZSBmaXJzdCBsb2dpY2FsIGNob2ljZS4gSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgZGVwZW5kZW5jaWVzLCBjcm9zcy1yZWZlcmVuY2VzLCBhbmQgcG90ZW50aWFsIGltcGFjdHMuIEFsdGVybmF0aXZlbHksIGByZWFkLWZpbGVgIG1pZ2h0IGJlIGhhbmR5IGZvciBhIHF1aWNrIG92ZXJ2aWV3IGlmIEkmIzM5O20gbG9va2luZyBmb3Igc3BlY2lmaWNzLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBmdW5jdGlvbmFsaXR5IGV2ZW4gYWNjZXNzaWJsZSBpbiBjb21tb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoYXQmIzM5O3MgZXNzZW50aWFsIHRvIHJlcGxpY2F0aW5nIGFuZCB0ZXN0aW5nIHRoaXMgaW4gYSByZWFsaXN0aWMgc2V0dGluZy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzZXJpZXMgb2YgYGdyZXBwZXJgIHF1ZXJpZXMgdG8gcGlucG9pbnQgdGhlc2UgY3JpdGljYWwgZGV0YWlscywgc3RhcnRpbmcgd2l0aCB0aGUgZmlsZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlic19sb19tb3ZlX2RhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yMDQ9c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzNTpzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yODE9c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODc6XHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4OC1cdC5zdXBwb3J0X21tYXBwZWRfcmRtYiA9IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RJQlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy01LVx0aGVscFxuZHJpdmVycy9kaWJzL0tjb25maWc6NjpcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbmRyaXZlcnMvZGlicy9LY29uZmlnLTctXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuZHJpdmVycy9kaWJzL0tjb25maWc6MTY6XHRkZXBlbmRzIG9uIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE3LVx0ZGVmYXVsdCBuXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xOC1cdGhlbHBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE5Olx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxuLS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZS0yLSNcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTozOiMgRElCUyBjbGFzcyBtb2R1bGVcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS00LSNcbi0tXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU9Nj1kaWJzLXkgJiM0Mzs9IGRpYnNfbWFpbi5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfRElCUykgJiM0Mzs9IGRpYnMub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlOjg6ZGlicy0kKENPTkZJR19ESUJTX0xPKSAmIzQzOz0gZGlic19sb29wYmFjay5vXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI6I2RlZmluZSBESUJTX0xPX1NVUFBPUlRfTk9DT1BZXHQweDFcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM6I2RlZmluZSBESUJTX0RNQV9BRERSX0lOVkFMSURcdCh+KGRtYV9hZGRyX3QpMClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yOT1zdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE6XHRyZXR1cm4gRElCU19MT09QQkFDS19GQUJSSUM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyLX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQzPXN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00NC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ1Olx0cmV0dXJuIERJQlNfTE9fTUFYX0RNQlM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ2LX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU5LVx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NjA6XHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjEtXHRcdGlmICghdGVzdF9hbmRfc2V0X2JpdChzYmFfaWR4LCBsZGV2LVx1MDAzZXNiYV9pZHhfbWFzaykpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02My1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NjQ6XHRpZiAoc2JhX2lkeCA9PSBESUJTX0xPX01BWF9ETUJTKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02NS1cdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy04NC1cdGRtYl9ub2RlLVx1MDAzZWNwdV9hZGRyID0gZm9saW9fYWRkcmVzcyhmb2xpbyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg1Olx0ZG1iX25vZGUtXHUwMDNlZG1hX2FkZHIgPSBESUJTX0RNQV9BRERSX0lOVkFMSUQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg2LVx0cmVmY291bnRfc2V0KFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCwgMSk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xMzI9c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjA6XHRcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWJfbm9kZS1cdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjEtXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xNjg9c3RhdGljIGludCBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MDpcdHJldHVybiBESUJTX0xPX1NVUFBPUlRfTk9DT1BZO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzEtfVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjM1PXN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3Rvayxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc0Olx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc1LVx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjEyOiNpZm5kZWYgX0RJQlNfTE9PUEJBQ0tfSFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxMzojZGVmaW5lIF9ESUJTX0xPT1BCQUNLX0hcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTQtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RJQlNfTE8pXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIyOiNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1x0MTJcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjM6I2RlZmluZSBESUJTX0xPX01BWF9ETUJTXHQ1MDAwXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM4LVx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM5Olx0REVDTEFSRV9CSVRNQVAoc2JhX2lkeF9tYXNrLCBESUJTX0xPX01BWF9ETUJTKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XHRERUNMQVJFX0hBU0hUQUJMRShkbWJfaHQsIERJQlNfTE9fRE1CU19IQVNIX0JJVFMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00MS1cdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oPTUyPXN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTU2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo1NzojZW5kaWYgLyogX0RJQlNfTE9PUEJBQ0tfSCAqL1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzogKiAgRElCUyAtIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZ1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQtICpcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1OiAqICBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRElCUyBjbGFzcyBtb2R1bGVcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy02LSAqXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xhc3MgZGlic19jbGFzcyA9IHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnRzW01BWF9ESUJTX0NMSUVOVFNdO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI4LXN0YXRpYyB1OCBtYXhfY2xpZW50O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz01MD1pbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU2LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01OC1cdFx0aWYgKCFjbGllbnRzW2ldKSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTY4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjY5Olx0aWYgKGkgXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFMpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cdFx0LyogaW5pdGlhbGl6ZSB3aXRoIGFsbCBkZXZpY2VzIHRoYXQgd2UgZ290IHNvIGZhciAqL1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xODU9aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0Olx0bWVtc2V0KGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciwgTk9fRElCU19DTElFTlQsIG1heF9kbWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyMj12b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOS1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFM7ICYjNDM7JiM0MztpKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMS1cdFx0ZGlicy1cdTAwM2VzdWJzW2ldID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL01ha2VmaWxlPTE5Nz1vYmoteVx0XHRcdFx0JiM0Mzs9IHJlc2N0cmwvXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cbmRyaXZlcnMvTWFrZWZpbGU6MTk5Om9iai0kKENPTkZJR19ESUJTKVx0XHQmIzQzOz0gZGlicy9cbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVx0XHQmIzQzOz0gczM5MC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbC1XaWRlIERJQlMgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYERJQlNgIG9yIGBkaWJzYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBncmVwLCBtaW5kIHlvdTsgSSYjMzk7bSB0aGlua2luZyBhIHRob3JvdWdoIHNlYXJjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGVzZSB0ZXJtcyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHN1YnN5c3RlbXMuIEkgbmVlZCB0byBxdWlja2x5IGFuZCBlZmZpY2llbnRseSBpZGVudGlmeSBhbGwgdGhlIHJlbGV2YW50IGNhbGwgc2l0ZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBzbyBJIGNhbiBhc3Nlc3MgaW1wYWN0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIGEgZmFpciBiaXQgb2Ygbm9pc2UsIGJ1dCBob3BlZnVsbHksIHRoZSB3aGVhdCB3aWxsIHNlcGFyYXRlIGZyb20gdGhlIGNoYWZmIHF1aWNrbHkuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1biBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEzMz1DT05GSUdfU01DX0RJQUc9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNDpDT05GSUdfRElCUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTM1OkNPTkZJR19ESUJTX0xPPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMzYtQ09ORklHX1hEUF9TT0NLRVRTPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19TTUNfRElBRz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI1OkNPTkZJR19ESUJTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjY6Q09ORklHX0RJQlNfTE89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyNy1DT05GSUdfWERQX1NPQ0tFVFM9eVxuLS1cbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XHRcdFx0XHQmIzQzOz0gcmVzY3RybC9cbmRyaXZlcnMvTWFrZWZpbGUtMTk4LVxuZHJpdmVycy9NYWtlZmlsZToxOTk6b2JqLSQoQ09ORklHX0RJQlMpXHRcdCYjNDM7PSBkaWJzL1xuZHJpdmVycy9NYWtlZmlsZS0yMDAtb2JqLSQoQ09ORklHX1MzOTApXHRcdCYjNDM7PSBzMzkwL1xuLS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZT02PWRpYnMteSAmIzQzOz0gZGlic19tYWluLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSAmIzQzOz0gZGlicy5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICYjNDM7PSBkaWJzX2xvb3BiYWNrLm9cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjItI2RlZmluZSBESUJTX0xPX0RNQlNfSEFTSF9CSVRTXHQxMlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc9MTM1PUNPTkZJR19TTUNfSFNfQ1RSTF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzY6Q09ORklHX0RJQlM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzc6Q09ORklHX0RJQlNfTE89eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy0xMzgtQ09ORklHX1BNX1dBS0VMT0NLUz15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnNfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjY6ZGlicy15ICYjNDM7PSBkaWJzX21haW4ub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RJQlMpICYjNDM7PSBkaWJzLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgJiM0Mzs9IGRpYnNfbG9vcGJhY2sub1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTktXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFwmIzM0O2RpYnNfbG9vcGJhY2suaFwmIzM0O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcJiMzNDtsb1wmIzM0OztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfbG9fZGV2ICpsb19kZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDpzdGF0aWMgaW50IGRpYnNfbG9fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUtXHRcdFx0ICAgICAgdTMyIHZpZF92YWxpZCwgdTMyIHZpZClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0MzpzdGF0aWMgaW50IGRpYnNfbG9fbWF4X2RtYnModm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDk6XHRcdFx0XHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTMtXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMjpcdFx0XHQgICAgIHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTMyOnN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzQ6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM2LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYzOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY0LVx0fVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjg6c3RhdGljIGludCBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzQte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzU6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NjpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc3LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDQ6c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNS17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNjpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA3Olx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDgtXHRib29sIGxhc3Q7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjktXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjMwOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjMxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzYtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM4LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM5Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDA6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgyOlx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MzpcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NjpcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5tb3ZlX2RhdGEgPSBkaWJzX2xvX21vdmVfZGF0YSxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg4Olx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4OTpcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XHQuZGV0YWNoX2RtYiA9IGRpYnNfbG9fZGV0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkxLX07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjkzOnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDE6c3RhdGljIHZvaWQgZGlic19sb19kZXZfZXhpdChzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDYtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwOC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwOTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzEwOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTc6XHRkaWJzID0gZGlic19kZXZfYWxsb2MoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE4LVx0aWYgKCFkaWJzKSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjQtXHRkaWJzLVx1MDAzZWRydl9wcml2ID0gbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1Olx0ZGlic19sb19kZXZfaW5pdChsZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI2LVx0dXVpZF9nZW4oXHUwMDI2ZGlicy1cdTAwM2VnaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XHRkaWJzLVx1MDAzZW9wcyA9IFx1MDAyNmRpYnNfbG9fb3BzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyOS1cdGRpYnMtXHUwMDNlZGV2LnBhcmVudCA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMDpcdGRldl9zZXRfbmFtZShcdTAwMjZkaWJzLVx1MDAzZWRldiwgXCYjMzQ7JXNcJiMzNDssIGRpYnNfbG9fZGV2X25hbWUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcdHJldCA9IGRpYnNfZGV2X2FkZChkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzMzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzOC1lcnJfcmVnOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQwLVx0cHV0X2RldmljZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0NjpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9yZW1vdmUodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1MC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlx0ZGlic19kZXZfZGVsKGxvX2Rldi1cdTAwM2VkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlx0ZGlic19sb19kZXZfZXhpdChsb19kZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTM6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU0LVx0cHV0X2RldmljZShcdTAwMjZsb19kZXYtXHUwMDNlZGlicy1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTk6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XHRyZXR1cm4gZGlic19sb19kZXZfcHJvYmUoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjQ6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2Olx0ZGlic19sb19kZXZfcmVtb3ZlKCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjU6c3RydWN0IGRpYnNfbG9fZG1iX25vZGUge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNi1cdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zNC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzU6c3RydWN0IGRpYnNfbG9fZGV2IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzY6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM3LVx0YXRvbWljX3QgZG1iX2NudDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NDppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NTp2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDYtI2Vsc2VcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDc6c3RhdGljIGlubGluZSBpbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQ4LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo1MjpzdGF0aWMgaW5saW5lIHZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyBkaWJzX2NsYXNzID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzLVx0Lm5hbWVcdFx0PSBcJiMzNDtkaWJzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNi0vKiB1c2UgYW4gYXJyYXkgcmF0aGVyIGEgbGlzdCBmb3IgZmFzdCBtYXBwaW5nOiAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI3OnN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudHNbTUFYX0RJQlNfQ0xJRU5UU107XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9Mjk9c3RhdGljIERFRklORV9NVVRFWChjbGllbnRzX2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjMwOnN0cnVjdCBkaWJzX2Rldl9saXN0IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zMS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzU6c3RhdGljIHN0cnVjdCBkaWJzX2Rldl9saXN0IGRpYnNfZGV2X2xpc3QgPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzY6XHQubGlzdCA9IExJU1RfSEVBRF9JTklUKGRpYnNfZGV2X2xpc3QubGlzdCksXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mzc6XHQubXV0ZXggPSBfX01VVEVYX0lOSVRJQUxJWkVSKGRpYnNfZGV2X2xpc3QubXV0ZXgpLFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM4LX07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzktXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDA6c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQxOlx0XHRcdFx0ICBzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDIte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MDppbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUyOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVx0aW50IGksIHJjID0gLUVOT1NQQztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01NC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXHRtdXRleF9sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTcwLVx0XHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzE6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzItXHRcdFx0ZGlicy1cdTAwM2Vwcml2W2ldID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03My1cdFx0XHRjbGllbnQtXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzQ6XHRcdFx0ZGlic19zZXR1cF9mb3J3YXJkaW5nKGNsaWVudCwgZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzUtXHRcdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03Ni1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3NzpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03OC1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjgxOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfcmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Mi1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODU6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MDpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTE6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkyLVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExNTpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTYtXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExOS1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyMS1cdHJldHVybiByYztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMzpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNi17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMC1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzNTpzdHJ1Y3QgZGlic19kZXYgKmRpYnNfZGV2X2FsbG9jKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM2LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM4LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDItXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MzpcdGRpYnMtXHUwMDNlZGV2LnJlbGVhc2UgPSBkaWJzX2Rldl9yZWxlYXNlO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NDpcdGRpYnMtXHUwMDNlZGV2LmNsYXNzID0gXHUwMDI2ZGlic19jbGFzcztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDUtXHRkZXZpY2VfaW5pdGlhbGl6ZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0OC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTUxPXN0YXRpYyBzc2l6ZV90IGdpZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1My17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU0Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1NS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTY6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1Ny1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ni1cdHUxNiBmYWJyaWNfaWQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE2ODpcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY5LVx0ZmFicmljX2lkID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTczPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmYWJyaWNfaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3NC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRpYnNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc2LVx0XHUwMDI2ZGV2X2F0dHJfZ2lkLmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4MC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZGlic19kZXZfYXR0cl9ncm91cCA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODI6XHQuYXR0cnMgPSBkaWJzX2Rldl9hdHRycyxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODMtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTg1OmludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMDA6XHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2ZGlicy1cdTAwM2VkZXYua29iaiwgXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjAxLVx0aWYgKHJldCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcdFx0ZGV2X2VycihcdTAwMjZkaWJzLVx1MDAzZWRldiwgXCYjMzQ7c3lzZnNfY3JlYXRlX2dyb3VwIGZhaWxlZCBmb3IgZGlic19kZXZcXG5cJiMzNDspO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMy1cdFx0ZGV2aWNlX2RlbChcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMDY6XHRtdXRleF9sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNy1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEwLVx0XHRcdGNsaWVudHNbaV0tXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlx0XHRcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTItXHRcdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjE1Olx0bGlzdF9hZGQoXHUwMDI2ZGlicy1cdTAwM2VsaXN0LCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIxNjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjIwOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FkZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyNzpcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMy1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzQ6XHRtdXRleF9sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzNS1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQxLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZkaWJzLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0MjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDMtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0NS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQ2OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2RlbCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0ODpzdGF0aWMgaW50IF9faW5pdCBkaWJzX2luaXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDkte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjUyOlx0cmMgPSBjbGFzc19yZWdpc3RlcihcdTAwMjZkaWJzX2NsYXNzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1NS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XHRyYyA9IGRpYnNfbG9vcGJhY2tfaW5pdCgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1Ny1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYyLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjY0LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjU6XHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjY6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNmRpYnNfY2xhc3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2Ny19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjY4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzA6bW9kdWxlX2V4aXQoZGlic19leGl0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyOC1cdHNwaW5sb2NrX3QgY21kX2xvY2s7IC8qIHNlcmlhbGl6ZXMgY21kcyAqL1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjk6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzMC1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE3Nz1zdGF0aWMgdm9pZCBpc21fZnJlZV9pZXEoc3RydWN0IGlzbV9kZXYgKmlzbSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xODUtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoxODY6c3RhdGljIGludCBpc21fcmVhZF9sb2NhbF9naWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg3LXtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMDUtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDY6c3RhdGljIGludCBpc21fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIwNy1cdFx0XHQgIHUzMiB2aWRfdmFsaWQsIHUzMiB2aWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjIzPXN0YXRpYyBpbnQgaXNtX21heF9kbWJzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI3LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjI4OnN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIyOS17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM1LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjM2OnN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIzNy17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjgyLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjgzOnN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjg0Olx0XHRcdCAgICBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI4NS17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE4LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzE5OnN0YXRpYyBpbnQgaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMjAte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM0NC1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM0NTpzdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzQ2LXtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNTgtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNTk6c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM2MC17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzcyLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzczOnN0YXRpYyBpbnQgaXNtX3NpZ25hbF9pZXEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNzQtXHRcdFx0ICB1MzIgdHJpZ2dlcl9pcnEsIHUzMiBldmVudF9jb2RlLCB1NjQgaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zOTE9c3RhdGljIHVuc2lnbmVkIGludCBtYXhfYnl0ZXModW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5Ni1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM5NzpzdGF0aWMgaW50IGlzbV9tb3ZlKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssIHVuc2lnbmVkIGludCBpZHgsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zOTgtXHRcdCAgICBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyMi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQyMzpzdGF0aWMgdTE2IGlzbV9nZXRfY2hpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MjQte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTQ2MT1zdGF0aWMgdm9pZCBpc21faGFuZGxlX2V2ZW50KHN0cnVjdCBpc21fZGV2ICppc20pXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjIte1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDYzOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gaXNtLVx1MDAzZWRpYnM7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NjQ6XHRzdHJ1Y3QgZGlic19ldmVudCBldmVudDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ2NS1cdHN0cnVjdCBpc21fZXZlbnQgKmVudHJ5O1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDY2Olx0c3RydWN0IGRpYnNfY2xpZW50ICpjbHQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00OTk9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTAyLVx0dW5zaWduZWQgbG9uZyBiaXQsIGVuZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUwMzpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUwNC1cdHVuc2lnbmVkIGxvbmcgKmJ2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0Mi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjU0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBpc21fb3BzID0ge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTQ0LVx0LmdldF9mYWJyaWNfaWQgPSBpc21fZ2V0X2NoaWQsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NjA1PXN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02MDYte1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjA3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjA4LVx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTYzNS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjYzNjpcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjM3LVx0aWYgKCFkaWJzKSB7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ2LVx0LyogZW5hYmxlIGlzbSBkZXZpY2UsIGJ1dCBhbnkgaW50ZXJydXB0cyBhbmQgZXZlbnRzIHdpbGwgYmUgaWdub3JlZFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjQ3Olx0ICogYmVmb3JlIGRpYnNfZGV2X2FkZCgpIGFkZHMgaXQgdG8gYW55IGNsaWVudHMuXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NDgtXHQgKi9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NjItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2NjM6XHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY3MS1lcnJfZGliczpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY3MjpcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjczLVx0cHV0X2RldmljZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Njg1PXN0YXRpYyB2b2lkIGlzbV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjg3LVx0c3RydWN0IGlzbV9kZXYgKmlzbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2ODg6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSBpc20tXHUwMDNlZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY4OS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY5MDpcdGRpYnNfZGV2X2RlbChkaWJzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY5MS1cdGlzbV9kZXZfZXhpdChpc20pO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjkyOlx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02OTMtXHRwdXRfZGV2aWNlKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00NS0gKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjQ2OnN0cnVjdCBkaWJzX2RtYiB7XG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00Ny1cdC8qIHRvayAtIFRva2VuIGZvciB0aGlzIGRtYlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTc0LSAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6NzU6ZW51bSBkaWJzX2V2ZW50X3R5cGUge1xuaW5jbHVkZS9saW51eC9kaWJzLmgtNzYtXHQvKiBCdWZmZXIgZXZlbnQsIGUuZy4gYSByZW1vdGUgZG1iIHdhcyB1bnJlZ2lzdGVyZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC04NS1cbmluY2x1ZGUvbGludXgvZGlicy5oOjg2OmVudW0gZGlic19ldmVudF9zdWJ0eXBlIHtcbmluY2x1ZGUvbGludXgvZGlicy5oLTg3LVx0RElCU19CVUZfVU5SRUdJU1RFUkVELFxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTkyLVxuaW5jbHVkZS9saW51eC9kaWJzLmg6OTM6c3RydWN0IGRpYnNfZXZlbnQge1xuaW5jbHVkZS9saW51eC9kaWJzLmgtOTQtXHR1MzIgdHlwZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMDQtXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMDU6c3RydWN0IGRpYnNfZGV2O1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTA2LVxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTExNS0gKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjExNjpzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcbmluY2x1ZGUvbGludXgvZGlicy5oLTExNy1cdC8qKlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyMC1cdCAqXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjE6XHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic19yZWdpc3Rlcl9jbGllbnQoKSBmb3IgYWxsIGV4aXN0aW5nXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjItXHQgKiBkaWJzIGRldmljZXMgYW5kIHdoZW5ldmVyIGEgbmV3IGRpYnMgZGV2aWNlIGlzIHJlZ2lzdGVyZWQuXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjM6XHQgKiBkZXYgaXMgdXNhYmxlIHVudGlsIGRpYnNfY2xpZW50LnJlbW92ZSgpIGlzIGNhbGxlZC5cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNC1cdCAqICpkZXYgaXMgcHJvdGVjdGVkIGJ5IGRldmljZSByZWZjb3VudGluZy5cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNS1cdCAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6MTI2Olx0dm9pZCAoKmFkZF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNy1cdC8qKlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTEzMS1cdCAqIFdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgZGlicyBkZXZpY2UgaXMgcmVtb3ZlZC5cbmluY2x1ZGUvbGludXgvZGlicy5oOjEzMjpcdCAqIFdpbGwgYmUgY2FsbGVkIGR1cmluZyBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KCkgZm9yIGFsbCBleGlzdGluZ1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTMzLVx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIGRpYnMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzctXHQgKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjEzODpcdHZvaWQgKCpkZWxfZGV2KShzdHJ1Y3QgZGlic19kZXYgKmRldik7XG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzktXHQvKipcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTItXHQgKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjE1MzpcdHZvaWQgKCpoYW5kbGVfaXJxKShzdHJ1Y3QgZGlic19kZXYgKmRldiwgdW5zaWduZWQgaW50IGlkeCxcbmluY2x1ZGUvbGludXgvZGlicy5oLTE1NC1cdFx0XHQgICB1MTYgZG1iZW1hc2spO1xuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTE2MS1cdCAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6MTYyOlx0dm9pZCAoKmhhbmRsZV9ldmVudCkoc3RydWN0IGRpYnNfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxNjM6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjU1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBESUJTIENsaWVudCBSZWdpc3RyYXRpb24qKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aG8mIzM5O3MgcmVnaXN0ZXJpbmcgYXMgYSBESUJTIGNsaWVudC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYuIFRpbWUgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXTigJlzIGhhcHBlbmluZyBpbiB0aGUgc3lzdGVtLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgbW9zdCBvYnZpb3VzOiB3aGVyZSYjMzk7cyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIGNhbGwgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZXNlIGNsaWVudHM/IEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiB0aGF0JiMzOTtzIGxpa2VseSBgZGlic19yZWdpc3Rlcl9jbGllbnRgLiBMZXQmIzM5O3MgdXNlIGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uIG5hbWUuIFRoaXMgd2lsbCBpbW1lZGlhdGVseSBzaG93IG1lIHdoZXJlIHRoZSByZWdpc3RyYXRpb24gbG9naWMgaXMgaW52b2tlZCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgd2hpY2ggSSBjYW4gdGhlbiBhbmFseXplLiBGcm9tIHRoZXJlIEkgY2FuIG1vdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIGFueSByZWxldmFudCBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzX3JlZ2lzdGVyX2NsaWVudCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19tYWluLmM9NDA9c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MDppbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04MC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oPTExNj1zdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjAtXHQgKlxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTIxOlx0ICogV2lsbCBiZSBjYWxsZWQgZHVyaW5nIGRpYnNfcmVnaXN0ZXJfY2xpZW50KCkgZm9yIGFsbCBleGlzdGluZ1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIyLVx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIG5ldyBkaWJzIGRldmljZSBpcyByZWdpc3RlcmVkLlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oPTE2Nj1zdHJ1Y3QgZGlic19jbGllbnQge1xuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTE3Ni0vKipcbmluY2x1ZGUvbGludXgvZGlicy5oOjE3NzogKiBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIC0gcmVnaXN0ZXIgYSBjbGllbnQgd2l0aCBkaWJzIGxheWVyXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNzgtICogQGNsaWVudDogdGhpcyBjbGllbnRcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xODItICovXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxODM6aW50IGRpYnNfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KTtcbmluY2x1ZGUvbGludXgvZGlicy5oLTE4NC0vKipcbi0tXG5uZXQvc21jL3NtY19pc20uYz02MzA9aW50IHNtY19pc21faW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cbm5ldC9zbWMvc21jX2lzbS5jOjYzNzpcdHJjID0gZGlic19yZWdpc3Rlcl9jbGllbnQoXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTYzOC1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwMTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNNQyBDbGllbnQgRGF0YSBNb3ZlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgU01DIHN0dWZmLCBzcGVjaWZpY2FsbHkgdGhlIGNsaWVudCBzaWRlIGltcGxlbWVudGF0aW9uLCB3aGljaCBJJiMzOTttIHByZXR0eSBzdXJlIHJlc2lkZXMgd2l0aGluIGBuZXQvc21jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCBESUJTIGFuZCB1c2luZyB0aGF0IGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLgoKTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBgbmV0L3NtYy9gIGRpcmVjdG9yeSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgZmlsZXMgZGlyZWN0bHksIGxvb2tpbmcgZm9yIGhvdyBkYXRhIG1vdmVtZW50IGlzIG9yY2hlc3RyYXRlZCB3aXRoaW4gdGhlIFNNQyBjbGllbnQuIFRvIGFjY2VsZXJhdGUgdGhpbmdzLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIHRlcm1zICYjMzQ7bW92ZV9kYXRhJiMzNDsgYW5kICYjMzQ7ZGlicyYjMzQ7IHdpdGhpbiB0aGF0IHNwZWNpZmljIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGZvY3VzZWQgbGlzdCBvZiByZWxldmFudCBmaWxlcyBhbmQgc2VjdGlvbnMgb2YgY29kZSB0byBleGFtaW5lIGNsb3NlbHkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIGFyZWFzIHdoZXJlIHRoZSBESUJTIGludGVncmF0aW9uIGlzIG1vc3QgcmVsZXZhbnQgdG8gdGhlIGRhdGEgdHJhbnNmZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NsYy5jPTg0Nj1pbnQgc21jX2NsY19zZW5kX3Byb3Bvc2FsKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NsYy5jLTkxOS1cdFx0XHRzbWNkID0gaW5pLVx1MDAzZWlzbV9kZXZbMF07XG5uZXQvc21jL3NtY19jbGMuYzo5MjA6XHRcdFx0Y29weV90b19zbWNkZ2lkKFx1MDAyNnNtY2RfZ2lkLCBcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZ2lkKTtcbm5ldC9zbWMvc21jX2NsYy5jLTkyMS1cdFx0XHRwY2xjX3NtY2QtXHUwMDNlaXNtLmdpZCA9IGh0b25sbChzbWNkX2dpZC5naWQpO1xuLS1cbm5ldC9zbWMvc21jX2NsYy5jLTk2OS1cdFx0XHRcdHNtY2QgPSBpbmktXHUwMDNlaXNtX2RldltpXTtcbm5ldC9zbWMvc21jX2NsYy5jOjk3MDpcdFx0XHRcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19jbGMuYy05NzEtXHRcdFx0XHRnaWRjaGlkc1tlbnRyeV0uY2hpZCA9XG4tLVxubmV0L3NtYy9zbWNfY2xjLmM9MTA0Nz1zbWNkX2NsY19wcmVwX2NvbmZpcm1fYWNjZXB0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jbGMuYy0xMDYyLVx0ICAgICAgIHNpemVvZihTTUNEX0VZRUNBVENIRVIpKTtcbm5ldC9zbWMvc21jX2NsYy5jOjEwNjM6XHRjb3B5X3RvX3NtY2RnaWQoXHUwMDI2c21jZF9naWQsIFx1MDAyNnNtY2QtXHUwMDNlZGlicy1cdTAwM2VnaWQpO1xubmV0L3NtYy9zbWNfY2xjLmMtMTA2NC1cdGNsYy1cdTAwM2VoZHIudHlwZXYxID0gU01DX1RZUEVfRDtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9NTM2PXN0YXRpYyBpbnQgc21jX25sX2ZpbGxfc21jZF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTU1Ny1cdFx0Z290byBlcnJhdHRyO1xubmV0L3NtYy9zbWNfY29yZS5jOjU1ODpcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19jb3JlLmMtNTU5LVx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgU01DX05MQV9MR1JfRF9HSUQsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTg4OT1zdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy05NDAtXHRcdHNtY2QgPSBpbmktXHUwMDNlaXNtX2RldltpbmktXHUwMDNlaXNtX3NlbGVjdGVkXTtcbm5ldC9zbWMvc21jX2NvcmUuYzo5NDE6XHRcdGdldF9kZXZpY2UoXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWRldik7XG5uZXQvc21jL3NtY19jb3JlLmMtOTQyLVx0XHRsZ3ItXHUwMDNlcGVlcl9naWQuZ2lkID1cbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MTQ3NT1zdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTEtXHRcdHNtY19pc21fcHV0X3ZsYW4obGdyLVx1MDAzZXNtY2QsIGxnci1cdTAwM2V2bGFuX2lkKTtcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDkyOlx0XHRwdXRfZGV2aWNlKFx1MDAyNmxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDkzLVx0fVxuLS1cbm5ldC9zbWMvc21jX2RpYWcuYz03Mj1zdGF0aWMgaW50IF9fc21jX2RpYWdfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfZGlhZy5jLTE3Ny1cdFx0ZGluZm8ucGVlcl9naWRfZXh0ID0gY29ubi1cdTAwM2VsZ3ItXHUwMDNlcGVlcl9naWQuZ2lkX2V4dDtcbm5ldC9zbWMvc21jX2RpYWcuYzoxNzg6XHRcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19kaWFnLmMtMTc5LVx0XHRkaW5mby5teV9naWQgPSBzbWNkX2dpZC5naWQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTktI2luY2x1ZGUgXCYjMzQ7c21jX25ldGxpbmsuaFwmIzM0O1xubmV0L3NtYy9zbWNfaXNtLmM6MjA6I2luY2x1ZGUgXCYjMzQ7bGludXgvZGlicy5oXCYjMzQ7XG5uZXQvc21jL3NtY19pc20uYy0yMS1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yOD1zdGF0aWMgdTggc21jX2lzbV92Ml9zeXN0ZW1fZWlkW1NNQ19NQVhfRUlEX0xFTl07XG5uZXQvc21jL3NtY19pc20uYy0yOS1cbm5ldC9zbWMvc21jX2lzbS5jOjMwOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XG5uZXQvc21jL3NtY19pc20uYzozMTpzdGF0aWMgdm9pZCBzbWNkX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XG5uZXQvc21jL3NtY19pc20uYzozMjpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9ldmVudChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsXG5uZXQvc21jL3NtY19pc20uYzozMzpcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xubmV0L3NtYy9zbWNfaXNtLmM6MzQ6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfaXJxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdW5zaWduZWQgaW50IGRtYm5vLFxubmV0L3NtYy9zbWNfaXNtLmMtMzUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzayk7XG5uZXQvc21jL3NtY19pc20uYy0zNi1cbm5ldC9zbWMvc21jX2lzbS5jOjM3OnN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHNtY19jbGllbnRfb3BzID0ge1xubmV0L3NtYy9zbWNfaXNtLmMtMzgtXHQuYWRkX2RldiA9IHNtY2RfcmVnaXN0ZXJfZGV2LFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTQzLVxubmV0L3NtYy9zbWNfaXNtLmM6NDQ6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCBzbWNfZGlic19jbGllbnQgPSB7XG5uZXQvc21jL3NtY19pc20uYy00NS1cdC5uYW1lID0gXCYjMzQ7U01DLURcJiMzNDssXG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NzE9aW50IHNtY19pc21fY2FudGFsayhzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTczLXtcbm5ldC9zbWMvc21jX2lzbS5jOjc0Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gc21jZC1cdTAwM2VkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmMtNzUtXHR1dWlkX3QgaXNtX3JnaWQ7XG5uZXQvc21jL3NtY19pc20uYy03Ni1cbm5ldC9zbWMvc21jX2lzbS5jOjc3Olx0Y29weV90b19kaWJzZ2lkKFx1MDAyNmlzbV9yZ2lkLCBwZWVyX2dpZCk7XG5uZXQvc21jL3NtY19pc20uYzo3ODpcdHJldHVybiBkaWJzLVx1MDAzZW9wcy1cdTAwM2VxdWVyeV9yZW1vdGVfZ2lkKGRpYnMsIFx1MDAyNmlzbV9yZ2lkLCB2bGFuX2lkID8gMSA6IDAsXG5uZXQvc21jL3NtY19pc20uYy03OS1cdFx0XHRcdFx0ICB2bGFuX2lkKTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz05MD11MTYgc21jX2lzbV9nZXRfY2hpZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy05MS17XG5uZXQvc21jL3NtY19pc20uYzo5MjpcdHJldHVybiBzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cdTAwM2VkaWJzKTtcbm5ldC9zbWMvc21jX2lzbS5jLTkzLX1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0xMzM9aW50IHNtY19pc21fZ2V0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTQwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbm5ldC9zbWMvc21jX2lzbS5jOjE0MTpcdGlmICghc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZClcbm5ldC9zbWMvc21jX2lzbS5jLTE0Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTE2My1cdCAqL1xubmV0L3NtYy9zbWNfaXNtLmM6MTY0Olx0aWYgKHNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlYWRkX3ZsYW5faWQoc21jZC1cdTAwM2VkaWJzLCB2bGFuaWQpKSB7XG5uZXQvc21jL3NtY19pc20uYy0xNjUtXHRcdGtmcmVlKG5ld192bGFuKTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz0xNzk9aW50IHNtY19pc21fcHV0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTg3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbm5ldC9zbWMvc21jX2lzbS5jOjE4ODpcdGlmICghc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VkZWxfdmxhbl9pZClcbm5ldC9zbWMvc21jX2lzbS5jLTE4OS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTIwNS1cdC8qIEZvdW5kIGFuZCB0aGUgbGFzdCByZWZlcmVuY2UganVzdCBnb25lICovXG5uZXQvc21jL3NtY19pc20uYzoyMDY6XHRpZiAoc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VkZWxfdmxhbl9pZChzbWNkLVx1MDAzZWRpYnMsIHZsYW5pZCkpXG5uZXQvc21jL3NtY19pc20uYy0yMDctXHRcdHJjID0gLUVJTztcbi0tXG5uZXQvc21jL3NtY19pc20uYz0yMTU9dm9pZCBzbWNfaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBzbWNkX2RldiAqc21jZCxcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMTcte1xubmV0L3NtYy9zbWNfaXNtLmM6MjE4Olx0c3RydWN0IGRpYnNfZG1iIGRtYjtcbm5ldC9zbWMvc21jX2lzbS5jLTIxOS1cbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMjktXG5uZXQvc21jL3NtY19pc20uYzoyMzA6XHRzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXVucmVnaXN0ZXJfZG1iKHNtY2QtXHUwMDNlZGlicywgXHUwMDI2ZG1iKTtcbm5ldC9zbWMvc21jX2lzbS5jLTIzMS1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yMzU9aW50IHNtY19pc21fcmVnaXN0ZXJfZG1iKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgZG1iX2xlbixcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMzcte1xubmV0L3NtYy9zbWNfaXNtLmM6MjM4Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmM6MjM5Olx0c3RydWN0IGRpYnNfZG1iIGRtYjtcbm5ldC9zbWMvc21jX2lzbS5jLTI0MC1cdGludCByYztcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yNDUtXHRkbWIudmxhbl9pZCA9IGxnci1cdTAwM2V2bGFuX2lkO1xubmV0L3NtYy9zbWNfaXNtLmM6MjQ2Olx0Y29weV90b19kaWJzZ2lkKFx1MDAyNmRtYi5yZ2lkLCBcdTAwMjZsZ3ItXHUwMDNlcGVlcl9naWQpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjQ3LVxubmV0L3NtYy9zbWNfaXNtLmM6MjQ4Olx0ZGlicyA9IGxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnM7XG5uZXQvc21jL3NtY19pc20uYzoyNDk6XHRyYyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZXJlZ2lzdGVyX2RtYihkaWJzLCBcdTAwMjZkbWIsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG5uZXQvc21jL3NtY19pc20uYy0yNTAtXHRpZiAoIXJjKSB7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI2NS1cdCAqL1xubmV0L3NtYy9zbWNfaXNtLmM6MjY2Olx0cmV0dXJuIChzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXN1cHBvcnRfbW1hcHBlZF9yZG1iIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfaXNtLmM6MjY3Olx0XHRzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXN1cHBvcnRfbW1hcHBlZF9yZG1iKHNtY2QtXHUwMDNlZGlicykpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjY4LX1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yNzA9aW50IHNtY19pc21fYXR0YWNoX2RtYihzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgdTY0IHRva2VuLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI3Mi17XG5uZXQvc21jL3NtY19pc20uYzoyNzM6XHRzdHJ1Y3QgZGlic19kbWIgZG1iO1xubmV0L3NtYy9zbWNfaXNtLmMtMjc0LVx0aW50IHJjID0gMDtcbm5ldC9zbWMvc21jX2lzbS5jLTI3NS1cbm5ldC9zbWMvc21jX2lzbS5jOjI3NjpcdGlmICghZGV2LVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWF0dGFjaF9kbWIpXG5uZXQvc21jL3NtY19pc20uYy0yNzctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI4MC1cdGRtYi5kbWJfdG9rID0gdG9rZW47XG5uZXQvc21jL3NtY19pc20uYzoyODE6XHRyYyA9IGRldi1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VhdHRhY2hfZG1iKGRldi1cdTAwM2VkaWJzLCBcdTAwMjZkbWIpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjgyLVx0aWYgKCFyYykge1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTI5Mz1pbnQgc21jX2lzbV9kZXRhY2hfZG1iKHN0cnVjdCBzbWNkX2RldiAqZGV2LCB1NjQgdG9rZW4pXG5uZXQvc21jL3NtY19pc20uYy0yOTQte1xubmV0L3NtYy9zbWNfaXNtLmM6Mjk1Olx0aWYgKCFkZXYtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlZGV0YWNoX2RtYilcbm5ldC9zbWMvc21jX2lzbS5jLTI5Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG5uZXQvc21jL3NtY19pc20uYy0yOTctXG5uZXQvc21jL3NtY19pc20uYzoyOTg6XHRyZXR1cm4gZGV2LVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWRldGFjaF9kbWIoZGV2LVx1MDAzZWRpYnMsIHRva2VuKTtcbm5ldC9zbWMvc21jX2lzbS5jLTI5OS19XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9MzAxPXN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzA3LVx0c3RydWN0IG5sYXR0ciAqcG9ydF9hdHRycztcbm5ldC9zbWMvc21jX2lzbS5jOjMwODpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbm5ldC9zbWMvc21jX2lzbS5jLTMwOS1cdHN0cnVjdCBubGF0dHIgKmF0dHJzO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTMxMi1cbm5ldC9zbWMvc21jX2lzbS5jOjMxMzpcdGRpYnMgPSBzbWNkLVx1MDAzZWRpYnM7XG5uZXQvc21jL3NtY19pc20uYy0zMTQtXHRubGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsIGNiLVx1MDAzZW5saC1cdTAwM2VubG1zZ19zZXEsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzI3LVx0bWVtc2V0KFx1MDAyNnNtY19wY2lfZGV2LCAwLCBzaXplb2Yoc21jX3BjaV9kZXYpKTtcbm5ldC9zbWMvc21jX2lzbS5jOjMyODpcdHNtY19zZXRfcGNpX3ZhbHVlcyh0b19wY2lfZGV2KGRpYnMtXHUwMDNlZGV2LnBhcmVudCksIFx1MDAyNnNtY19wY2lfZGV2KTtcbm5ldC9zbWMvc21jX2lzbS5jLTMyOS1cdGlmIChubGFfcHV0X3UzMihza2IsIFNNQ19OTEFfREVWX1BDSV9GSUQsIHNtY19wY2lfZGV2LnBjaV9maWQpKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTM2NT1zdGF0aWMgdm9pZCBzbWNfbmxfcHJlcF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVx0XHRcdGdvdG8gbmV4dDtcbm5ldC9zbWMvc21jX2lzbS5jOjM3ODpcdFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cdTAwM2VkaWJzKSlcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cdFx0XHRnb3RvIG5leHQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9Mzk2PXN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsge1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTM5OC1cdHN0cnVjdCBzbWNkX2RldiAqc21jZDtcbm5ldC9zbWMvc21jX2lzbS5jOjM5OTpcdHN0cnVjdCBkaWJzX2V2ZW50IGV2ZW50O1xubmV0L3NtYy9zbWNfaXNtLmMtNDAwLX07XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NDE3PXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX3N3X2V2ZW50KHN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsgKndyaylcbm5ldC9zbWMvc21jX2lzbS5jLTQxOC17XG5uZXQvc21jL3NtY19pc20uYzo0MTk6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSB3cmstXHUwMDNlc21jZC1cdTAwM2VkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmMtNDIwLVx0dW5pb24gc21jZF9zd19ldmVudF9pbmZvIGV2X2luZm87XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDMxLVx0XHRpZiAoZXZfaW5mby5jb2RlID09IElTTV9FVkVOVF9SRVFVRVNUIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfaXNtLmM6NDMyOlx0XHQgICAgZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KSB7XG5uZXQvc21jL3NtY19pc20uYy00MzMtXHRcdFx0ZXZfaW5mby5jb2RlID0gSVNNX0VWRU5UX1JFU1BPTlNFO1xubmV0L3NtYy9zbWNfaXNtLmM6NDM0Olx0XHRcdGNvcHlfdG9fZGlic2dpZChcdTAwMjZpc21fcmdpZCwgXHUwMDI2cGVlcl9naWQpO1xubmV0L3NtYy9zbWNfaXNtLmM6NDM1Olx0XHRcdGRpYnMtXHUwMDNlb3BzLVx1MDAzZXNpZ25hbF9ldmVudChkaWJzLCBcdTAwMjZpc21fcmdpZCxcbm5ldC9zbWMvc21jX2lzbS5jLTQzNi1cdFx0XHRcdFx0ICAgICAgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTQ2Nj1zdGF0aWMgc3RydWN0IHNtY2RfZGV2ICpzbWNkX2FsbG9jX2Rldihjb25zdCBjaGFyICpuYW1lLCBpbnQgbWF4X2RtYnMpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDkwLVxubmV0L3NtYy9zbWNfaXNtLmM6NDkxOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbm5ldC9zbWMvc21jX2lzbS5jLTQ5Mi17XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDk1LVxubmV0L3NtYy9zbWNfaXNtLmM6NDk2Olx0bWF4X2RtYnMgPSBkaWJzLVx1MDAzZW9wcy1cdTAwM2VtYXhfZG1icygpO1xubmV0L3NtYy9zbWNfaXNtLmMtNDk3LVxubmV0L3NtYy9zbWNfaXNtLmM6NDk4Olx0c21jZCA9IHNtY2RfYWxsb2NfZGV2KGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSwgbWF4X2RtYnMpO1xubmV0L3NtYy9zbWNfaXNtLmMtNDk5LVx0aWYgKCFzbWNkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUwMS1cbm5ldC9zbWMvc21jX2lzbS5jOjUwMjpcdHNtY2QtXHUwMDNlZGlicyA9IGRpYnM7XG5uZXQvc21jL3NtY19pc20uYzo1MDM6XHRkaWJzX3NldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCwgc21jZCk7XG5uZXQvc21jL3NtY19pc20uYy01MDQtXG5uZXQvc21jL3NtY19pc20uYzo1MDU6XHRpZiAoc21jX3BuZXRpZF9ieV9kZXZfcG9ydChkaWJzLVx1MDAzZWRldi5wYXJlbnQsIDAsIHNtY2QtXHUwMDNlcG5ldGlkKSlcbm5ldC9zbWMvc21jX2lzbS5jLTUwNi1cdFx0c21jX3BuZXRpZF9ieV90YWJsZV9zbWNkKHNtY2QpO1xubmV0L3NtYy9zbWNfaXNtLmMtNTA3LVxubmV0L3NtYy9zbWNfaXNtLmM6NTA4Olx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soZGlicykgfHxcbm5ldC9zbWMvc21jX2lzbS5jOjUwOTpcdCAgICAoZGlicy1cdTAwM2VvcHMtXHUwMDNlYWRkX3ZsYW5faWQgXHUwMDI2XHUwMDI2XG5uZXQvc21jL3NtY19pc20uYzo1MTA6XHQgICAgICFkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZChkaWJzLCBJU01fUkVTRVJWRURfVkxBTklEKSkpIHtcbm5ldC9zbWMvc21jX2lzbS5jLTUxMS1cdFx0c21jX2lzbV9zZXRfdjJfY2FwYWJsZSgpO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUyMS1cdFx0XHRcdFx0XHQgIHN0cnVjdCBzbWNkX2RldiwgbGlzdCk7XG5uZXQvc21jL3NtY19pc20uYzo1MjI6XHRcdGlmIChmZW50cnkgXHUwMDI2XHUwMDI2IHNtY19pc21faXNfbG9vcGJhY2soZmVudHJ5LVx1MDAzZWRpYnMpKVxubmV0L3NtYy9zbWNfaXNtLmMtNTIzLVx0XHRcdGxpc3RfYWRkKFx1MDAyNnNtY2QtXHUwMDNlbGlzdCwgXHUwMDI2ZmVudHJ5LVx1MDAzZWxpc3QpO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUzMi1cdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtzbWM6IGFkZGluZyBzbWNkIGRldmljZSAlcyB3aXRoIHBuZXRpZCAlLjE2cyVzXFxuXCYjMzQ7LFxubmV0L3NtYy9zbWNfaXNtLmM6NTMzOlx0XHRcdFx0ICAgIGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSwgc21jZC1cdTAwM2VwbmV0aWQsXG5uZXQvc21jL3NtY19pc20uYy01MzQtXHRcdFx0XHQgICAgc21jZC1cdTAwM2VwbmV0aWRfYnlfdXNlciA/XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTM4LVx0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwmIzM0O3NtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGhvdXQgcG5ldGlkXFxuXCYjMzQ7LFxubmV0L3NtYy9zbWNfaXNtLmM6NTM5Olx0XHRcdFx0ICAgIGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSk7XG5uZXQvc21jL3NtY19pc20uYy01NDAtXHRyZXR1cm47XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTQyLVxubmV0L3NtYy9zbWNfaXNtLmM6NTQzOnN0YXRpYyB2b2lkIHNtY2RfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxubmV0L3NtYy9zbWNfaXNtLmMtNTQ0LXtcbm5ldC9zbWMvc21jX2lzbS5jOjU0NTpcdHN0cnVjdCBzbWNkX2RldiAqc21jZCA9IGRpYnNfZ2V0X3ByaXYoZGlicywgXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTU0Ni1cbm5ldC9zbWMvc21jX2lzbS5jLTU0Ny1cdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7c21jOiByZW1vdmluZyBzbWNkIGRldmljZSAlc1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX2lzbS5jOjU0ODpcdFx0XHQgICAgZGV2X25hbWUoXHUwMDI2ZGlicy1cdTAwM2VkZXYpKTtcbm5ldC9zbWMvc21jX2lzbS5jLTU0OS1cdHNtY2QtXHUwMDNlZ29pbmdfYXdheSA9IDE7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTY4LSAqL1xubmV0L3NtYy9zbWNfaXNtLmM6NTY5OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcbm5ldC9zbWMvc21jX2lzbS5jOjU3MDpcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpXG5uZXQvc21jL3NtY19pc20uYy01NzEte1xubmV0L3NtYy9zbWNfaXNtLmM6NTcyOlx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcdTAwMjZzbWNfZGlic19jbGllbnQpO1xubmV0L3NtYy9zbWNfaXNtLmMtNTczLVx0c3RydWN0IHNtY19pc21fZXZlbnRfd29yayAqd3JrO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTU5My0gKi9cbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG5uZXQvc21jL3NtY19pc20uYy01OTUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbm5ldC9zbWMvc21jX2lzbS5jLTU5Ni17XG5uZXQvc21jL3NtY19pc20uYzo1OTc6XHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG5uZXQvc21jL3NtY19pc20uYy01OTgtXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBOVUxMO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTYwOD1pbnQgc21jX2lzbV9zaWduYWxfc2h1dGRvd24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNjE1LVx0XHRyZXR1cm4gMDtcbm5ldC9zbWMvc21jX2lzbS5jOjYxNjpcdGlmICghbGdyLVx1MDAzZXNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KVxubmV0L3NtYy9zbWNfaXNtLmMtNjE3LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvc21jL3NtY19pc20uYy02MjEtXHRldl9pbmZvLmNvZGUgPSBJU01fRVZFTlRfUkVRVUVTVDtcbm5ldC9zbWMvc21jX2lzbS5jOjYyMjpcdGNvcHlfdG9fZGlic2dpZChcdTAwMjZpc21fcmdpZCwgXHUwMDI2bGdyLVx1MDAzZXBlZXJfZ2lkKTtcbm5ldC9zbWMvc21jX2lzbS5jOjYyMzpcdHJjID0gbGdyLVx1MDAzZXNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KGxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnMsIFx1MDAyNmlzbV9yZ2lkLFxubmV0L3NtYy9zbWNfaXNtLmMtNjI0LVx0XHRcdFx0XHQgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTYzMD1pbnQgc21jX2lzbV9pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNjM2LVxubmV0L3NtYy9zbWNfaXNtLmM6NjM3Olx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcdTAwMjZzbWNfZGlic19jbGllbnQpO1xubmV0L3NtYy9zbWNfaXNtLmMtNjM4LVx0cmV0dXJuIHJjO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTY0MT12b2lkIHNtY19pc21fZXhpdCh2b2lkKVxubmV0L3NtYy9zbWNfaXNtLmMtNjQyLXtcbm5ldC9zbWMvc21jX2lzbS5jOjY0MzpcdGRpYnNfdW5yZWdpc3Rlcl9jbGllbnQoXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTY0NC19XG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxubmV0L3NtYy9zbWNfaXNtLmg6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZGlicy5oXHUwMDNlXG5uZXQvc21jL3NtY19pc20uaC0xNi1cbi0tXG5uZXQvc21jL3NtY19pc20uaD02Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfaXNtX3dyaXRlKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdTY0IGRtYl90b2ssXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtNzEtXG5uZXQvc21jL3NtY19pc20uaDo3MjpcdHJjID0gc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2Vtb3ZlX2RhdGEoc21jZC1cdTAwM2VkaWJzLCBkbWJfdG9rLCBpZHgsIHNmLCBvZmZzZXQsXG5uZXQvc21jL3NtY19pc20uaC03My1cdFx0XHRcdCAgICAgICBkYXRhLCBsZW4pO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oPTg5PXN0YXRpYyBpbmxpbmUgYm9vbCBzbWNfaXNtX2lzX2VtdWxhdGVkKHN0cnVjdCBzbWNkX2RldiAqc21jZClcbm5ldC9zbWMvc21jX2lzbS5oLTkwLXtcbm5ldC9zbWMvc21jX2lzbS5oOjkxOlx0dTE2IGNoaWQgPSBzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cdTAwM2VkaWJzKTtcbm5ldC9zbWMvc21jX2lzbS5oLTkyLVxuLS1cbm5ldC9zbWMvc21jX2lzbS5oLTk1LVxubmV0L3NtYy9zbWNfaXNtLmg6OTY6c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfbG9vcGJhY2soc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxubmV0L3NtYy9zbWNfaXNtLmgtOTcte1xubmV0L3NtYy9zbWNfaXNtLmg6OTg6XHRyZXR1cm4gKGRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoZGlicykgPT0gRElCU19MT09QQkFDS19GQUJSSUMpO1xubmV0L3NtYy9zbWNfaXNtLmgtOTktfVxubmV0L3NtYy9zbWNfaXNtLmgtMTAwLVxubmV0L3NtYy9zbWNfaXNtLmg6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3NtY2RnaWQoc3RydWN0IHNtY2RfZ2lkICpzZ2lkLCB1dWlkX3QgKmRpYnNfZ2lkKVxubmV0L3NtYy9zbWNfaXNtLmgtMTAyLXtcbi0tXG5uZXQvc21jL3NtY19pc20uaC0xMDQtXG5uZXQvc21jL3NtY19pc20uaDoxMDU6XHRtZW1jcHkoXHUwMDI2dGVtcCwgZGlic19naWQsIHNpemVvZihzZ2lkLVx1MDAzZWdpZCkpO1xubmV0L3NtYy9zbWNfaXNtLmgtMTA2LVx0c2dpZC1cdTAwM2VnaWQgPSBudG9obGwodGVtcCk7XG5uZXQvc21jL3NtY19pc20uaDoxMDc6XHRtZW1jcHkoXHUwMDI2dGVtcCwgKHVpbnQ4X3QgKilkaWJzX2dpZCAmIzQzOyBzaXplb2Yoc2dpZC1cdTAwM2VnaWQpLFxubmV0L3NtYy9zbWNfaXNtLmgtMTA4LVx0ICAgICAgIHNpemVvZihzZ2lkLVx1MDAzZWdpZF9leHQpKTtcbi0tXG5uZXQvc21jL3NtY19pc20uaC0xMTEtXG5uZXQvc21jL3NtY19pc20uaDoxMTI6c3RhdGljIGlubGluZSB2b2lkIGNvcHlfdG9fZGlic2dpZCh1dWlkX3QgKmRpYnNfZ2lkLCBzdHJ1Y3Qgc21jZF9naWQgKnNnaWQpXG5uZXQvc21jL3NtY19pc20uaC0xMTMte1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oLTExNi1cdHRlbXAgPSBodG9ubGwoc2dpZC1cdTAwM2VnaWQpO1xubmV0L3NtYy9zbWNfaXNtLmg6MTE3Olx0bWVtY3B5KGRpYnNfZ2lkLCBcdTAwMjZ0ZW1wLCBzaXplb2Yoc2dpZC1cdTAwM2VnaWQpKTtcbm5ldC9zbWMvc21jX2lzbS5oLTExOC1cdHRlbXAgPSBodG9ubGwoc2dpZC1cdTAwM2VnaWRfZXh0KTtcbm5ldC9zbWMvc21jX2lzbS5oOjExOTpcdG1lbWNweSgodWludDhfdCAqKWRpYnNfZ2lkICYjNDM7IHNpemVvZihzZ2lkLVx1MDAzZWdpZCksIFx1MDAyNnRlbXAsXG5uZXQvc21jL3NtY19pc20uaC0xMjAtXHQgICAgICAgc2l6ZW9mKHNnaWQtXHUwMDNlZ2lkX2V4dCkpO1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz0xMDE9c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqcG5ldF9uYW1lKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xNzEtXHRcdFx0XHRcdCAgICBcJiMzNDslLjE2c1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX3BuZXQuYzoxNzI6XHRcdFx0XHRcdCAgICBkZXZfbmFtZShcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KSxcbm5ldC9zbWMvc21jX3BuZXQuYy0xNzMtXHRcdFx0XHRcdCAgICBzbWNkLVx1MDAzZXBuZXRpZCk7XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTMzND1zdGF0aWMgc3RydWN0IHNtY2RfZGV2ICpzbWNfcG5ldF9maW5kX3NtY2QoY2hhciAqc21jZF9uYW1lKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0zMzktXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHNtY2RfZGV2LCBcdTAwMjZzbWNkX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcbm5ldC9zbWMvc21jX3BuZXQuYzozNDA6XHRcdGlmICghc3RybmNtcChkZXZfbmFtZShcdTAwMjZzbWNkX2Rldi1cdTAwM2VkaWJzLVx1MDAzZWRldiksIHNtY2RfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYy0zNDEtXHRcdFx0ICAgICBJQl9ERVZJQ0VfTkFNRV9NQVggLSAxKSB8fFxubmV0L3NtYy9zbWNfcG5ldC5jOjM0MjpcdFx0ICAgIChzbWNkX2Rldi1cdTAwM2VkaWJzLVx1MDAzZWRldi5wYXJlbnQgXHUwMDI2XHUwMDI2XG5uZXQvc21jL3NtY19wbmV0LmM6MzQzOlx0XHQgICAgICFzdHJuY21wKGRldl9uYW1lKHNtY2RfZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCksIHNtY2RfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYy0zNDQtXHRcdFx0ICAgICAgSUJfREVWSUNFX05BTUVfTUFYIC0gMSkpKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz00MTY9c3RhdGljIGludCBzbWNfcG5ldF9hZGRfaWIoc3RydWN0IHNtY19wbmV0dGFibGUgKnBuZXR0YWJsZSwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy00NDEtXHRcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtzbWM6IHNtY2QgZGV2aWNlICVzIGFwcGxpZWQgdXNlciBkZWZpbmVkIHBuZXRpZCAlLjE2c1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX3BuZXQuYzo0NDI6XHRcdFx0XHRcdCAgICBkZXZfbmFtZShcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KSxcbm5ldC9zbWMvc21jX3BuZXQuYy00NDMtXHRcdFx0XHRcdCAgICBzbWNkLVx1MDAzZXBuZXRpZCk7XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTEyMDI9aW50IHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2RkZXYpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMTYtXHRcdCAgICAoIXN0cm5jbXAodG1wX3BlLVx1MDAzZWliX25hbWUsXG5uZXQvc21jL3NtY19wbmV0LmM6MTIxNzpcdFx0XHQgICAgICAgZGV2X25hbWUoXHUwMDI2c21jZGRldi1cdTAwM2VkaWJzLVx1MDAzZWRldiksXG5uZXQvc21jL3NtY19wbmV0LmMtMTIxOC1cdFx0XHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cdTAwM2VpYl9uYW1lKSkgfHxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjE5Olx0XHQgICAgIChzbWNkZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCBcdTAwMjZcdTAwMjZcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjIwLVx0XHQgICAgICAhc3RybmNtcCh0bXBfcGUtXHUwMDNlaWJfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjIxOlx0XHRcdCAgICAgICBkZXZfbmFtZShzbWNkZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCksXG5uZXQvc21jL3NtY19wbmV0LmMtMTIyMi1cdFx0XHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cdTAwM2VpYl9uYW1lKSkpKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIFNNQyBXcml0ZSBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIGBzbWNfaXNtX3dyaXRlYCBmdW5jdGlvbiBjYWxsLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2suIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKndobyoqIGFuZCB0aGUgKipob3cqKiDigJMgc3BlY2lmaWNhbGx5LCAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgZnVuY3Rpb24gYW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBwYXRoLCB0aGUgY2FsbCAqc3RhY2sqLCBsb29rcyBsaWtlIHRoYXQgbGVhZHMgdG8gaXQuIEVzc2VudGlhbGx5LCBJJiMzOTttIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvZGUmIzM5O3MgZXhlY3V0aW9uIGZsb3cgbGVhZGluZyB1cCB0byB0aGUgcG9pbnQgb2YgaW50ZXJlc3QuIFRoaXMgaXMgYSBjb21tb24gZGVidWdnaW5nIHRlY2huaXF1ZTsgYnkgZXhhbWluaW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucywgSSBjYW4gb2Z0ZW4gaW5mZXIgdGhlIGNvbnRleHQgYW5kIHRoZSBwdXJwb3NlIG9mIHRoZSB3cml0ZSBvcGVyYXRpb24uIEtub3dpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4sIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSB3cml0ZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19pc21fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2lzbS5oPTY0PWludCBzbWNkX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbm5ldC9zbWMvc21jX2lzbS5oLTY1LVxubmV0L3NtYy9zbWNfaXNtLmg6NjY6c3RhdGljIGlubGluZSBpbnQgc21jX2lzbV93cml0ZShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsIHU2NCBkbWJfdG9rLFxubmV0L3NtYy9zbWNfaXNtLmgtNjctXHRcdFx0XHR1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbm5ldC9zbWMvc21jX3R4LmM9MzAzPWludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxubmV0L3NtYy9zbWNfdHguYy0zMDctXG5uZXQvc21jL3NtY190eC5jOjMwODpcdHJjID0gc21jX2lzbV93cml0ZShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkLCBjb25uLVx1MDAzZXBlZXJfdG9rZW4sXG5uZXQvc21jL3NtY190eC5jLTMwOS1cdFx0XHQgICBjb25uLVx1MDAzZXBlZXJfcm1iZV9pZHgsIHNpZ25hbCwgY29ubi1cdTAwM2V0eF9vZmYgJiM0Mzsgb2Zmc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkxNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBzbWNkX3R4X2lzbV93cml0ZWAgQ2FsbGVycyoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgc21jZF90eF9pc21fd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciByZXNlYXJjaGluZy4gVGhpcyBnaXZlcyBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZnVuY3Rpb24mIzM5O3Mgb3ZlcmFsbCBwdXJwb3NlIGFuZCBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jZF90eF9pc21fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTIzNz1pbnQgc21jZF9jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTI1My1cdGNkYy5jb25zLmNvbm5fc3RhdGVfZmxhZ3MgPSBjb25uLVx1MDAzZWxvY2FsX3R4X2N0cmwuY29ubl9zdGF0ZV9mbGFncztcbm5ldC9zbWMvc21jX2NkYy5jOjI1NDpcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgXHUwMDI2Y2RjLCBzaXplb2YoY2RjKSwgMCwgMSk7XG5uZXQvc21jL3NtY19jZGMuYy0yNTUtXHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfdHguYz0xODE9aW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy0zMDItLyogc25kYnVmIGNvbnN1bWVyOiBhY3R1YWwgZGF0YSB0cmFuc2ZlciBvZiBvbmUgdGFyZ2V0IGNodW5rIHdpdGggSVNNIHdyaXRlICovXG5uZXQvc21jL3NtY190eC5jOjMwMzppbnQgc21jZF90eF9pc21fd3JpdGUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuLFxubmV0L3NtYy9zbWNfdHguYy0zMDQtXHRcdCAgICAgIHUzMiBvZmZzZXQsIGludCBzaWduYWwpXG4tLVxubmV0L3NtYy9zbWNfdHguYz00MjE9c3RhdGljIGludCBzbWNkX3R4X3JkbWFfd3JpdGVzKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL3NtY190eC5jLTQzNS1cbm5ldC9zbWMvc21jX3R4LmM6NDM2Olx0XHRcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgZGF0YSwgc3JjX2xlbiwgZHN0X29mZiAmIzQzO1xubmV0L3NtYy9zbWNfdHguYy00MzctXHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyksIDApO1xuLS1cbm5ldC9zbWMvc21jX3R4Lmg9NDA9dm9pZCBzbWNfdHhfY29uc3VtZXJfdXBkYXRlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmb3JjZSk7XG5uZXQvc21jL3NtY190eC5oOjQxOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXG5uZXQvc21jL3NtY190eC5oLTQyLVx0XHQgICAgICB1MzIgb2Zmc2V0LCBpbnQgc2lnbmFsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgRElCUyBNZXNzYWdpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgYHNtY190eF9zZW5kbXNnYCBhbmQgYHNtY2RfY2RjX21zZ19zZW5kYCBib3RoIHVsdGltYXRlbHkgcmVseSBvbiBgc21jZF90eF9pc21fd3JpdGVgLiBUaGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBoZXJlLCB0aGUgY29tbW9uIGRlbm9taW5hdG9yLiBOb3csIEkgd2FudCB0byB0cmFjZSB0aGUgZGF0YSBmbG93IHRocm91Z2ggdGhlIERJQlMgbG9vcGJhY2sgZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgb3ZlcmFsbCBESUJTIGZ1bmN0aW9uYWxpdHkuIFNpbmNlIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCBgZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jYCBhbmQgdGhlbiBnZXQgaW50byB0aGUgbG9vcGJhY2sgc3BlY2lmaWMgY29kZSBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIERJQlMgbWVjaGFuaWNzIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBpbiB0aG9zZSBmaWxlcywgd2hpY2ggd2lsbCBjbGFyaWZ5IGhvdyB0aGF0IGRhdGEgZ2V0cyB3cml0dGVuIHZpYSB0aGUgdW5kZXJseWluZyBJU00gaW50ZXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNTpcdHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiAyMzY6XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gMjM3Olx0XHRcdFx0ICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbiAyMzg6XHR7XG4gMjM5Olx0XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gMjQwOlx0XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4gMjQxOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDI0MjpcdFx0dTE2IHNfbWFzaztcbiAyNDM6XHRcdHU4IGNsaWVudF9pZDtcbiAyNDQ6XHRcdHUzMiBzYmFfaWR4O1xuIDI0NTpcdFxuIDI0NjpcdFx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG4gMjQ3Olx0XG4gMjQ4Olx0XHRyZWFkX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjQ5Olx0XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xuIDI1MDpcdFx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xuIDI1MTpcdFx0XHRcdHJtYl9ub2RlID0gdG1wX25vZGU7XG4gMjUyOlx0XHRcdFx0YnJlYWs7XG4gMjUzOlx0XHRcdH1cbiAyNTQ6XHRcdH1cbiAyNTU6XHRcdGlmICghcm1iX25vZGUpIHtcbiAyNTY6XHRcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjU3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI1ODpcdFx0fVxuIDI1OTpcdFx0aWYgKCh1NjQpb2Zmc2V0ICYjNDM7IHNpemUgXHUwMDNlIHJtYl9ub2RlLVx1MDAzZWxlbikge1xuIDI2MDpcdFx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyNjE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMjYyOlx0XHR9XG4gMjYzOlx0XG4gMjY0Olx0XHRtZW1jcHkoKGNoYXIgKilybWJfbm9kZS1cdTAwM2VjcHVfYWRkciAmIzQzOyBvZmZzZXQsIGRhdGEsIHNpemUpO1xuIDI2NTpcdFx0c2JhX2lkeCA9IHJtYl9ub2RlLVx1MDAzZXNiYV9pZHg7XG4gMjY2Olx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyNjc6XHRcbiAyNjg6XHRcdGlmICghc2YpXG4gMjY5Olx0XHRcdHJldHVybiAwO1xuIDI3MDpcdFxuIDI3MTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjcyOlx0XHRjbGllbnRfaWQgPSBkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XG4gMjczOlx0XHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XG4gMjc0Olx0XHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcdTAwMjZcdTAwMjYgZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxuIDI3NTpcdFx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuIDI3NjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiAyNzc6XHRcbiAyNzg6XHRcdHJldHVybiAwO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbiAyODI6XHRcdC5nZXRfZmFicmljX2lkID0gZGlic19sb19nZXRfZmFicmljX2lkLFxuIDI4MzpcdFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXG4gMjg0Olx0XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgxNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTG9jayBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSW4gdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24sIEkgc2VlIGEgbG9jayBhY3F1aXNpdGlvbiBjaGFuZ2VkLiBCZWZvcmUgdGhlIHBhdGNoLCBpdCB3YXMgYSBzaW1wbGUgYHNwaW5fbG9ja2AgYW5kIGBzcGluX3VubG9ja2Agc2VxdWVuY2UuIE5vdywgaXQmIzM5O3MgYHNwaW5fbG9ja19pcnFzYXZlYCBhbmQgYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoeSogdGhpcyBjaGFuZ2U/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgdGhhdCBuZWNlc3NpdGF0ZWQgdGhpcyBtb2RpZmljYXRpb24/CgpUaGUgZGlmZmVyZW5jZSBpcyBzaWduaWZpY2FudDogYF9pcnFzYXZlYCBpbXBsaWVzIHRoZSBuZWVkIHRvIGRpc2FibGUgaW50ZXJydXB0cyAoYW5kIHNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IHN0YXRlKSBkdXJpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb24uIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBmbGF3LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBhIHJhY2UgY29uZGl0aW9uIG9yIGludGVycnVwdC1yZWxhdGVkIGlzc3VlIHdhcyBkaXNjb3ZlcmVkLiBUaGUgYGRpYnMtJmd0O2xvY2tgIGlzIHByb2JhYmx5IHByb3RlY3Rpbmcgc29tZXRoaW5nIHRoYXQgaXMgYWxzbyBhY2Nlc3NlZCBmcm9tIGludGVycnVwdCBoYW5kbGVycywgb3Igc29tZXRoaW5nIHRoYXQgaXMgc2Vuc2l0aXZlIHRvIGludGVycnVwdCBsYXRlbmN5LgoKVG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byBzZWUgKmV2ZXJ5d2hlcmUqIHRoaXMgYGRpYnMtJmd0O2xvY2tgIGlzIHVzZWQuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgYWxsIGluc3RhbmNlcyBvZiBgZGlicy0mZ3Q7bG9ja2AuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBlbnRpcmUgdXNhZ2UgcGF0dGVybi4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBzeXN0ZW0uIEFyZSBvdGhlciBmdW5jdGlvbnMgYWxzbyBjaGFuZ2luZyB0byBpbnRlcnJ1cHQgc2F2aW5nIHZlcnNpb25zPyBUaGF0IGNvbnRleHQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlIGFuZCBpZiB0aGUgY2hhbmdlIGlzIGFwcHJvcHJpYXRlLiBJZiB0aGUgZXhpc3RpbmcgY29kZSBhbHJlYWR5IGhhcyBhcHByb3ByaWF0ZSB1c2VzLCB0aGVyZSBtYXkgYmUgYW4gaXNzdWUgd2l0aCB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgdGltZSB0byBkaWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMtXHUwMDNlbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEwNy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEwOS1cdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTEwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTMyPXN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVx0aWYgKGxhc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYwLVx0XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbZG1iX25vZGUtXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yMzU9c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzE6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc1LVx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTQwPXN0YXRpYyB2b2lkIGRpYnNfc2V0dXBfZm9yd2FyZGluZyhzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudCxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDU6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Ni1cdGRpYnMtXHUwMDNlc3Vic1tjbGllbnQtXHUwMDNlaWRdID0gY2xpZW50O1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ3Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OC19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTgzPWludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05MS1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkzLVx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMy1cdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudC1cdTAwM2VpZF0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwNDpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDUtXHRcdGNsaWVudHNbY2xpZW50LVx1MDAzZWlkXS1cdTAwM2VvcHMtXHUwMDNlZGVsX2RldihkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExOTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIwLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMzU9c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDEtXHRcdHJldHVybiBkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MjpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQzLVx0ZGlicy1cdTAwM2VkZXYucmVsZWFzZSA9IGRpYnNfZGV2X3JlbGVhc2U7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyMj12b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjk6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyAmIzQzOyYjNDM7aSlcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzEtXHRcdGRpYnMtXHUwMDNlc3Vic1tpXSA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMyOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzMtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjgzPXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMS1cdGRtYi1cdTAwM2VkbWJfdG9rID0gY21kLnJlc3BvbnNlLmRtYl90b2s7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTI6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMy1cdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNDpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTUtb3V0OlxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMxOT1zdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMzMS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzMjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzMzLVx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYi1cdTAwM2VpZHggLSBJU01fRE1CX0JJVF9PRkZTRVRdID0gTk9fRElCU19DTElFTlQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzQ6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTQ5OT1zdGF0aWMgaXJxcmV0dXJuX3QgaXNtX2hhbmRsZV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MTItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MTM6XHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cdGlzbS1cdTAwM2VzYmEtXHUwMDNlcyA9IDA7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTM4LVx0fVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTM5Olx0c3Bpbl91bmxvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0MC1cdHJldHVybiBJUlFfSEFORExFRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MDkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMb2NraW5nIENvbnRleHQgaW4gdGhlIERhdGEgVHJhbnNmZXIgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkaWJzYCBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCBoYW5kbGVzIGludGVycnVwdHMsIHNwZWNpZmljYWxseSBkYXRhIHRyYW5zZmVycy4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkaWJzLSZndDtsb2NrYCBpcyBiZWluZyBncmFiYmVkIHdpdGhpbiB0aGUgaGFyZGlycSBvciBzb2Z0aXJxIGNvbnRleHQuIFRoZSBgc3Bpbl9sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jaylgIGNhbGwgaW4gYGlzbV9oYW5kbGVfaXJxYCwgb3IgcG90ZW50aWFsbHkgZWxzZXdoZXJlIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAsIG1ha2VzIHRoaXMgcHJldHR5IGNsZWFyLiBUaGlzIGltcGxpZXMgdGhhdCB3ZSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCBhYm91dCBwb3RlbnRpYWwgY29udGVudGlvbiBhbmQgcHJpb3JpdHkgaXNzdWVzLgoKTm93LCBJIHNlZSB0aGF0IHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uIGNhbGxzIGBkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0tJmd0O29wcy0mZ3Q7aGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spYCAqdW5kZXIqIHRoZSBwcm90ZWN0aW9uIG9mIGBkaWJzLSZndDtsb2NrYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBjcml0aWNhbCBwYXRoIGZvciB0aGUgZGF0YSBtb3ZlbWVudCB0cmlnZ2VyZWQgYnkgaW50ZXJydXB0cy4gSXQgbWVhbnMgdGhhdCBhbnkgb3BlcmF0aW9uIHdpdGhpbiB0aGlzIGBoYW5kbGVfaXJxYCBjYWxsIGlzIGluaGVyZW50bHkgc2VyaWFsaXplZCBieSB0aGF0IHNwaW5sb2NrLgoKVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaGFuZGxlX2lycWAgZnVuY3Rpb24uIExvb2tzIGxpa2UgaW4gdGhpcyBTTUMgY29udGV4dCwgdGhlIGBoYW5kbGVfaXJxYCBpcyByZXNvbHZlZCB0byBgc21jZF9oYW5kbGVfaXJxYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24gbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHdpdGggcmVnYXJkIHRvIHRoZSBsb2NrcyBhbmQgZGF0YSBhY2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY2RfaGFuZGxlX2lycSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pc20uYz0zMj1zdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9ldmVudChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsXG5uZXQvc21jL3NtY19pc20uYy0zMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xubmV0L3NtYy9zbWNfaXNtLmM6MzQ6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfaXJxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdW5zaWduZWQgaW50IGRtYm5vLFxubmV0L3NtYy9zbWNfaXNtLmMtMzUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzayk7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9Mzc9c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudF9vcHMgc21jX2NsaWVudF9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDAtXHQuaGFuZGxlX2V2ZW50ID0gc21jZF9oYW5kbGVfZXZlbnQsXG5uZXQvc21jL3NtY19pc20uYzo0MTpcdC5oYW5kbGVfaXJxID0gc21jZF9oYW5kbGVfaXJxLFxubmV0L3NtYy9zbWNfaXNtLmMtNDItfTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz01Njk9c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTU5My0gKi9cbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG5uZXQvc21jL3NtY19pc20uYy01OTUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczoKCioqRGl2aW5nIGludG8gYHNtY2RfaGFuZGxlX2lycWAqKgoKQWxyaWdodCwgdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgaW50ZXJydXB0cyB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc21jZF9oYW5kbGVfaXJxYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgbGlrZWx5IHJlc2lkZXMgaW4gYG5ldC9zbWMvc21jX2lzbS5jYCwgc28gSSYjMzk7bGwgcHVsbCB0aGF0IHVwIGltbWVkaWF0ZWx5LiBNeSBtZW50YWwgbW9kZWwgaXMgYWxyZWFkeSBwcmltZWQgd2l0aCB0aGUga25vd2xlZGdlIHRoYXQgU01DLCBvciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zLCBuZWNlc3NpdGF0ZXMgcHJldHR5IHRpZ2h0IHN5bmNocm9uaXphdGlvbiwgZXNwZWNpYWxseSBhdCB0aGUgaGFyZHdhcmUgaW50ZXJydXB0IGxldmVsLiBTbywgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGxvZ2ljIHJlbGF0ZWQgdG8gc2hhcmVkIG1lbW9yeSBhY2Nlc3MsIHBvdGVudGlhbGx5IHNwaW5sb2NrcyBvciBvdGhlciBjb25jdXJyZW5jeSBtZWNoYW5pc21zLCBhbmQgaW50ZXJydXB0IGRpc2FibGluZy9lbmFibGluZyBhcm91bmQgY3JpdGljYWwgc2VjdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgdGhlIGZvbGxvd2luZzogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBpZGVudGlmeSB0aGUgc3BlY2lmaWMgU01DIGNvbm5lY3Rpb24gdGhlIGludGVycnVwdCBpcyByZWxhdGVkIHRvPyBXaGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBwcm9jZXNzIHRoZSBpbnRlcnJ1cHQg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBjb21wbGV0aW9ucywgc2VuZCBjb21wbGV0aW9ucywgZXJyb3JzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ3J1Y2lhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGFjdHVhbCBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGhvdyBkYXRhIGlzIGNvcGllZCBmcm9tIHNoYXJlZCBtZW1vcnkgYnVmZmVycywgaWYgYXBwbGljYWJsZS4gQW5kIGZpbmFsbHksIEkmIzM5O2xsIGJlIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciByYWNlIGNvbmRpdGlvbnMgd2l0aGluIHRoaXMgaW50ZXJydXB0IGhhbmRsZXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2lzbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1ODU6XHR9XG4gNTg2Olx0XG4gNTg3Olx0LyogU01DRCBEZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuIENhbGxlZCBmcm9tIElTTSBkZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuXG4gNTg4Olx0ICogUGFyYW1ldGVycyBhcmUgdGhlIGlzbSBkZXZpY2UgcG9pbnRlciwgRE1CIG51bWJlciwgYW5kIHRoZSBETUJFIGJpdG1hc2suXG4gNTg5Olx0ICogRmluZCB0aGUgY29ubmVjdGlvbiBhbmQgc2NoZWR1bGUgdGhlIHRhc2tsZXQgZm9yIHRoaXMgY29ubmVjdGlvbi5cbiA1OTA6XHQgKlxuIDU5MTpcdCAqIENvbnRleHQ6XG4gNTkyOlx0ICogLSBGdW5jdGlvbiBjYWxsZWQgaW4gSVJRIGNvbnRleHQgZnJvbSBJU00gZGV2aWNlIGRyaXZlciBJUlEgaGFuZGxlci5cbiA1OTM6XHQgKi9cbiA1OTQ6XHRzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG4gNTk1Olx0XHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbiA1OTY6XHR7XG4gNTk3Olx0XHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG4gNTk4Olx0XHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBOVUxMO1xuIDU5OTpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiA2MDA6XHRcbiA2MDE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnNtY2QtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIDYwMjpcdFx0Y29ubiA9IHNtY2QtXHUwMDNlY29ubltkbWJub107XG4gNjAzOlx0XHRpZiAoY29ubiBcdTAwMjZcdTAwMjYgIWNvbm4tXHUwMDNla2lsbGVkKVxuIDYwNDpcdFx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0KTtcbiA2MDU6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2c21jZC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gNjA2Olx0fVxuIDYwNzpcdFxuIDYwODpcdGludCBzbWNfaXNtX3NpZ25hbF9zaHV0ZG93bihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbiA2MDk6XHR7XG4gNjEwOlx0XHRpbnQgcmMgPSAwO1xuIDYxMTpcdFx0dW5pb24gc21jZF9zd19ldmVudF9pbmZvIGV2X2luZm87XG4gNjEyOlx0XHR1dWlkX3QgaXNtX3JnaWQ7XG4gNjEzOlx0XG4gNjE0Olx0XHRpZiAobGdyLVx1MDAzZXBlZXJfc2h1dGRvd24pXG4gNjE1Olx0XHRcdHJldHVybiAwO1xuIDYxNjpcdFx0aWYgKCFsZ3ItXHUwMDNlc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VzaWduYWxfZXZlbnQpXG4gNjE3Olx0XHRcdHJldHVybiAwO1xuIDYxODpcdFxuIDYxOTpcdFx0bWVtY3B5KGV2X2luZm8udWlkLCBsZ3ItXHUwMDNlaWQsIFNNQ19MR1JfSURfU0laRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBkaWJzX2xvb3BiYWNrLmNgIGNvZGUuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGxvY2tpbmcgaW4gdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBvbiB0aGUgY3JpdGljYWwgcGF0aCwgY2FsbGVkIGR1cmluZyBkYXRhIHRyYW5zbWlzc2lvbiDigJMgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIGBzbWNfdHhfc2VuZG1zZ2AgZmxvdy4gSXQgdWx0aW1hdGVseSBib2lscyBkb3duIHRvIGBvcHMtJmd0O21vdmVfZGF0YWAsIHdoaWNoIHJlc29sdmVzIHRvIGBkaWJzX2xvX21vdmVfZGF0YWAuIFRoZSBjb2RlIHVzZXMgYSBwbGFpbiBgc3Bpbl9sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jaylgLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBleWVicm93cyBhcmUgcmFpc2luZy4KClRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCwgaXMgdGhhdCBgZGlicy0mZ3Q7bG9ja2AgaXMgYWxzbyBhY3F1aXJlZCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgaW4gc29tZSBvdGhlciBwbGFjZXMsIGluY2x1ZGluZyBwb3RlbnRpYWxseSB3aXRoaW4gaW50ZXJydXB0IGhhbmRsZXJzIHRoZW1zZWx2ZXMuIElmIGFuIGludGVycnVwdCB3ZXJlIHRvIG9jY3VyIHdoaWxlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgaG9sZGluZyB0aGF0IGxvY2ssIHdl4oCZcmUgc2V0dGluZyBvdXJzZWx2ZXMgdXAgZm9yIGEgbmFzdHkgbG9ja2RlcCB3YXJuaW5nLCBvciB3b3JzZSwgYSBjb21wbGV0ZSBkZWFkbG9jay4gQ2xhc3NpYy4KClRoZSBzdWdnZXN0ZWQgcGF0Y2ggdG8gdXNlIGBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKWAgaXMgdGhlIHJpZ2h0IHNvbHV0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JyZWN0IGxldmVsIG9mIHByb3RlY3Rpb24uIFdlIG5lZWQgdG8gc2F2ZSB0aGUgaW50ZXJydXB0IHN0YXRlIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sgYW5kIHRoZW4gcmVzdG9yZSBpdC4gSXQmIzM5O3MgdGhlIG1vc3QgY29tbW9uIGFuZCBjb3JyZWN0IGFwcHJvYWNoIGluIHRoZXNlIHNpdHVhdGlvbnMuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgcmVhY2hhYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQuIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBESUJTIGFuZCBESUJTX0xPIGFyZSBldmVuIGNvbmZpZ3VyZWQgYW5kIGF2YWlsYWJsZSBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AsIGBuZXQvc21jL0tjb25maWdgLCBhbmQgYW55dGhpbmcgaW4gYGFyY2gveDg2L0tjb25maWdgIHRoYXQgbWlnaHQgY29udHJvbCB0aGVzZSBmZWF0dXJlcy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50IHRvIHRoaXMgdGFyZ2V0LiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGFyY2hpdGVjdHVyZSwgd2hpY2ggbWlnaHQgbWFrZSB0aGlzIGEgbm9uLWlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBESUJTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCBuXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XG4gICA3Olx0XHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4gICA4Olx0XHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxuICAgOTpcdFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBESUJTXG4gIDE3Olx0XHRkZWZhdWx0IG5cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuICAyMDpcdFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXG4gIDIxOlx0XHQgIG9jY3VycyB3aXRoaW4gdGhlIHNhbWUgT1MuIFRoaXMgaGVscHMgaW4gY29udmVuaWVudCB0ZXN0aW5nIG9mXG4gIDIyOlx0XHQgIGRpYnMgY2xpZW50cywgc2luY2UgZGlicyBsb29wYmFjayBpcyBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUgb3JcbiAgMjM6XHRcdCAgaGFyZHdhcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MTc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIFJldmlldyBvZiBESUJTX0xPIGZvciBUZXN0aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHdoYXQmIzM5O3MgdGhpcyBgRElCU19MT2AgdGhpbmc/IEFoLCB0aGUgaGVscCB0ZXh0IGNsYXJpZmllczogaXQgY3JlYXRlcyBhIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgZGV2aWNlLCBgbG9gLiBTbywgYSBsb29wYmFjayBmb3IgRElCUyBkYXRhIHRyYW5zZmVyIHdpdGhpbiBhIHNpbmdsZSBPUy4gVGhlIGtleSB0YWtlYXdheSBpcyBpbmRlcGVuZGVuY2UgZnJvbSBhcmNoaXRlY3R1cmUgb3IgaGFyZHdhcmU7IHBlcmZlY3QgZm9yIGNvbnZlbmllbnQgdGVzdGluZyBvZiBESUJTIGNsaWVudHMuIFRoYXQmIzM5O3MgYWN0dWFsbHkgcHJldHR5IGNsZXZlci4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSB3YW50IGZvciBhIHJvYnVzdCB0ZXN0aW5nIGVudmlyb25tZW50LgoKTm93LCB3aGVyZSYjMzk7cyB0aGUgbWVhdCBvZiB0aGlzIGltcGxlbWVudGF0aW9uPyBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyB2aXJ0dWFsIGRldmljZSBhcmUgZGVmaW5lZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbmV0d29yayBjb25maWd1cmF0aW9ucywgYW5kIG1heWJlIGFueSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4gSSB3b25kZXIgaWYgaXQgaW5jbHVkZXMgYW55IGhvb2tzIGZvciBjYXB0dXJpbmcgYW5kIGFuYWx5emluZyB0aGUgZGF0YSBmbG93LiBHb3R0YSBnZXQgYSBnb29kIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGRlc2lnbmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgaWYgdW5zdXJlLCBzYXkgWS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgU01DX0hTX0NUUkxfQlBGXG4gIDI0Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gU01DIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfU1lTQ0FMTFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFNNQ19IU19DVFJMX0JQRiBlbmFibGVzIHN1cHBvcnQgdG8gcmVnaXN0ZXIgZ2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQ1xuICAyOTpcdFx0ICBoYW5kc2hha2UgZmxvdywgd2hpY2ggb2ZmZXIgbXVjaCBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG1vZGlmeWluZyB0aGUgYmVoYXZpb3JcbiAgMzA6XHRcdCAgb2YgdGhlIFNNQyBwcm90b2NvbCBzdGFjayBjb21wYXJlZCB0byBhIGNvbXBsZXRlIGtlcm5lbC1iYXNlZCBhcHByb2FjaC4gU2VsZWN0XG4gIDMxOlx0XHQgIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IGZpbHRyaW5nIHRoZSBoYW5kc2hha2UgcHJvY2VzcyB2aWEgZUJQRiBwcm9ncmFtcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NzEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBgQ09ORklHX1NNQ2AgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGVuLCBgQ09ORklHX0RJQlNfTE9gIHJlbGllcyBvbiBgRElCU2Agd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYERJQlNgIGRlcGVuZGVuY3kgbW9yZS4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSB0aWVkIHRvIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIHByZXR0eSBnZW5lcmljLiBTaW5jZSBpdCYjMzk7cyBsaWtlbHkgYSBkcml2ZXIsIEkmIzM5O2xsIGNoZWNrIGBkcml2ZXJzL0tjb25maWdgIHRvIHNlZSB3aGVyZSBgZHJpdmVycy9kaWJzL0tjb25maWdgIGlzIGluY2x1ZGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBsYXJnZXIgY29udGV4dCBmb3IgYERJQlNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY4MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcdFx0XHRcdCYjNDM7PSByZXNjdHJsL1xuZHJpdmVycy9NYWtlZmlsZS0xOTgtXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcdFx0JiM0Mzs9IGRpYnMvXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcdFx0JiM0Mzs9IHMzOTAvXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWc9Mj1jb25maWcgRElCU1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEwLVx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuZHJpdmVycy9kaWJzL0tjb25maWc6MTE6XHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cbmRyaXZlcnMvZGlicy9LY29uZmlnOjEyOlx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc9MTQ9Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE1Olx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBESUJTXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTgtXHRoZWxwXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuZHJpdmVycy9kaWJzL0tjb25maWctMjAtXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cbmRyaXZlcnMvZGlicy9LY29uZmlnLTIxLVx0ICBvY2N1cnMgd2l0aGluIHRoZSBzYW1lIE9TLiBUaGlzIGhlbHBzIGluIGNvbnZlbmllbnQgdGVzdGluZyBvZlxuZHJpdmVycy9kaWJzL0tjb25maWc6MjI6XHQgIGRpYnMgY2xpZW50cywgc2luY2UgZGlicyBsb29wYmFjayBpcyBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUgb3JcbmRyaXZlcnMvZGlicy9LY29uZmlnLTIzLVx0ICBoYXJkd2FyZS5cbi0tXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGUtNS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSAmIzQzOz0gZGlic19tYWluLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSAmIzQzOz0gZGlicy5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICYjNDM7PSBkaWJzX2xvb3BiYWNrLm9cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTItLypcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzogKiAgRnVuY3Rpb25zIGZvciBkaWJzIGxvb3BiYWNrL2xvb3BiYWNrLWlzbSBkZXZpY2UuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQtICpcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RpYnMuaFx1MDAzZVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI1OnN0YXRpYyBjb25zdCBjaGFyIGRpYnNfbG9fZGV2X25hbWVbXSA9IFwmIzM0O2xvXCYjMzQ7O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNi0vKiBnbG9iYWwgbG9vcGJhY2sgZGV2aWNlICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3OnN0YXRpYyBzdHJ1Y3QgZGlic19sb19kZXYgKmxvX2RldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5OnN0YXRpYyB1MTYgZGlic19sb19nZXRfZmFicmljX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzMtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0OnN0YXRpYyBpbnQgZGlic19sb19xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cdFx0XHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzctXHQvKiByZ2lkIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBsZ2lkICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM4Olx0aWYgKCF1dWlkX2VxdWFsKHJnaWQsIFx1MDAyNmRpYnMtXHUwMDNlZ2lkKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzktXHRcdHJldHVybiAtRU5FVFVOUkVBQ0g7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDM6c3RhdGljIGludCBkaWJzX2xvX21heF9kbWJzKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ0LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0ODpzdGF0aWMgaW50IGRpYnNfbG9fcmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5Olx0XHRcdFx0c3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTUwLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTI6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTUzLVx0c3RydWN0IGZvbGlvICpmb2xpbztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1NzpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01OC1cdHNiYV9pZHggPSBkbWItXHUwMDNlaWR4O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDg6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA5Olx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVx1MDAzZWlkO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2ZyZWVfZG1iKHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIyOlx0XHRcdCAgICAgc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzMy17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNDpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM1Olx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzk6XHRsZGV2ID0gZGlicy1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTQwLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVx0aWYgKGxhc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYwOlx0XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbZG1iX25vZGUtXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcdFx0ZGlic19sb19mcmVlX2RtYihsZGV2LCBkbWJfbm9kZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTY4OnN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjkte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTcyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzM6c3RhdGljIGludCBkaWJzX2xvX2F0dGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc1Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzY6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Ny1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc4Olx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3OS1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNzpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA4LVx0Ym9vbCBsYXN0O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDktXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMDpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjktXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjMwOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjMxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzYtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM4LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM5Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDA6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI0NjpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzI6XHRjbGllbnRfaWQgPSBkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc0Olx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc1Olx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgyOlx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MzpcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NjpcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5tb3ZlX2RhdGEgPSBkaWJzX2xvX21vdmVfZGF0YSxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg4Olx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4OTpcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XHQuZGV0YWNoX2RtYiA9IGRpYnNfbG9fZGV0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkxLX07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjkzOnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDE6c3RhdGljIHZvaWQgZGlic19sb19kZXZfZXhpdChzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDYtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwOC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwOTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzEwOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTc6XHRkaWJzID0gZGlic19kZXZfYWxsb2MoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE4Olx0aWYgKCFkaWJzKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMxOS1cdFx0a2ZyZWUobGRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyMzpcdGxkZXYtXHUwMDNlZGlicyA9IGRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyNDpcdGRpYnMtXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjU6XHRkaWJzX2xvX2Rldl9pbml0KGxkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjY6XHR1dWlkX2dlbihcdTAwMjZkaWJzLVx1MDAzZWdpZCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyNzpcdGRpYnMtXHUwMDNlb3BzID0gXHUwMDI2ZGlic19sb19vcHM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyOC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI5Olx0ZGlicy1cdTAwM2VkZXYucGFyZW50ID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlx0ZGV2X3NldF9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2LCBcJiMzNDslc1wmIzM0OywgZGlic19sb19kZXZfbmFtZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMyOlx0cmV0ID0gZGlic19kZXZfYWRkKGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzOTpcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDA6XHRwdXRfZGV2aWNlKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQxLVx0a2ZyZWUobGRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0NjpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9yZW1vdmUodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1MC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlx0ZGlic19kZXZfZGVsKGxvX2Rldi1cdTAwM2VkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlx0ZGlic19sb19kZXZfZXhpdChsb19kZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTM6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzU0Olx0cHV0X2RldmljZShcdTAwMjZsb19kZXYtXHUwMDNlZGlicy1cdTAwM2VkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNTUtXHRrZnJlZShsb19kZXYpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTk6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XHRyZXR1cm4gZGlic19sb19kZXZfcHJvYmUoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjQ6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2Olx0ZGlic19sb19kZXZfcmVtb3ZlKCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM6ICogIGRpYnMgbG9vcGJhY2sgKGFrYSBsb29wYmFjay1pc20pIGRldmljZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTE0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9kaWJzLmhcdTAwM2VcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvaGFzaHRhYmxlLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyNTpzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVx0c3RydWN0IGhsaXN0X25vZGUgbGlzdDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNTpzdHJ1Y3QgZGlic19sb19kZXYge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNjpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzctXHRhdG9taWNfdCBkbWJfY250O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDMtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ0OmludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ1OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00Ni0jZWxzZVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NzpzdGF0aWMgaW5saW5lIGludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDgte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjUyOnN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTMte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04LSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtkaWJzOiBcJiMzNDsgZm10XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTAtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZGlicy5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyBkaWJzX2NsYXNzID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzOlx0Lm5hbWVcdFx0PSBcJiMzNDtkaWJzXCYjMzQ7LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0LX07XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2LS8qIHVzZSBhbiBhcnJheSByYXRoZXIgYSBsaXN0IGZvciBmYXN0IG1hcHBpbmc6ICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yOC1zdGF0aWMgdTggbWF4X2NsaWVudDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yOT1zdGF0aWMgREVGSU5FX01VVEVYKGNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzA6c3RydWN0IGRpYnNfZGV2X2xpc3Qge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMxLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjMyOlx0c3RydWN0IG11dGV4IG11dGV4OyAvKiBwcm90ZWN0cyBkaWJzIGRldmljZSBsaXN0ICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzMtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zNC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNTpzdGF0aWMgc3RydWN0IGRpYnNfZGV2X2xpc3QgZGlic19kZXZfbGlzdCA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNjpcdC5saXN0ID0gTElTVF9IRUFEX0lOSVQoZGlic19kZXZfbGlzdC5saXN0KSxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNzpcdC5tdXRleCA9IF9fTVVURVhfSU5JVElBTElaRVIoZGlic19kZXZfbGlzdC5tdXRleCksXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzgtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MDpzdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDE6XHRcdFx0XHQgIHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Mi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ1Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDY6XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50LVx1MDAzZWlkXSA9IGNsaWVudDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDgtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01MS17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NTI6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTMtXHRpbnQgaSwgcmMgPSAtRU5PU1BDO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU1Olx0bXV0ZXhfbG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01Ni1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzAtXHRcdC8qIGluaXRpYWxpemUgd2l0aCBhbGwgZGV2aWNlcyB0aGF0IHdlIGdvdCBzbyBmYXIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkaWJzLCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MjpcdFx0XHRkaWJzLVx1MDAzZXByaXZbaV0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjczOlx0XHRcdGNsaWVudC1cdTAwM2VvcHMtXHUwMDNlYWRkX2RldihkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3NDpcdFx0XHRkaWJzX3NldHVwX2ZvcndhcmRpbmcoY2xpZW50LCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cdFx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc3Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc4LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04MC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjgzOmludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg0LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Ni1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlx0bXV0ZXhfbG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkzOlx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTQtXHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtYXhfZG1iczsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcdFx0XHRpZiAoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2ldID09IGNsaWVudC1cdTAwM2VpZCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk2LVx0XHRcdFx0V0FSTigxLCBcJiMzNDslczogYXR0ZW1wdCB0byB1bnJlZ2lzdGVyICYjMzk7JXMmIzM5OyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDItXHRcdC8qIFN0b3AgZm9yd2FyZGluZyBJUlFzIGFuZCBldmVudHMgKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMDM6XHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnQtXHUwMDNlaWRdID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMDQ6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA1Olx0XHRjbGllbnRzW2NsaWVudC1cdTAwM2VpZF0tXHUwMDNlb3BzLVx1MDAzZWRlbF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA2Olx0XHRkaWJzLVx1MDAzZXByaXZbY2xpZW50LVx1MDAzZWlkXSA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTA3LVx0fVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTE1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNi1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExOTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyMS1cdHJldHVybiByYztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMzpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNi17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XHRrZnJlZShkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzMjpcdGtmcmVlKGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMy19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzNTpzdHJ1Y3QgZGlic19kZXYgKmRpYnNfZGV2X2FsbG9jKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM2LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzOTpcdGRpYnMgPSBremFsbG9jX29iaigqZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQwOlx0aWYgKCFkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MTpcdFx0cmV0dXJuIGRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQyOlx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDM6XHRkaWJzLVx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDQ6XHRkaWJzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNmRpYnNfY2xhc3M7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ1Olx0ZGV2aWNlX2luaXRpYWxpemUoXHUwMDI2ZGlicy1cdTAwM2VkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0Ni1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDc6XHRyZXR1cm4gZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDgtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0OTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hbGxvYyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE1MT1zdGF0aWMgc3NpemVfdCBnaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NDpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU2Olx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU4Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslcFViXFxuXCYjMzQ7LCBcdTAwMjZkaWJzLVx1MDAzZWdpZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTU5LX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ni1cdHUxNiBmYWJyaWNfaWQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE2ODpcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY5Olx0ZmFicmljX2lkID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzAtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE3Mz1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmFicmljX2lkKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkaWJzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3Ni1cdFx1MDAyNmRldl9hdHRyX2dpZC5hdHRyLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRpYnNfZGV2X2F0dHJfZ3JvdXAgPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgyOlx0LmF0dHJzID0gZGlic19kZXZfYXR0cnMsXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgzLX07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NTppbnQgZGlic19kZXZfYWRkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODYte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODktXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkwOlx0bWF4X2RtYnMgPSBkaWJzLVx1MDAzZW9wcy1cdTAwM2VtYXhfZG1icygpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciA9IGt6YWxsb2MobWF4X2RtYnMsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MjpcdGlmICghZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0Olx0bWVtc2V0KGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciwgTk9fRElCU19DTElFTlQsIG1heF9kbWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk2Olx0cmV0ID0gZGV2aWNlX2FkZChcdTAwMjZkaWJzLVx1MDAzZWRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcdHJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDEtXHRpZiAocmV0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjAyOlx0XHRkZXZfZXJyKFx1MDAyNmRpYnMtXHUwMDNlZGV2LCBcJiMzNDtzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcblwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjAzOlx0XHRkZXZpY2VfZGVsKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDQtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA1LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwNjpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA3LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDktXHRcdGlmIChjbGllbnRzW2ldKSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjEwOlx0XHRcdGNsaWVudHNbaV0tXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlx0XHRcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTItXHRcdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjE1Olx0bGlzdF9hZGQoXHUwMDI2ZGlicy1cdTAwM2VsaXN0LCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIxNjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjIwOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FkZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyNzpcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgJiM0MzsmIzQzO2kpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMxOlx0XHRkaWJzLVx1MDAzZXN1YnNbaV0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMjpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMzLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzNDpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM1LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzctXHRcdGlmIChjbGllbnRzW2ldKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzODpcdFx0XHRjbGllbnRzW2ldLVx1MDAzZW9wcy1cdTAwM2VkZWxfZGV2KGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzOS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDAtXHRtdXRleF91bmxvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDE6XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRpYnMtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0My1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDQ6XHRkZXZpY2VfZGVsKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0NjpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9kZWwpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0Ny1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ5LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI1MjpcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXHUwMDI2ZGlic19jbGFzcyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjU2Olx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2Mi1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjM6c3RhdGljIHZvaWQgX19leGl0IGRpYnNfZXhpdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY1Olx0ZGlic19sb29wYmFja19leGl0KCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2Olx0Y2xhc3NfdW5yZWdpc3RlcihcdTAwMjZkaWJzX2NsYXNzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2OC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjk6c3Vic3lzX2luaXRjYWxsKGRpYnNfaW5pdCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmg9NDIwPXN0cnVjdCBjYWNoZSB7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNDM2LVx0LypcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjQzNzpcdCAqIFdoZW4gYWxsb2NhdGluZyBuZXcgYnVja2V0cywgcHJpb193cml0ZSgpIGdldHMgZmlyc3QgZGlicyAtIHNpbmNlIHdlXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaC00MzgtXHQgKiBtYXkgbm90IGJlIGFsbG9jYXRlIGF0IGFsbCB3aXRob3V0IHdyaXRpbmcgcHJpb3JpdGllcyBhbmQgZ2Vucy5cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTctI2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6ODojaW5jbHVkZSBcdTAwM2NsaW51eC9kaWJzLmhcdTAwM2VcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOS0jaW5jbHVkZSBcdTAwM2Nhc20vcGNpX2luc24uaFx1MDAzZVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjI3PXN0cnVjdCBpc21fZGV2IHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI4LVx0c3BpbmxvY2tfdCBjbWRfbG9jazsgLyogc2VyaWFsaXplcyBjbWRzICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOTpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMwLVx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTc3PXN0YXRpYyB2b2lkIGlzbV9mcmVlX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE4NS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE4NjpzdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczOTcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0NzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhIERJQlMvU01DIExvb3BiYWNrIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnNgLCBzcGVjaWZpY2FsbHkgdGhlIGxvb3BiYWNrIGNvbXBvbmVudCAoYGRpYnNfbG9vcGJhY2suY2ApLiBUaGlzIGlzIGEgdmlydHVhbCBzdWJzeXN0ZW0sIGEgc29mdHdhcmUgZW11bGF0aW9uIG9mIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgdXNlZCBmb3IgbG9vcGJhY2sgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgZW5hYmxlZCBieSBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gLiBDcnVjaWFsbHksIGBDT05GSUdfU01DYCB1dGlsaXplcyBESUJTLCBzcGVjaWZpY2FsbHkgZm9yIGludHJhLU9TIGFuZCBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgU01DLUQgb3IgSVNNLgoKV2Uga25vdyBgZGlic19sb29wYmFjay5pbml0YCBjcmVhdGVzIHRoaXMgZW11bGF0ZWQgbG9vcGJhY2sgZGV2aWNlLCBuYW1lZCAmIzM0O2xvJiMzNDsuIE5vdywgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBXaGVuIFNNQyBjb25uZWN0aW9ucyBhcmUgZXN0YWJsaXNoZWQgb3ZlciB0aGlzIGxvb3BiYWNrLCBvciB3ZSYjMzk7cmUgc2VuZGluZyBkYXRhIHZpYSBTTUMtRCB1c2luZyBsb29wYmFjaywgdGhlIGZ1bmN0aW9uIGBkaWJzX2xvX21vdmVfZGF0YWAgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0IGlzIG91ciB0YXJnZXQuIFdlIGNhbiByZWFjaCB0aGlzIG9uIGFtZDY0IGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgU01DIHNvY2tldHMgKEFGX1NNQykgYW5kIHdoZW4gYENPTkZJR19ESUJTX0xPYCBpcyBhbHNvIGVuYWJsZWQuCgpOb3csIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGNyaXRlcmlhIGZvciBmdXp6aW5nLiBJcyBpdCByZWFjaGFibGU/IEFic29sdXRlbHkuIFdlJiMzOTt2ZSBnb3QgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBkZXZpY2UgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgU01DLCBzcGVjaWZpY2FsbHkgb24gYW1kNjQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMsIGJlY2F1c2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29kZSB0aGF0ICptb2RpZmllcyBsb2NraW5nIG1lY2hhbmlzbXMqOiBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgZnJvbSBgc3Bpbl9sb2NrYCB0byBgc3Bpbl9sb2NrX2lycXNhdmVgICp3aXRoaW4qIGBkaWJzX2xvX21vdmVfZGF0YWAsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgY29kZS4gVGhlIGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgc2hhcmVkIGJ1ZmZlciB1c2FnZSBhbmQgbG9ja2luZyBpcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBhbHdheXMgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcuCgpMZXQmIzM5O3MgbmFpbCBkb3duIG91ciBgRm9jdXNTeW1ib2xzYC4gT2J2aW91c2x5LCBgZGlic19sb19tb3ZlX2RhdGFgIGlzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIHRoZSBsb2NrIG1vZGlmaWNhdGlvbi4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgb3RoZXIsIGxlc3MgdWJpcXVpdG91cyBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgOiBgZGlic19sb19yZWdpc3Rlcl9kbWJgLCBgZGlic19sb191bnJlZ2lzdGVyX2RtYmAsIGBkaWJzX2xvX2F0dGFjaF9kbWJgLCBgZGlic19sb19kZXRhY2hfZG1iYCwgYW5kIHBvdGVudGlhbGx5IGBzbWNkX3R4X2lzbV93cml0ZWAuIEkgdGhpbmsgdGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gc3RhcnQgd2l0aCBhIGxhc2VyIGZvY3VzIG9uIGBkaWJzX2xvX21vdmVfZGF0YWAgYW5kIGV4cGFuZCBhcyBuZWVkZWQuCgpGaW5hbGx5LCB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBXZSBuZWVkIGBESUJTYCwgYERJQlNfTE9gLCBhbmQgYmVjYXVzZSBgU01DYCB1c2VzIERJQlMsIHdlIHNob3VsZCBpbmNsdWRlIGBTTUNgLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgZHJpdmVycy9LY29uZmlnYCB0byBjb25maXJtIHRoZSBpbmNsdWRlIG9mIHRoZSBgZGlicy9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9OTA9c291cmNlIFwmIzM0O25ldC9zbWMvS2NvbmZpZ1wmIzM0O1xubmV0L0tjb25maWc6OTE6c291cmNlIFwmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZy05Mi1zb3VyY2UgXCYjMzQ7bmV0L3hkcC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTQyCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHNlZWluZy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGBuZXQvS2NvbmZpZ2AgYW5kIGl0IHNvdXJjZXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB0ZWxscyBtZSB0aGUgRElCUyAoRGVkaWNhdGVkIEludGVycnVwdCBCbG9jayBTeXN0ZW0pIGxvb3BiYWNrIGRldmljZSBkcml2ZXIgaXMgYmVpbmcgY29uZmlndXJlZCBoZXJlLiBXZSYjMzk7dmUgZ290IGBDT05GSUdfRElCU2AgYW5kIGBDT05GSUdfRElCU19MT2AsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGVuIGBDT05GSUdfU01DYCBmb3IgdGhvc2UgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciBzb2NrZXRzLiBHb29kLiBOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHNwZWNpZmljcy4KClJpZ2h0LCB0aGUgbWV0YWRhdGEgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0IG9mdGVuIGluZGljYXRlcyBhIGhpZ2hlci1yaXNrIGNvbXBvbmVudCwgb25lIHRoYXQgaXMgaW50ZXJlc3RpbmcgdG8gZnV6eiB0ZXN0LiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgY29uZmlybXMgdGhhdCBgRElCU2AsIGBESUJTX0xPYCwgYW5kIGBTTUNgIGFyZSBlbmFibGVkLCBzbyB3ZSYjMzk7dmUgZ290IHRoZSBmdWxsIHNjb3BlIGZvciBhbmFseXNpcy4gVGhlIGltcG9ydGFudCBiaXQsIHRoZSBgRm9jdXNTeW1ib2xzYCwgaGlnaGxpZ2h0cyBgZGlic19sb19tb3ZlX2RhdGFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIGlzIGhhcHBlbmluZy4gVGhlIGBSZWFzb25pbmdgIHByb3ZpZGVzIHRoZSBtZWF0IG9mIGl0LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyByZXBsYWNpbmcgYHNwaW5fbG9ja2Agd2l0aCBgc3Bpbl9sb2NrX2lycXNhdmVgIGluIGBkaWJzX2xvX21vdmVfZGF0YWAgd2l0aGluIHRoZSBESUJTIGxvb3BiYWNrIGRldmljZSBkcml2ZXIgdG8gcHJvcGVybHkgZGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWxlIGFjcXVpcmluZyBgZGlicy0mZ3Q7bG9ja2AuIFRoaXMgaXMgYSBjcml0aWNhbCBjaGFuZ2UsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBmaXgsIGlzbiYjMzk7dCBpdD8gVGhlIGV4cGxhbmF0aW9uIGFsc28gbm90ZXMgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFNNQyBzb2NrZXRzIG92ZXIgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgbG9vcGJhY2sgZGV2aWNlLCBzbyB0aGUgcG90ZW50aWFsIGltcGFjdCBpcyBtdWNoIG1vcmUgd2lkZXNwcmVhZCB0aGFuIGluaXRpYWxseSBzZWVuLiBJdCYjMzk7cyBub3QgYSBmcmluZ2UgY2FzZS4KCkJhc2VkIG9uIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgcmVjb3JkIG15IGNvbmNsdXNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpYnNfbG9fbW92ZV9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWJzX2xvX21vdmVfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2sgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSBpbiBkaWJzX2xvX21vdmVfZGF0YSB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBhY3F1aXJpbmcgZGlicy1cdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXHUwMDNlbG9jayBpbiBkaWJzX2xvX21vdmVfZGF0YSgpLiBUaGlzIGlzIHB1cmVseSBhIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBkaWJzLVx1MDAzZWxvY2sgaXMgYWNjZXNzZWQgZnJvbSBJUlEgY29udGV4dHMuIFRoZSBjaGFuZ2UgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgYWx0ZXIgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uLCBvciBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZS4gTG9ja2luZyBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMKaW5kZXggNjQ5ZTRlMzc1YmUzMy4uNDRhMmU3NGMyZWZjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jCkBAIC0yMzgsNiAmIzQzOzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywKIHsKIAlzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7CiAJc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2OwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXUxNiBzX21hc2s7CiAJdTggY2xpZW50X2lkOwogCXUzMiBzYmFfaWR4OwpAQCAtMjY3LDEyICYjNDM7MjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywKIAlpZiAoIXNmKQogCQlyZXR1cm4gMDsKIAotCXNwaW5fbG9jaygmYW1wO2RpYnMtJmd0O2xvY2spOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKTsKIAljbGllbnRfaWQgPSBkaWJzLSZndDtkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdOwogCXNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTsKIAlpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCAmYW1wOyZhbXA7IGRpYnMtJmd0O3N1YnNbY2xpZW50X2lkXSkpCiAJCWRpYnMtJmd0O3N1YnNbY2xpZW50X2lkXS0mZ3Q7b3BzLSZndDtoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7Ci0Jc3Bpbl91bmxvY2soJmFtcDtkaWJzLSZndDtsb2NrKTsKJiM0MzsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERJQnMgTG9vcGJhY2sgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBkaWZmIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW4gdGhlIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLgoKUmlnaHQgYXdheSwgSSBzZWUgdGhlIGNvcmUgY2hhbmdlOiB0aGUgc3BpbmxvY2sgaXMgYmVpbmcgbW9kaWZpZWQuIFdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIHNpbXBsZSBgc3Bpbl9sb2NrYCBhbmQgYHNwaW5fdW5sb2NrYCBwYWlyIHRvIGBzcGluX2xvY2tfaXJxc2F2ZWAgYW5kIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYC4gVGhpcyBzaWduYWxzIGEgcG90ZW50aWFsIGlzc3VlIHdpdGggaW50ZXJydXB0IGNvbnRleHQuIFdlJiMzOTtyZSBub3cgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYW5kIGFmdGVyIGFjcXVpcmluZyB0aGUgbG9jaywgYW5kIHRoYXQgaW1wbGllcyB3ZSBhcmUgd29ycmllZCBhYm91dCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgd2UgaGF2ZSBhIGxvY2sgKGBkaWJzLSZndDtsb2NrYCkgcHJvdGVjdGluZyBhY2Nlc3MgdG8gYGNsaWVudF9pZGAsIGBzX21hc2tgLCBhbmQgdGhlIGBkaWJzLSZndDtzdWJzYCBhcnJheS4gVGhlIGNvZGUgY2hlY2tzIGZvciBhIHZhbGlkIGBjbGllbnRfaWRgLCBhbmQgaWYgb25lIGV4aXN0cyBjYWxscyBhIGZ1bmN0aW9uLCBgaGFuZGxlX2lycWAsIHByZXN1bWFibHkgb24gdGhlIHN1YnNjcmliZXImIzM5O3Mgb3BlcmF0aW9uIHN0cnVjdC4gVGhpcyBmdW5jdGlvbiBgaGFuZGxlX2lycWAgbXVzdCBiZSBleGVjdXRpbmcgdW5kZXIgYSBjcml0aWNhbCBzZWN0aW9uLCBhbmQgdGhpcyBwYXRjaCBpcyBub3cgbWFraW5nIHN1cmUgdGhlIGludGVycnVwdCBjb250ZXh0IGlzIHByZXNlcnZlZC4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byBzZWUgd2hhdCBgZGlicy0mZ3Q7bG9ja2AgcHJvdGVjdHMsIHdoYXQgYGhhbmRsZV9pcnFgIGFjdHVhbGx5ICpkb2VzKiwgYW5kIHdoZXJlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgY2FsbGVkIGZyb20uIEkmIzM5O2xsIG5lZWQgdG8gY29uc3VsdCB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuIFRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gZXhhbWluZSBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AgaW4gbW9yZSBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYSBiZXR0ZXIgdmlldyBvZiB0aGUgY29kZSBhbmQgYW55IG90aGVyIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRcdGlmICghZG1iX25vZGUpIHtcbiAyMjE6XHRcdFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDIyMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyMjM6XHRcdH1cbiAyMjQ6XHRcdGxhc3QgPSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZG1iX25vZGUtXHUwMDNlcmVmY250KTtcbiAyMjU6XHRcdGlmIChsYXN0KVxuIDIyNjpcdFx0XHRoYXNoX2RlbChcdTAwMjZkbWJfbm9kZS1cdTAwM2VsaXN0KTtcbiAyMjc6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyMjg6XHRcbiAyMjk6XHRcdGlmIChsYXN0KVxuIDIzMDpcdFx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbiAyMzE6XHRcbiAyMzI6XHRcdHJldHVybiAwO1xuIDIzMzpcdH1cbiAyMzQ6XHRcbiAyMzU6XHRzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG4gMjM2Olx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuIDIzNzpcdFx0XHRcdCAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpXG4gMjM4Olx0e1xuIDIzOTpcdFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuIDI0MDpcdFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuIDI0MTpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiAyNDI6XHRcdHUxNiBzX21hc2s7XG4gMjQzOlx0XHR1OCBjbGllbnRfaWQ7XG4gMjQ0Olx0XHR1MzIgc2JhX2lkeDtcbiAyNDU6XHRcbiAyNDY6XHRcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuIDI0NzpcdFxuIDI0ODpcdFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDI0OTpcdFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl90b2spIHtcbiAyNTA6XHRcdFx0aWYgKHRtcF9ub2RlLVx1MDAzZXRva2VuID09IGRtYl90b2spIHtcbiAyNTE6XHRcdFx0XHRybWJfbm9kZSA9IHRtcF9ub2RlO1xuIDI1MjpcdFx0XHRcdGJyZWFrO1xuIDI1MzpcdFx0XHR9XG4gMjU0Olx0XHR9XG4gMjU1Olx0XHRpZiAoIXJtYl9ub2RlKSB7XG4gMjU2Olx0XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDI1NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTg6XHRcdH1cbiAyNTk6XHRcdGlmICgodTY0KW9mZnNldCAmIzQzOyBzaXplIFx1MDAzZSBybWJfbm9kZS1cdTAwM2VsZW4pIHtcbiAyNjA6XHRcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjYxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI2MjpcdFx0fVxuIDI2MzpcdFxuIDI2NDpcdFx0bWVtY3B5KChjaGFyICopcm1iX25vZGUtXHUwMDNlY3B1X2FkZHIgJiM0Mzsgb2Zmc2V0LCBkYXRhLCBzaXplKTtcbiAyNjU6XHRcdHNiYV9pZHggPSBybWJfbm9kZS1cdTAwM2VzYmFfaWR4O1xuIDI2NjpcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjY3Olx0XG4gMjY4Olx0XHRpZiAoIXNmKVxuIDI2OTpcdFx0XHRyZXR1cm4gMDtcbiAyNzA6XHRcbiAyNzE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIDI3MjpcdFx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuIDI3MzpcdFx0c19tYXNrID0gcm9yMTYoMHgxMDAwLCBpZHgpO1xuIDI3NDpcdFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbiAyNzU6XHRcdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0tXHUwMDNlb3BzLVx1MDAzZWhhbmRsZV9pcnEoZGlicywgc2JhX2lkeCwgc19tYXNrKTtcbiAyNzY6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjc3Olx0XG4gMjc4Olx0XHRyZXR1cm4gMDtcbiAyNzk6XHR9XG4gMjgwOlx0XG4gMjgxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4gMjgyOlx0XHQuZ2V0X2ZhYnJpY19pZCA9IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZCxcbiAyODM6XHRcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuIDI4NDpcdFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcbiAyODU6XHRcdC5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3JlZ2lzdGVyX2RtYixcbiAyODY6XHRcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG4gMjg3Olx0XHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG4gMjg4Olx0XHQuc3VwcG9ydF9tbWFwcGVkX3JkbWIgPSBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weSxcbiAyODk6XHRcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIzCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDUxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBDb25jdXJyZW5jeSBGaXgsIE5vdCBVbmluaXRpYWxpemVkIE1lbW9yeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGxvY2sgdXBncmFkZTogYHNwaW5fbG9ja2AgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgc3Bpbl9sb2NrX2lycXNhdmVgLCBhbmQgYHNwaW5fdW5sb2NrYCB3aXRoIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYC4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCwgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW8gd2hlbiBgZGlicy0mZ3Q7bG9ja2AgaXMgaGVsZCBpbiBhbiBpbnRlcnJ1cHQgb3Igc29mdGlycS9pcnEgY29udGV4dC4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBpc3N1ZS4KCk5vdywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBLTVNBTiBjaGVja2xpc3QuIERvZXMgdGhpcyBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlcnNwYWNlLCBvciBzY3JldyB3aXRoIGJvdW5kcyBjaGVja3M/IE5vcGUuIFRoaXMgaXMgcHVyZWx5IGFib3V0ICpob3cqIHRoZSBzcGlubG9jayBpcyBhY3F1aXJlZCwgbmFtZWx5IGRpc2FibGluZyBpbnRlcnJ1cHRzIHdoZW4gaG9sZGluZyB0aGUgbG9jay4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgY2FzZSBmb3IgTE9DS0RFUCBhbmQgdGhlIHN0YW5kYXJkIGtlcm5lbCBzYW5pdHkgY2hlY2tzLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgbXkgd29yayBoZXJlLiBObyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZSwgbm8gY29uZGl0aW9uYWwgbG9naWMgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBubyBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcyBsYXRlciBvbiwgYW5kIG5vIGJvdW5kcyBjaGVja3MgYXJlIGJlaW5nIG1lc3NlZCB3aXRoLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBpcyBhICpsb2NraW5nKiBidWcgZml4LCBub3QgYW4gKnVuaW5pdGlhbGl6ZWQgbWVtb3J5KiBidWcgZml4LgoKVG8gYmUgZXh0cmEgY2xlYXIgaW4gdGhlIHJlYXNvbmluZywgaXQmIzM5O3MgYSBzaW1wbGUgYHNwaW5fbG9ja2AgdG8gYHNwaW5fbG9ja19pcnFzYXZlYCByZXBsYWNlbWVudCwgZGVzaWduZWQgdG8gcHJldmVudCBkZWFkbG9ja3MgaW4gaW50ZXJydXB0IGNvbnRleHRzLiBJdCBkb2VzbiYjMzk7dCB0b3VjaCBtZW1vcnkgYWxsb2NhdGlvbiwgc3RydWN0IGluaXRpYWxpemF0aW9uLCBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZSwgb3IgYnVmZmVyIGJvdW5kYXJpZXMuIFRoaXMgaXMgY29uY3VycmVuY3ksIG5vdCBLTVNBTiYjMzk7cyByZWFsbS4gTE9DS0RFUCBhbmQgc3RhbmRhcmQgY2hlY2tlcnMgYXJlIHRoZSB0b29scyB0byB1c2UgaGVyZS4gTm8gS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5lY2Vzc2FyeS4gQWxyaWdodCwgbGV0JiMzOTtzIGNhbGwgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2soKS9zcGluX3VubG9jaygpIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUoKS9zcGluX3VubG9ja19pcnFyZXN0b3JlKCkgb24gZGlicy1cdTAwM2Vsb2NrIGluIGRpYnNfbG9fbW92ZV9kYXRhKCkuIFRoaXMgaXMgcHVyZWx5IGEgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGRpYnMtXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjozNC45OTE3NDU4NDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njk4MDQzNTY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWJzX2xvX21vdmVfZGF0YVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXFx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVxcdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjozNC45OTE3NTU0NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQ0MjYzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTk6MDI6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcXG5pbmRleCA2NDllNGUzNzViZTMzLi40NGEyZTc0YzJlZmNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXFxuQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuIHtcXG4gXFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbiBcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHUxNiBzX21hc2s7XFxuIFxcdHU4IGNsaWVudF9pZDtcXG4gXFx0dTMyIHNiYV9pZHg7XFxuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG4gXFx0aWYgKCFzZilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRzcGluX2xvY2soXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2spO1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbiBcXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuIFxcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFxcdTAwMjZcXHUwMDI2IGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXFxuIFxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuLVxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6MzYuNTU3MTEzODc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjY1MzA5MDMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWJzX2xvX21vdmVfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVxcdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG5AQCAtMjM4LDYgKzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTE2IHNfbWFzaztcbiBcdHU4IGNsaWVudF9pZDtcbiBcdHUzMiBzYmFfaWR4O1xuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiBcdGlmICghc2YpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0c3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG4rXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuK1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjM2LjU1NzExNjEwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODcxNTQxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgUmVsZXZhbnQgS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIGZhbGxzIHdpdGhpbiB0aGUga2VybmVsJ3MgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBjb250ZXh0OiB3aGF0ICppcyogdGhlIGBkcml2ZXJzL2RpYnNgIHN1YnN5c3RlbT8gV2hhdCBhcmUgdGhlIGVuYWJsaW5nIEtjb25maWcgb3B0aW9ucz8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGludGVyYWN0IHdpdGggdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBwYXJ0aWN1bGFybHkgYGRpYnNfbG9fbW92ZV9kYXRhYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgY29kZSBpcyBleGVjdXRlZC5cblxuVG8gZmFjaWxpdGF0ZSB0aGlzLCBJJ2xsIGxldmVyYWdlIG15IHVzdWFsIHRvb2xzLiBJJ20gdGhpbmtpbmcgYGdyZXBwZXJgIGlzIHRoZSBmaXJzdCBsb2dpY2FsIGNob2ljZS4gSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgZGVwZW5kZW5jaWVzLCBjcm9zcy1yZWZlcmVuY2VzLCBhbmQgcG90ZW50aWFsIGltcGFjdHMuIEFsdGVybmF0aXZlbHksIGByZWFkLWZpbGVgIG1pZ2h0IGJlIGhhbmR5IGZvciBhIHF1aWNrIG92ZXJ2aWV3IGlmIEknbSBsb29raW5nIGZvciBzcGVjaWZpY3MuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zLiBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZXZlbiBhY2Nlc3NpYmxlIGluIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGhhdCdzIGVzc2VudGlhbCB0byByZXBsaWNhdGluZyBhbmQgdGVzdGluZyB0aGlzIGluIGEgcmVhbGlzdGljIHNldHRpbmcuXG5cblNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHNlcmllcyBvZiBgZ3JlcHBlcmAgcXVlcmllcyB0byBwaW5wb2ludCB0aGVzZSBjcml0aWNhbCBkZXRhaWxzLCBzdGFydGluZyB3aXRoIHRoZSBmaWxlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjQwLjk0NDI3MzE4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc2NDAxNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNfbG9fbW92ZV9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjA0PXN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM2LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODgtXFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjQzLjIyMDY3ODI2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjU2MTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlic1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy01LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzo2OlxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy03LVxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE2OlxcdGRlcGVuZHMgb24gRElCU1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE3LVxcdGRlZmF1bHQgblxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE4LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG4tLVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS0yLSNcXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6MzojIERJQlMgY2xhc3MgbW9kdWxlXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlLTQtI1xcbi0tXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICs9IGRpYnNfbWFpbi5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICs9IGRpYnMub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgKz0gZGlic19sb29wYmFjay5vXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI6I2RlZmluZSBESUJTX0xPX1NVUFBPUlRfTk9DT1BZXFx0MHgxXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzojZGVmaW5lIERJQlNfRE1BX0FERFJfSU5WQUxJRFxcdCh+KGRtYV9hZGRyX3QpMClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yOT1zdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTpcXHRyZXR1cm4gRElCU19MT09QQkFDS19GQUJSSUM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMi19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQzPXN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDU6XFx0cmV0dXJuIERJQlNfTE9fTUFYX0RNQlM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ni19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTktXFx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjYwOlxcdGZvcl9lYWNoX2NsZWFyX2JpdChzYmFfaWR4LCBsZGV2LVxcdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTYxLVxcdFxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChzYmFfaWR4LCBsZGV2LVxcdTAwM2VzYmFfaWR4X21hc2spKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02My1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo2NDpcXHRpZiAoc2JhX2lkeCA9PSBESUJTX0xPX01BWF9ETUJTKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjUtXFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg0LVxcdGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciA9IGZvbGlvX2FkZHJlc3MoZm9saW8pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XFx0ZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyID0gRElCU19ETUFfQUREUl9JTlZBTElEO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODYtXFx0cmVmY291bnRfc2V0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250LCAxKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTMyPXN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYxLVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTY4PXN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MDpcXHRyZXR1cm4gRElCU19MT19TVVBQT1JUX05PQ09QWTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3MS19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTIzNT1zdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzQ6XFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXFx1MDAyNlxcdTAwMjYgZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3NS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0xMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjEyOiNpZm5kZWYgX0RJQlNfTE9PUEJBQ0tfSFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MTM6I2RlZmluZSBfRElCU19MT09QQkFDS19IXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0xNC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIyOiNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1xcdDEyXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMzojZGVmaW5lIERJQlNfTE9fTUFYX0RNQlNcXHQ1MDAwXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzgtXFx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozOTpcXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XFx0REVDTEFSRV9IQVNIVEFCTEUoZG1iX2h0LCBESUJTX0xPX0RNQlNfSEFTSF9CSVRTKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVxcdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9NTI9c3RhdGljIGlubGluZSB2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC01Ni1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjU3OiNlbmRpZiAvKiBfRElCU19MT09QQkFDS19IICovXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMi0vKlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozOiAqICBESUJTIC0gRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQtICpcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NTogKiAgSW1wbGVtZW50YXRpb24gb2YgdGhlIERJQlMgY2xhc3MgbW9kdWxlXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTYtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIGRpYnNfY2xhc3MgPSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9NTA9aW50IGRpYnNfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU2LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyArK2kpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTgtXFx0XFx0aWYgKCFjbGllbnRzW2ldKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjY5OlxcdGlmIChpIFxcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUykge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTg1PWludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0OlxcdG1lbXNldChkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyLCBOT19ESUJTX0NMSUVOVCwgbWF4X2RtYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MjIyPXZvaWQgZGlic19kZXZfZGVsKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjktXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyArK2kpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2ldID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuMzAzMjQ1MjIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTE0NDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcXHRcXHRcXHRcXHQrPSByZXNjdHJsL1xcbmRyaXZlcnMvTWFrZWZpbGUtMTk4LVxcbmRyaXZlcnMvTWFrZWZpbGU6MTk5Om9iai0kKENPTkZJR19ESUJTKVxcdFxcdCs9IGRpYnMvXFxuZHJpdmVycy9NYWtlZmlsZS0yMDAtb2JqLSQoQ09ORklHX1MzOTApXFx0XFx0Kz0gczM5MC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuNDE0MzkzNjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDExODE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuNTE3ODE0MDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA5ODY0OTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwtV2lkZSBESUJTIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYERJQlNgIG9yIGBkaWJzYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdyZXAsIG1pbmQgeW91OyBJJ20gdGhpbmtpbmcgYSB0aG9yb3VnaCBzZWFyY2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlc2UgdGVybXMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBzdWJzeXN0ZW1zLiBJIG5lZWQgdG8gcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgaWRlbnRpZnkgYWxsIHRoZSByZWxldmFudCBjYWxsIHNpdGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgc28gSSBjYW4gYXNzZXNzIGltcGFjdC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIGEgZmFpciBiaXQgb2Ygbm9pc2UsIGJ1dCBob3BlZnVsbHksIHRoZSB3aGVhdCB3aWxsIHNlcGFyYXRlIGZyb20gdGhlIGNoYWZmIHF1aWNrbHkuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1biBiZWdpbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo0NS42MTY0NjcyNzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNzkxMDE2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRElCU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTMzPUNPTkZJR19TTUNfRElBRz1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNDpDT05GSUdfRElCUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNTpDT05GSUdfRElCU19MTz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEzNi1DT05GSUdfWERQX1NPQ0tFVFM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTEyND1DT05GSUdfU01DX0RJQUc9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0RJQlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjY6Q09ORklHX0RJQlNfTE89eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMjctQ09ORklHX1hEUF9TT0NLRVRTPXlcXG4tLVxcbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XFx0XFx0XFx0XFx0Kz0gcmVzY3RybC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcXHRcXHQrPSBkaWJzL1xcbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVxcdFxcdCs9IHMzOTAvXFxuLS1cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU9Nj1kaWJzLXkgKz0gZGlic19tYWluLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfRElCUykgKz0gZGlicy5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjg6ZGlicy0kKENPTkZJR19ESUJTX0xPKSArPSBkaWJzX2xvb3BiYWNrLm9cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIyLSNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1xcdDEyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTEzNT1DT05GSUdfU01DX0hTX0NUUkxfQlBGPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNjpDT05GSUdfRElCUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzc6Q09ORklHX0RJQlNfTE89eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWctMTM4LUNPTkZJR19QTV9XQUtFTE9DS1M9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo0Ny45NTQzODE1NThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ2NDUxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlic19cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NTkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSArPSBkaWJzX21haW4ub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ESUJTKSArPSBkaWJzLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICs9IGRpYnNfbG9vcGJhY2sub1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcXFwibG9cXFwiO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2xvX2RldiAqbG9fZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ6c3RhdGljIGludCBkaWJzX2xvX3F1ZXJ5X3JnaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cXHRcXHRcXHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5OlxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01My1cXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjI6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYyLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYzOlxcdFxcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTY4OnN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTcyLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTczOnN0YXRpYyBpbnQgZGlic19sb19hdHRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzQte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc1OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzctXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNDpzdGF0aWMgaW50IGRpYnNfbG9fZGV0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB0b2tlbilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNS17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA3OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwOC1cXHRib29sIGxhc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQwOlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODE6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODI6XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NTpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODY6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTEtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5MzpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9pbml0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwNi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDgte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzA5OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMxMDpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE3OlxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE4LVxcdGlmICghZGlicykge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjQtXFx0ZGlicy1cXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1OlxcdGRpYnNfbG9fZGV2X2luaXQobGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjYtXFx0dXVpZF9nZW4oXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XFx0ZGlicy1cXHUwMDNlb3BzID0gXFx1MDAyNmRpYnNfbG9fb3BzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI5LVxcdGRpYnMtXFx1MDAzZWRldi5wYXJlbnQgPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlxcdGRldl9zZXRfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBkaWJzX2xvX2Rldl9uYW1lKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDAtXFx0cHV0X2RldmljZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ1LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ2OnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X3JlbW92ZSh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlxcdGRpYnNfZGV2X2RlbChsb19kZXYtXFx1MDAzZWRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlxcdGRpYnNfbG9fZGV2X2V4aXQobG9fZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1MzpcXHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1NC1cXHRwdXRfZGV2aWNlKFxcdTAwMjZsb19kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1OC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1OTppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzYxOlxcdHJldHVybiBkaWJzX2xvX2Rldl9wcm9iZSgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2My1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM2NDp2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM2NjpcXHRkaWJzX2xvX2Rldl9yZW1vdmUoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjU6c3RydWN0IGRpYnNfbG9fZG1iX25vZGUge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjYtXFx0c3RydWN0IGhsaXN0X25vZGUgbGlzdDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNTpzdHJ1Y3QgZGlic19sb19kZXYge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzY6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzctXFx0YXRvbWljX3QgZG1iX2NudDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NDppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDU6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00Ni0jZWxzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDc6c3RhdGljIGlubGluZSBpbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00OC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NTI6c3RhdGljIGlubGluZSB2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzojaW5jbHVkZSBcXFwiZGlic19sb29wYmFjay5oXFxcIlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMD1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIGRpYnNfY2xhc3MgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzLVxcdC5uYW1lXFx0XFx0PSBcXFwiZGlic1xcXCIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTI5PXN0YXRpYyBERUZJTkVfTVVURVgoY2xpZW50c19sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzA6c3RydWN0IGRpYnNfZGV2X2xpc3Qge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zMS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjM1OnN0YXRpYyBzdHJ1Y3QgZGlic19kZXZfbGlzdCBkaWJzX2Rldl9saXN0ID0ge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNjpcXHQubGlzdCA9IExJU1RfSEVBRF9JTklUKGRpYnNfZGV2X2xpc3QubGlzdCksXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjM3OlxcdC5tdXRleCA9IF9fTVVURVhfSU5JVElBTElaRVIoZGlic19kZXZfbGlzdC5tdXRleCksXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM4LX07XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM5LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MDpzdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQxOlxcdFxcdFxcdFxcdCAgc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Mi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MjpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVxcdGludCBpLCByYyA9IC1FTk9TUEM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjcxOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03Mi1cXHRcXHRcXHRkaWJzLVxcdTAwM2Vwcml2W2ldID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzMtXFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VvcHMtXFx1MDAzZWFkZF9kZXYoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc0OlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnQsIGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cXHRcXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Nzc6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3JlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTYtXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExOS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjEtXFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjM6RVhQT1JUX1NZTUJPTF9HUEwoZGlic191bnJlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyOTpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzAtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzU6c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQyLVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQzOlxcdGRpYnMtXFx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ0OlxcdGRpYnMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZkaWJzX2NsYXNzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDUtXFx0ZGV2aWNlX2luaXRpYWxpemUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNTE9c3RhdGljIHNzaXplX3QgZ2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTQ6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NjpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY2LVxcdHUxNiBmYWJyaWNfaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY4OlxcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2OS1cXHRmYWJyaWNfaWQgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoZGlicyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTczPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmYWJyaWNfaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE3NTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGlic19kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc2LVxcdFxcdTAwMjZkZXZfYXR0cl9naWQuYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBkaWJzX2Rldl9hdHRyX2dyb3VwID0ge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODI6XFx0LmF0dHJzID0gZGlic19kZXZfYXR0cnMsXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4My19O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NTppbnQgZGlic19kZXZfYWRkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg2LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcXHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNmRpYnMtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcXHRcXHRkZXZfZXJyKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYsIFxcXCJzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMy1cXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNS1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwNjpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA3LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEwLVxcdFxcdFxcdGNsaWVudHNbaV0tXFx1MDAzZW9wcy1cXHUwMDNlYWRkX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTU6XFx0bGlzdF9hZGQoXFx1MDAyNmRpYnMtXFx1MDAzZWxpc3QsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTY6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMDpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hZGQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjc6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRpYnNfZGV2X2F0dHJfZ3JvdXApO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzNS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0MS1cXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQyOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0My1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDY6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19kZXZfZGVsKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTI6XFx0cmMgPSBjbGFzc19yZWdpc3RlcihcXHUwMDI2ZGlic19jbGFzcyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU1LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XFx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2NTpcXHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNmRpYnNfY2xhc3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMjgtXFx0c3BpbmxvY2tfdCBjbWRfbG9jazsgLyogc2VyaWFsaXplcyBjbWRzICovXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjk6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMwLVxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTc3PXN0YXRpYyB2b2lkIGlzbV9mcmVlX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg1LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE4NjpzdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg3LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIwNS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDY6c3RhdGljIGludCBpc21fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMDctXFx0XFx0XFx0ICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjIzPXN0YXRpYyBpbnQgaXNtX21heF9kbWJzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjctXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjI4OnN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM1LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIzNjpzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM3LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI4Mi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyODM6c3RhdGljIGludCBpc21fcmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIsXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjg0OlxcdFxcdFxcdCAgICBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yODUte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE4LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxOTpzdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNDQtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzQ1OnN0YXRpYyBpbnQgaXNtX2FkZF92bGFuX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHZsYW5faWQpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzQ2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM1OC1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNTk6c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjAte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzcyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM3MzpzdGF0aWMgaW50IGlzbV9zaWduYWxfaWVxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM3NC1cXHRcXHRcXHQgIHUzMiB0cmlnZ2VyX2lycSwgdTMyIGV2ZW50X2NvZGUsIHU2NCBpbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzkxPXN0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2J5dGVzKHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5Ni1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozOTc6c3RhdGljIGludCBpc21fbW92ZShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLCB1bnNpZ25lZCBpbnQgaWR4LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5OC1cXHRcXHQgICAgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyMi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0MjM6c3RhdGljIHUxNiBpc21fZ2V0X2NoaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyNC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00NjE9c3RhdGljIHZvaWQgaXNtX2hhbmRsZV9ldmVudChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ2Mi17XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDYzOlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicyA9IGlzbS1cXHUwMDNlZGlicztcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NjQ6XFx0c3RydWN0IGRpYnNfZXZlbnQgZXZlbnQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDY1LVxcdHN0cnVjdCBpc21fZXZlbnQgKmVudHJ5O1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ2NjpcXHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsdDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00OTk9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MDItXFx0dW5zaWduZWQgbG9uZyBiaXQsIGVuZDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MDM6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUwNC1cXHR1bnNpZ25lZCBsb25nICpidjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0Mi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01NDQtXFx0LmdldF9mYWJyaWNfaWQgPSBpc21fZ2V0X2NoaWQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02MDU9c3RhdGljIGludCBpc21fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02MDYte1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjYwNzpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjA4LVxcdHN0cnVjdCB6cGNpX2RldiAqemRldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTYzNS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2MzY6XFx0ZGlicyA9IGRpYnNfZGV2X2FsbG9jKCk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjM3LVxcdGlmICghZGlicykge1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ2LVxcdC8qIGVuYWJsZSBpc20gZGV2aWNlLCBidXQgYW55IGludGVycnVwdHMgYW5kIGV2ZW50cyB3aWxsIGJlIGlnbm9yZWRcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2NDc6XFx0ICogYmVmb3JlIGRpYnNfZGV2X2FkZCgpIGFkZHMgaXQgdG8gYW55IGNsaWVudHMuXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjYyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY2MzpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NzEtZXJyX2RpYnM6XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjcyOlxcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY3My1cXHRwdXRfZGV2aWNlKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Njg1PXN0YXRpYyB2b2lkIGlzbV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02ODctXFx0c3RydWN0IGlzbV9kZXYgKmlzbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2ODg6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gaXNtLVxcdTAwM2VkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY4OS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2OTA6XFx0ZGlic19kZXZfZGVsKGRpYnMpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY5MS1cXHRpc21fZGV2X2V4aXQoaXNtKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2OTI6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjkzLVxcdHB1dF9kZXZpY2UoXFx1MDAyNmRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00NS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDo0NjpzdHJ1Y3QgZGlic19kbWIge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTQ3LVxcdC8qIHRvayAtIFRva2VuIGZvciB0aGlzIGRtYlxcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtNzQtICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6NzU6ZW51bSBkaWJzX2V2ZW50X3R5cGUge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTc2LVxcdC8qIEJ1ZmZlciBldmVudCwgZS5nLiBhIHJlbW90ZSBkbWIgd2FzIHVucmVnaXN0ZXJlZCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtODUtXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6ODY6ZW51bSBkaWJzX2V2ZW50X3N1YnR5cGUge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTg3LVxcdERJQlNfQlVGX1VOUkVHSVNURVJFRCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTkyLVxcbmluY2x1ZGUvbGludXgvZGlicy5oOjkzOnN0cnVjdCBkaWJzX2V2ZW50IHtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC05NC1cXHR1MzIgdHlwZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEwNC1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMDU6c3RydWN0IGRpYnNfZGV2O1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTEwNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTExNS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMTY6c3RydWN0IGRpYnNfY2xpZW50X29wcyB7XFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTE3LVxcdC8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIwLVxcdCAqXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTIxOlxcdCAqIFdpbGwgYmUgY2FsbGVkIGR1cmluZyBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIGZvciBhbGwgZXhpc3RpbmdcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjItXFx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIG5ldyBkaWJzIGRldmljZSBpcyByZWdpc3RlcmVkLlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEyMzpcXHQgKiBkZXYgaXMgdXNhYmxlIHVudGlsIGRpYnNfY2xpZW50LnJlbW92ZSgpIGlzIGNhbGxlZC5cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjQtXFx0ICogKmRldiBpcyBwcm90ZWN0ZWQgYnkgZGV2aWNlIHJlZmNvdW50aW5nLlxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjY6XFx0dm9pZCAoKmFkZF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjctXFx0LyoqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzEtXFx0ICogV2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBkaWJzIGRldmljZSBpcyByZW1vdmVkLlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEzMjpcXHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic191bnJlZ2lzdGVyX2NsaWVudCgpIGZvciBhbGwgZXhpc3RpbmdcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzMtXFx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIGRpYnMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEzNy1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMzg6XFx0dm9pZCAoKmRlbF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzktXFx0LyoqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTItXFx0ICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTUzOlxcdHZvaWQgKCpoYW5kbGVfaXJxKShzdHJ1Y3QgZGlic19kZXYgKmRldiwgdW5zaWduZWQgaW50IGlkeCxcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTQtXFx0XFx0XFx0ICAgdTE2IGRtYmVtYXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTE2MS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxNjI6XFx0dm9pZCAoKmhhbmRsZV9ldmVudCkoc3RydWN0IGRpYnNfZGV2ICpkZXYsXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTYzOlxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGRpYnNfZXZlbnQgKmV2ZW50KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTAuMjM5MDM2MDUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzY5Njk1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERJQlMgQ2xpZW50IFJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hvJ3MgcmVnaXN0ZXJpbmcgYXMgYSBESUJTIGNsaWVudC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYuIFRpbWUgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXTigJlzIGhhcHBlbmluZyBpbiB0aGUgc3lzdGVtLlxuXG5JJ2xsIHN0YXJ0IHdpdGggdGhlIG1vc3Qgb2J2aW91czogd2hlcmUncyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIGNhbGwgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZXNlIGNsaWVudHM/IEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiB0aGF0J3MgbGlrZWx5IGBkaWJzX3JlZ2lzdGVyX2NsaWVudGAuIExldCdzIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGNvZGViYXNlIGFuZCBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbiBuYW1lLiBUaGlzIHdpbGwgaW1tZWRpYXRlbHkgc2hvdyBtZSB3aGVyZSB0aGUgcmVnaXN0cmF0aW9uIGxvZ2ljIGlzIGludm9rZWQgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdoaWNoIEkgY2FuIHRoZW4gYW5hbHl6ZS4gRnJvbSB0aGVyZSBJIGNhbiBtb3ZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBhbnkgcmVsZXZhbnQgcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTIuNDE2MDA4NTY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI1OTU4Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNfcmVnaXN0ZXJfY2xpZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9kaWJzX21haW4uYz00MD1zdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgwLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oPTExNj1zdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyMC1cXHQgKlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEyMTpcXHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic19yZWdpc3Rlcl9jbGllbnQoKSBmb3IgYWxsIGV4aXN0aW5nXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIyLVxcdCAqIGRpYnMgZGV2aWNlcyBhbmQgd2hlbmV2ZXIgYSBuZXcgZGlicyBkZXZpY2UgaXMgcmVnaXN0ZXJlZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oPTE2Nj1zdHJ1Y3QgZGlic19jbGllbnQge1xcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTc2LS8qKlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjE3NzogKiBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIC0gcmVnaXN0ZXIgYSBjbGllbnQgd2l0aCBkaWJzIGxheWVyXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTc4LSAqIEBjbGllbnQ6IHRoaXMgY2xpZW50XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xODItICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTgzOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudCk7XFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTg0LS8qKlxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjMwPWludCBzbWNfaXNtX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cXG5uZXQvc21jL3NtY19pc20uYzo2Mzc6XFx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02MzgtXFx0cmV0dXJuIHJjO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1NC42NDE5NzM1NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE2NzQ4Mzk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFNNQyBDbGllbnQgRGF0YSBNb3ZlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFNNQyBzdHVmZiwgc3BlY2lmaWNhbGx5IHRoZSBjbGllbnQgc2lkZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggSSdtIHByZXR0eSBzdXJlIHJlc2lkZXMgd2l0aGluIGBuZXQvc21jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIERJQlMgYW5kIHVzaW5nIHRoYXQgYGRpYnNfbG9fbW92ZV9kYXRhYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBkYXRhIHRyYW5zZmVyIHByb2Nlc3MuXG5cbk15IGZpcnN0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgYSBkZWVwIGRpdmUgaW50byB0aGUgYG5ldC9zbWMvYCBkaXJlY3RvcnkgYW5kIGl0cyBjb25maWd1cmF0aW9uIGZpbGVzLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgZmlsZXMgZGlyZWN0bHksIGxvb2tpbmcgZm9yIGhvdyBkYXRhIG1vdmVtZW50IGlzIG9yY2hlc3RyYXRlZCB3aXRoaW4gdGhlIFNNQyBjbGllbnQuIFRvIGFjY2VsZXJhdGUgdGhpbmdzLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciB0aGUgdGVybXMgXCJtb3ZlX2RhdGFcIiBhbmQgXCJkaWJzXCIgd2l0aGluIHRoYXQgc3BlY2lmaWMgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZm9jdXNlZCBsaXN0IG9mIHJlbGV2YW50IGZpbGVzIGFuZCBzZWN0aW9ucyBvZiBjb2RlIHRvIGV4YW1pbmUgY2xvc2VseS4gVGhhdCBzaG91bGQgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgYXJlYXMgd2hlcmUgdGhlIERJQlMgaW50ZWdyYXRpb24gaXMgbW9zdCByZWxldmFudCB0byB0aGUgZGF0YSB0cmFuc2Zlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMTgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1Ni44MDk0NjAzNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDU0MDY1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2xjLmM9ODQ2PWludCBzbWNfY2xjX3NlbmRfcHJvcG9zYWwoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19jbGMuYy05MTktXFx0XFx0XFx0c21jZCA9IGluaS1cXHUwMDNlaXNtX2RldlswXTtcXG5uZXQvc21jL3NtY19jbGMuYzo5MjA6XFx0XFx0XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfY2xjLmMtOTIxLVxcdFxcdFxcdHBjbGNfc21jZC1cXHUwMDNlaXNtLmdpZCA9IGh0b25sbChzbWNkX2dpZC5naWQpO1xcbi0tXFxubmV0L3NtYy9zbWNfY2xjLmMtOTY5LVxcdFxcdFxcdFxcdHNtY2QgPSBpbmktXFx1MDAzZWlzbV9kZXZbaV07XFxubmV0L3NtYy9zbWNfY2xjLmM6OTcwOlxcdFxcdFxcdFxcdGNvcHlfdG9fc21jZGdpZChcXHUwMDI2c21jZF9naWQsIFxcdTAwMjZzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VnaWQpO1xcbm5ldC9zbWMvc21jX2NsYy5jLTk3MS1cXHRcXHRcXHRcXHRnaWRjaGlkc1tlbnRyeV0uY2hpZCA9XFxuLS1cXG5uZXQvc21jL3NtY19jbGMuYz0xMDQ3PXNtY2RfY2xjX3ByZXBfY29uZmlybV9hY2NlcHQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2xjLmMtMTA2Mi1cXHQgICAgICAgc2l6ZW9mKFNNQ0RfRVlFQ0FUQ0hFUikpO1xcbm5ldC9zbWMvc21jX2NsYy5jOjEwNjM6XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfY2xjLmMtMTA2NC1cXHRjbGMtXFx1MDAzZWhkci50eXBldjEgPSBTTUNfVFlQRV9EO1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTUzNj1zdGF0aWMgaW50IHNtY19ubF9maWxsX3NtY2RfbGdyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTU1Ny1cXHRcXHRnb3RvIGVycmF0dHI7XFxubmV0L3NtYy9zbWNfY29yZS5jOjU1ODpcXHRjb3B5X3RvX3NtY2RnaWQoXFx1MDAyNnNtY2RfZ2lkLCBcXHUwMDI2c21jZC1cXHUwMDNlZGlicy1cXHUwMDNlZ2lkKTtcXG5uZXQvc21jL3NtY19jb3JlLmMtNTU5LVxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFNNQ19OTEFfTEdSX0RfR0lELFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTg4OT1zdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTk0MC1cXHRcXHRzbWNkID0gaW5pLVxcdTAwM2Vpc21fZGV2W2luaS1cXHUwMDNlaXNtX3NlbGVjdGVkXTtcXG5uZXQvc21jL3NtY19jb3JlLmM6OTQxOlxcdFxcdGdldF9kZXZpY2UoXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxubmV0L3NtYy9zbWNfY29yZS5jLTk0Mi1cXHRcXHRsZ3ItXFx1MDAzZXBlZXJfZ2lkLmdpZCA9XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MTQ3NT1zdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ5MS1cXHRcXHRzbWNfaXNtX3B1dF92bGFuKGxnci1cXHUwMDNlc21jZCwgbGdyLVxcdTAwM2V2bGFuX2lkKTtcXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ5MjpcXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZsZ3ItXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTMtXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfZGlhZy5jPTcyPXN0YXRpYyBpbnQgX19zbWNfZGlhZ19kdW1wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2RpYWcuYy0xNzctXFx0XFx0ZGluZm8ucGVlcl9naWRfZXh0ID0gY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VwZWVyX2dpZC5naWRfZXh0O1xcbm5ldC9zbWMvc21jX2RpYWcuYzoxNzg6XFx0XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfZGlhZy5jLTE3OS1cXHRcXHRkaW5mby5teV9naWQgPSBzbWNkX2dpZC5naWQ7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0xOS0jaW5jbHVkZSBcXFwic21jX25ldGxpbmsuaFxcXCJcXG5uZXQvc21jL3NtY19pc20uYzoyMDojaW5jbHVkZSBcXFwibGludXgvZGlicy5oXFxcIlxcbm5ldC9zbWMvc21jX2lzbS5jLTIxLVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9Mjg9c3RhdGljIHU4IHNtY19pc21fdjJfc3lzdGVtX2VpZFtTTUNfTUFYX0VJRF9MRU5dO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5LVxcbm5ldC9zbWMvc21jX2lzbS5jOjMwOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XFxubmV0L3NtYy9zbWNfaXNtLmM6MzE6c3RhdGljIHZvaWQgc21jZF91bnJlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMyOnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcXG5uZXQvc21jL3NtY19pc20uYzozMzpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjM0OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG5uZXQvc21jL3NtY19pc20uYy0zNS1cXHRcXHRcXHQgICAgdTE2IGRtYmVtYXNrKTtcXG5uZXQvc21jL3NtY19pc20uYy0zNi1cXG5uZXQvc21jL3NtY19pc20uYzozNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50X29wcyBzbWNfY2xpZW50X29wcyA9IHtcXG5uZXQvc21jL3NtY19pc20uYy0zOC1cXHQuYWRkX2RldiA9IHNtY2RfcmVnaXN0ZXJfZGV2LFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDMtXFxubmV0L3NtYy9zbWNfaXNtLmM6NDQ6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCBzbWNfZGlic19jbGllbnQgPSB7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDUtXFx0Lm5hbWUgPSBcXFwiU01DLURcXFwiLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NzE9aW50IHNtY19pc21fY2FudGFsayhzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNzMte1xcbm5ldC9zbWMvc21jX2lzbS5jOjc0OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicyA9IHNtY2QtXFx1MDAzZWRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtNzUtXFx0dXVpZF90IGlzbV9yZ2lkO1xcbm5ldC9zbWMvc21jX2lzbS5jLTc2LVxcbm5ldC9zbWMvc21jX2lzbS5jOjc3OlxcdGNvcHlfdG9fZGlic2dpZChcXHUwMDI2aXNtX3JnaWQsIHBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo3ODpcXHRyZXR1cm4gZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VxdWVyeV9yZW1vdGVfZ2lkKGRpYnMsIFxcdTAwMjZpc21fcmdpZCwgdmxhbl9pZCA/IDEgOiAwLFxcbm5ldC9zbWMvc21jX2lzbS5jLTc5LVxcdFxcdFxcdFxcdFxcdCAgdmxhbl9pZCk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz05MD11MTYgc21jX2lzbV9nZXRfY2hpZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXFxubmV0L3NtYy9zbWNfaXNtLmMtOTEte1xcbm5ldC9zbWMvc21jX2lzbS5jOjkyOlxcdHJldHVybiBzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cXHUwMDNlZGlicyk7XFxubmV0L3NtYy9zbWNfaXNtLmMtOTMtfVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MTMzPWludCBzbWNfaXNtX2dldF92bGFuKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdW5zaWduZWQgc2hvcnQgdmxhbmlkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMTQwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9zbWMvc21jX2lzbS5jOjE0MTpcXHRpZiAoIXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQpXFxubmV0L3NtYy9zbWNfaXNtLmMtMTQyLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTE2My1cXHQgKi9cXG5uZXQvc21jL3NtY19pc20uYzoxNjQ6XFx0aWYgKHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQoc21jZC1cXHUwMDNlZGlicywgdmxhbmlkKSkge1xcbm5ldC9zbWMvc21jX2lzbS5jLTE2NS1cXHRcXHRrZnJlZShuZXdfdmxhbik7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0xNzk9aW50IHNtY19pc21fcHV0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0xODctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubmV0L3NtYy9zbWNfaXNtLmM6MTg4OlxcdGlmICghc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VkZWxfdmxhbl9pZClcXG5uZXQvc21jL3NtY19pc20uYy0xODktXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjA1LVxcdC8qIEZvdW5kIGFuZCB0aGUgbGFzdCByZWZlcmVuY2UganVzdCBnb25lICovXFxubmV0L3NtYy9zbWNfaXNtLmM6MjA2OlxcdGlmIChzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWRlbF92bGFuX2lkKHNtY2QtXFx1MDAzZWRpYnMsIHZsYW5pZCkpXFxubmV0L3NtYy9zbWNfaXNtLmMtMjA3LVxcdFxcdHJjID0gLUVJTztcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTIxNT12b2lkIHNtY19pc21fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IHNtY2RfZGV2ICpzbWNkLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjE3LXtcXG5uZXQvc21jL3NtY19pc20uYzoyMTg6XFx0c3RydWN0IGRpYnNfZG1iIGRtYjtcXG5uZXQvc21jL3NtY19pc20uYy0yMTktXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yMjktXFxubmV0L3NtYy9zbWNfaXNtLmM6MjMwOlxcdHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNldW5yZWdpc3Rlcl9kbWIoc21jZC1cXHUwMDNlZGlicywgXFx1MDAyNmRtYik7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjMxLVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjM1PWludCBzbWNfaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGRtYl9sZW4sXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yMzcte1xcbm5ldC9zbWMvc21jX2lzbS5jOjIzODpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmM6MjM5OlxcdHN0cnVjdCBkaWJzX2RtYiBkbWI7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjQwLVxcdGludCByYztcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTI0NS1cXHRkbWIudmxhbl9pZCA9IGxnci1cXHUwMDNldmxhbl9pZDtcXG5uZXQvc21jL3NtY19pc20uYzoyNDY6XFx0Y29weV90b19kaWJzZ2lkKFxcdTAwMjZkbWIucmdpZCwgXFx1MDAyNmxnci1cXHUwMDNlcGVlcl9naWQpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI0Ny1cXG5uZXQvc21jL3NtY19pc20uYzoyNDg6XFx0ZGlicyA9IGxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicztcXG5uZXQvc21jL3NtY19pc20uYzoyNDk6XFx0cmMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZXJlZ2lzdGVyX2RtYihkaWJzLCBcXHUwMDI2ZG1iLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy0yNTAtXFx0aWYgKCFyYykge1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjY1LVxcdCAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjI2NjpcXHRyZXR1cm4gKHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc3VwcG9ydF9tbWFwcGVkX3JkbWIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19pc20uYzoyNjc6XFx0XFx0c21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzdXBwb3J0X21tYXBwZWRfcmRtYihzbWNkLVxcdTAwM2VkaWJzKSk7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjY4LX1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTI3MD1pbnQgc21jX2lzbV9hdHRhY2hfZG1iKHN0cnVjdCBzbWNkX2RldiAqZGV2LCB1NjQgdG9rZW4sXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yNzIte1xcbm5ldC9zbWMvc21jX2lzbS5jOjI3MzpcXHRzdHJ1Y3QgZGlic19kbWIgZG1iO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI3NC1cXHRpbnQgcmMgPSAwO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI3NS1cXG5uZXQvc21jL3NtY19pc20uYzoyNzY6XFx0aWYgKCFkZXYtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYXR0YWNoX2RtYilcXG5uZXQvc21jL3NtY19pc20uYy0yNzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yODAtXFx0ZG1iLmRtYl90b2sgPSB0b2tlbjtcXG5uZXQvc21jL3NtY19pc20uYzoyODE6XFx0cmMgPSBkZXYtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYXR0YWNoX2RtYihkZXYtXFx1MDAzZWRpYnMsIFxcdTAwMjZkbWIpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI4Mi1cXHRpZiAoIXJjKSB7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0yOTM9aW50IHNtY19pc21fZGV0YWNoX2RtYihzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgdTY0IHRva2VuKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI5NC17XFxubmV0L3NtYy9zbWNfaXNtLmM6Mjk1OlxcdGlmICghZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWRldGFjaF9kbWIpXFxubmV0L3NtYy9zbWNfaXNtLmMtMjk2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5Ny1cXG5uZXQvc21jL3NtY19pc20uYzoyOTg6XFx0cmV0dXJuIGRldi1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VkZXRhY2hfZG1iKGRldi1cXHUwMDNlZGlicywgdG9rZW4pO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5OS19XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0zMDE9c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY2RfZGV2KHN0cnVjdCBzbWNkX2RldiAqc21jZCxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTMwNy1cXHRzdHJ1Y3QgbmxhdHRyICpwb3J0X2F0dHJzO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMwODpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtMzA5LVxcdHN0cnVjdCBubGF0dHIgKmF0dHJzO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzEyLVxcbm5ldC9zbWMvc21jX2lzbS5jOjMxMzpcXHRkaWJzID0gc21jZC1cXHUwMDNlZGlicztcXG5uZXQvc21jL3NtY19pc20uYy0zMTQtXFx0bmxoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCwgY2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzI3LVxcdG1lbXNldChcXHUwMDI2c21jX3BjaV9kZXYsIDAsIHNpemVvZihzbWNfcGNpX2RldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMyODpcXHRzbWNfc2V0X3BjaV92YWx1ZXModG9fcGNpX2RldihkaWJzLVxcdTAwM2VkZXYucGFyZW50KSwgXFx1MDAyNnNtY19wY2lfZGV2KTtcXG5uZXQvc21jL3NtY19pc20uYy0zMjktXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgU01DX05MQV9ERVZfUENJX0ZJRCwgc21jX3BjaV9kZXYucGNpX2ZpZCkpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0zNjU9c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jZF9kZXYoc3RydWN0IHNtY2RfZGV2X2xpc3QgKmRldl9saXN0LFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVxcdFxcdFxcdGdvdG8gbmV4dDtcXG5uZXQvc21jL3NtY19pc20uYzozNzg6XFx0XFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cXHUwMDNlZGlicykpXFxubmV0L3NtYy9zbWNfaXNtLmMtMzc5LVxcdFxcdFxcdGdvdG8gbmV4dDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTM5Nj1zdHJ1Y3Qgc21jX2lzbV9ldmVudF93b3JrIHtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTM5OC1cXHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2Q7XFxubmV0L3NtYy9zbWNfaXNtLmM6Mzk5OlxcdHN0cnVjdCBkaWJzX2V2ZW50IGV2ZW50O1xcbm5ldC9zbWMvc21jX2lzbS5jLTQwMC19O1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NDE3PXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX3N3X2V2ZW50KHN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsgKndyaylcXG5uZXQvc21jL3NtY19pc20uYy00MTgte1xcbm5ldC9zbWMvc21jX2lzbS5jOjQxOTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSB3cmstXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDIwLVxcdHVuaW9uIHNtY2Rfc3dfZXZlbnRfaW5mbyBldl9pbmZvO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDMxLVxcdFxcdGlmIChldl9pbmZvLmNvZGUgPT0gSVNNX0VWRU5UX1JFUVVFU1QgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19pc20uYzo0MzI6XFx0XFx0ICAgIGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc2lnbmFsX2V2ZW50KSB7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDMzLVxcdFxcdFxcdGV2X2luZm8uY29kZSA9IElTTV9FVkVOVF9SRVNQT05TRTtcXG5uZXQvc21jL3NtY19pc20uYzo0MzQ6XFx0XFx0XFx0Y29weV90b19kaWJzZ2lkKFxcdTAwMjZpc21fcmdpZCwgXFx1MDAyNnBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo0MzU6XFx0XFx0XFx0ZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzaWduYWxfZXZlbnQoZGlicywgXFx1MDAyNmlzbV9yZ2lkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTQzNi1cXHRcXHRcXHRcXHRcXHQgICAgICAgSVNNX0VWRU5UX1JFUVVFU1RfSVIsXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz00NjY9c3RhdGljIHN0cnVjdCBzbWNkX2RldiAqc21jZF9hbGxvY19kZXYoY29uc3QgY2hhciAqbmFtZSwgaW50IG1heF9kbWJzKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDkwLVxcbm5ldC9zbWMvc21jX2lzbS5jOjQ5MTpzdGF0aWMgdm9pZCBzbWNkX3JlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxubmV0L3NtYy9zbWNfaXNtLmMtNDkyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTQ5NS1cXG5uZXQvc21jL3NtY19pc20uYzo0OTY6XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDk3LVxcbm5ldC9zbWMvc21jX2lzbS5jOjQ5ODpcXHRzbWNkID0gc21jZF9hbGxvY19kZXYoZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldiksIG1heF9kbWJzKTtcXG5uZXQvc21jL3NtY19pc20uYy00OTktXFx0aWYgKCFzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTAxLVxcbm5ldC9zbWMvc21jX2lzbS5jOjUwMjpcXHRzbWNkLVxcdTAwM2VkaWJzID0gZGlicztcXG5uZXQvc21jL3NtY19pc20uYzo1MDM6XFx0ZGlic19zZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50LCBzbWNkKTtcXG5uZXQvc21jL3NtY19pc20uYy01MDQtXFxubmV0L3NtYy9zbWNfaXNtLmM6NTA1OlxcdGlmIChzbWNfcG5ldGlkX2J5X2Rldl9wb3J0KGRpYnMtXFx1MDAzZWRldi5wYXJlbnQsIDAsIHNtY2QtXFx1MDAzZXBuZXRpZCkpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTA2LVxcdFxcdHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzbWNkKTtcXG5uZXQvc21jL3NtY19pc20uYy01MDctXFxubmV0L3NtYy9zbWNfaXNtLmM6NTA4OlxcdGlmIChzbWNfaXNtX2lzX2xvb3BiYWNrKGRpYnMpIHx8XFxubmV0L3NtYy9zbWNfaXNtLmM6NTA5OlxcdCAgICAoZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VhZGRfdmxhbl9pZCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zbWMvc21jX2lzbS5jOjUxMDpcXHQgICAgICFkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWFkZF92bGFuX2lkKGRpYnMsIElTTV9SRVNFUlZFRF9WTEFOSUQpKSkge1xcbm5ldC9zbWMvc21jX2lzbS5jLTUxMS1cXHRcXHRzbWNfaXNtX3NldF92Ml9jYXBhYmxlKCk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy01MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc21jZF9kZXYsIGxpc3QpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjUyMjpcXHRcXHRpZiAoZmVudHJ5IFxcdTAwMjZcXHUwMDI2IHNtY19pc21faXNfbG9vcGJhY2soZmVudHJ5LVxcdTAwM2VkaWJzKSlcXG5uZXQvc21jL3NtY19pc20uYy01MjMtXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNnNtY2QtXFx1MDAzZWxpc3QsIFxcdTAwMjZmZW50cnktXFx1MDAzZWxpc3QpO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTMyLVxcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGggcG5ldGlkICUuMTZzJXNcXFxcblxcXCIsXFxubmV0L3NtYy9zbWNfaXNtLmM6NTMzOlxcdFxcdFxcdFxcdCAgICBkZXZfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KSwgc21jZC1cXHUwMDNlcG5ldGlkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTUzNC1cXHRcXHRcXHRcXHQgICAgc21jZC1cXHUwMDNlcG5ldGlkX2J5X3VzZXIgP1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTM4LVxcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGhvdXQgcG5ldGlkXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX2lzbS5jOjUzOTpcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTU0MC1cXHRyZXR1cm47XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy01NDItXFxubmV0L3NtYy9zbWNfaXNtLmM6NTQzOnN0YXRpYyB2b2lkIHNtY2RfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbm5ldC9zbWMvc21jX2lzbS5jLTU0NC17XFxubmV0L3NtYy9zbWNfaXNtLmM6NTQ1OlxcdHN0cnVjdCBzbWNkX2RldiAqc21jZCA9IGRpYnNfZ2V0X3ByaXYoZGlicywgXFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTQ2LVxcbm5ldC9zbWMvc21jX2lzbS5jLTU0Ny1cXHRwcl93YXJuX3JhdGVsaW1pdGVkKFxcXCJzbWM6IHJlbW92aW5nIHNtY2QgZGV2aWNlICVzXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX2lzbS5jOjU0ODpcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTU0OS1cXHRzbWNkLVxcdTAwM2Vnb2luZ19hd2F5ID0gMTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTU2OC0gKi9cXG5uZXQvc21jL3NtY19pc20uYzo1Njk6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxcbm5ldC9zbWMvc21jX2lzbS5jOjU3MDpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTcxLXtcXG5uZXQvc21jL3NtY19pc20uYzo1NzI6XFx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy01NzMtXFx0c3RydWN0IHNtY19pc21fZXZlbnRfd29yayAqd3JrO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTkzLSAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk1LVxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk2LXtcXG5uZXQvc21jL3NtY19pc20uYzo1OTc6XFx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy01OTgtXFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gTlVMTDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTYwOD1pbnQgc21jX2lzbV9zaWduYWxfc2h1dGRvd24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy02MTUtXFx0XFx0cmV0dXJuIDA7XFxubmV0L3NtYy9zbWNfaXNtLmM6NjE2OlxcdGlmICghbGdyLVxcdTAwM2VzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZXNpZ25hbF9ldmVudClcXG5uZXQvc21jL3NtY19pc20uYy02MTctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy02MjEtXFx0ZXZfaW5mby5jb2RlID0gSVNNX0VWRU5UX1JFUVVFU1Q7XFxubmV0L3NtYy9zbWNfaXNtLmM6NjIyOlxcdGNvcHlfdG9fZGlic2dpZChcXHUwMDI2aXNtX3JnaWQsIFxcdTAwMjZsZ3ItXFx1MDAzZXBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo2MjM6XFx0cmMgPSBsZ3ItXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc2lnbmFsX2V2ZW50KGxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicywgXFx1MDAyNmlzbV9yZ2lkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTYyNC1cXHRcXHRcXHRcXHRcXHQgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjMwPWludCBzbWNfaXNtX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cXG5uZXQvc21jL3NtY19pc20uYzo2Mzc6XFx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02MzgtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjQxPXZvaWQgc21jX2lzbV9leGl0KHZvaWQpXFxubmV0L3NtYy9zbWNfaXNtLmMtNjQyLXtcXG5uZXQvc21jL3NtY19pc20uYzo2NDM6XFx0ZGlic191bnJlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02NDQtfVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmgtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L211dGV4LmhcXHUwMDNlXFxubmV0L3NtYy9zbWNfaXNtLmg6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5uZXQvc21jL3NtY19pc20uaC0xNi1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oPTY2PXN0YXRpYyBpbmxpbmUgaW50IHNtY19pc21fd3JpdGUoc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1NjQgZG1iX3RvayxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTcxLVxcbm5ldC9zbWMvc21jX2lzbS5oOjcyOlxcdHJjID0gc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2Vtb3ZlX2RhdGEoc21jZC1cXHUwMDNlZGlicywgZG1iX3RvaywgaWR4LCBzZiwgb2Zmc2V0LFxcbm5ldC9zbWMvc21jX2lzbS5oLTczLVxcdFxcdFxcdFxcdCAgICAgICBkYXRhLCBsZW4pO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9ODk9c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfZW11bGF0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTkwLXtcXG5uZXQvc21jL3NtY19pc20uaDo5MTpcXHR1MTYgY2hpZCA9IHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X2ZhYnJpY19pZChzbWNkLVxcdTAwM2VkaWJzKTtcXG5uZXQvc21jL3NtY19pc20uaC05Mi1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTk1LVxcbm5ldC9zbWMvc21jX2lzbS5oOjk2OnN0YXRpYyBpbmxpbmUgYm9vbCBzbWNfaXNtX2lzX2xvb3BiYWNrKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5uZXQvc21jL3NtY19pc20uaC05Ny17XFxubmV0L3NtYy9zbWNfaXNtLmg6OTg6XFx0cmV0dXJuIChkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoZGlicykgPT0gRElCU19MT09QQkFDS19GQUJSSUMpO1xcbm5ldC9zbWMvc21jX2lzbS5oLTk5LX1cXG5uZXQvc21jL3NtY19pc20uaC0xMDAtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3NtY2RnaWQoc3RydWN0IHNtY2RfZ2lkICpzZ2lkLCB1dWlkX3QgKmRpYnNfZ2lkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTEwMi17XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMDQtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTA1OlxcdG1lbWNweShcXHUwMDI2dGVtcCwgZGlic19naWQsIHNpemVvZihzZ2lkLVxcdTAwM2VnaWQpKTtcXG5uZXQvc21jL3NtY19pc20uaC0xMDYtXFx0c2dpZC1cXHUwMDNlZ2lkID0gbnRvaGxsKHRlbXApO1xcbm5ldC9zbWMvc21jX2lzbS5oOjEwNzpcXHRtZW1jcHkoXFx1MDAyNnRlbXAsICh1aW50OF90ICopZGlic19naWQgKyBzaXplb2Yoc2dpZC1cXHUwMDNlZ2lkKSxcXG5uZXQvc21jL3NtY19pc20uaC0xMDgtXFx0ICAgICAgIHNpemVvZihzZ2lkLVxcdTAwM2VnaWRfZXh0KSk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMTEtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTEyOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX2RpYnNnaWQodXVpZF90ICpkaWJzX2dpZCwgc3RydWN0IHNtY2RfZ2lkICpzZ2lkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTExMy17XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMTYtXFx0dGVtcCA9IGh0b25sbChzZ2lkLVxcdTAwM2VnaWQpO1xcbm5ldC9zbWMvc21jX2lzbS5oOjExNzpcXHRtZW1jcHkoZGlic19naWQsIFxcdTAwMjZ0ZW1wLCBzaXplb2Yoc2dpZC1cXHUwMDNlZ2lkKSk7XFxubmV0L3NtYy9zbWNfaXNtLmgtMTE4LVxcdHRlbXAgPSBodG9ubGwoc2dpZC1cXHUwMDNlZ2lkX2V4dCk7XFxubmV0L3NtYy9zbWNfaXNtLmg6MTE5OlxcdG1lbWNweSgodWludDhfdCAqKWRpYnNfZ2lkICsgc2l6ZW9mKHNnaWQtXFx1MDAzZWdpZCksIFxcdTAwMjZ0ZW1wLFxcbm5ldC9zbWMvc21jX2lzbS5oLTEyMC1cXHQgICAgICAgc2l6ZW9mKHNnaWQtXFx1MDAzZWdpZF9leHQpKTtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz0xMDE9c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqcG5ldF9uYW1lKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTE3MS1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIiUuMTZzXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX3BuZXQuYzoxNzI6XFx0XFx0XFx0XFx0XFx0ICAgIGRldl9uYW1lKFxcdTAwMjZzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYpLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xNzMtXFx0XFx0XFx0XFx0XFx0ICAgIHNtY2QtXFx1MDAzZXBuZXRpZCk7XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9MzM0PXN0YXRpYyBzdHJ1Y3Qgc21jZF9kZXYgKnNtY19wbmV0X2ZpbmRfc21jZChjaGFyICpzbWNkX25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMzM5LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc21jZF9kZXYsIFxcdTAwMjZzbWNkX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQwOlxcdFxcdGlmICghc3RybmNtcChkZXZfbmFtZShcXHUwMDI2c21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldiksIHNtY2RfbmFtZSxcXG5uZXQvc21jL3NtY19wbmV0LmMtMzQxLVxcdFxcdFxcdCAgICAgSUJfREVWSUNFX05BTUVfTUFYIC0gMSkgfHxcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQyOlxcdFxcdCAgICAoc21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldi5wYXJlbnQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQzOlxcdFxcdCAgICAgIXN0cm5jbXAoZGV2X25hbWUoc21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldi5wYXJlbnQpLCBzbWNkX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTM0NC1cXHRcXHRcXHQgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVggLSAxKSkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9NDE2PXN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX2liKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy00NDEtXFx0XFx0XFx0cHJfd2Fybl9yYXRlbGltaXRlZChcXFwic21jOiBzbWNkIGRldmljZSAlcyBhcHBsaWVkIHVzZXIgZGVmaW5lZCBwbmV0aWQgJS4xNnNcXFxcblxcXCIsXFxubmV0L3NtYy9zbWNfcG5ldC5jOjQ0MjpcXHRcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldiksXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQ0My1cXHRcXHRcXHRcXHRcXHQgICAgc21jZC1cXHUwMDNlcG5ldGlkKTtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz0xMjAyPWludCBzbWNfcG5ldGlkX2J5X3RhYmxlX3NtY2Qoc3RydWN0IHNtY2RfZGV2ICpzbWNkZGV2KVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMTYtXFx0XFx0ICAgICghc3RybmNtcCh0bXBfcGUtXFx1MDAzZWliX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEyMTc6XFx0XFx0XFx0ICAgICAgIGRldl9uYW1lKFxcdTAwMjZzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYpLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjE4LVxcdFxcdFxcdCAgICAgICBzaXplb2YodG1wX3BlLVxcdTAwM2VpYl9uYW1lKSkgfHxcXG5uZXQvc21jL3NtY19wbmV0LmM6MTIxOTpcXHRcXHQgICAgIChzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYucGFyZW50IFxcdTAwMjZcXHUwMDI2XFxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMjAtXFx0XFx0ICAgICAgIXN0cm5jbXAodG1wX3BlLVxcdTAwM2VpYl9uYW1lLFxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjIxOlxcdFxcdFxcdCAgICAgICBkZXZfbmFtZShzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYucGFyZW50KSxcXG5uZXQvc21jL3NtY19wbmV0LmMtMTIyMi1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cXHUwMDNlaWJfbmFtZSkpKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTYuOTI0MDA3NTM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NzkwOTk4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIFNNQyBXcml0ZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcyBgc21jX2lzbV93cml0ZWAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxsIHN0YWNrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgKip3aG8qKiBhbmQgdGhlICoqaG93Kiog4oCTIHNwZWNpZmljYWxseSwgKndobyogaXMgY2FsbGluZyB0aGF0IGZ1bmN0aW9uIGFuZCB3aGF0IHRoZSBleGVjdXRpb24gcGF0aCwgdGhlIGNhbGwgKnN0YWNrKiwgbG9va3MgbGlrZSB0aGF0IGxlYWRzIHRvIGl0LiBFc3NlbnRpYWxseSwgSSdtIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvZGUncyBleGVjdXRpb24gZmxvdyBsZWFkaW5nIHVwIHRvIHRoZSBwb2ludCBvZiBpbnRlcmVzdC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlOyBieSBleGFtaW5pbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zLCBJIGNhbiBvZnRlbiBpbmZlciB0aGUgY29udGV4dCBhbmQgdGhlIHB1cnBvc2Ugb2YgdGhlIHdyaXRlIG9wZXJhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBzdGFjayB3aWxsIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgYmVpbmcgd3JpdHRlbiwgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIHdyaXRlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHRlbGxzIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM5MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjU4LjgwMzExMDIxNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMTc5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2lzbV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2lzbS5oPTY0PWludCBzbWNkX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG5uZXQvc21jL3NtY19pc20uaC02NS1cXG5uZXQvc21jL3NtY19pc20uaDo2NjpzdGF0aWMgaW5saW5lIGludCBzbWNfaXNtX3dyaXRlKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdTY0IGRtYl90b2ssXFxubmV0L3NtYy9zbWNfaXNtLmgtNjctXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9MzAzPWludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTMwNy1cXG5uZXQvc21jL3NtY190eC5jOjMwODpcXHRyYyA9IHNtY19pc21fd3JpdGUoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkLCBjb25uLVxcdTAwM2VwZWVyX3Rva2VuLFxcbm5ldC9zbWMvc21jX3R4LmMtMzA5LVxcdFxcdFxcdCAgIGNvbm4tXFx1MDAzZXBlZXJfcm1iZV9pZHgsIHNpZ25hbCwgY29ubi1cXHUwMDNldHhfb2ZmICsgb2Zmc2V0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1OC44NjUxMzQ5MDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM0MDU1NzM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHNtY2RfdHhfaXNtX3dyaXRlYCBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgc21jZF90eF9pc21fd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHdoYXRldmVyIEknbSB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXppbmcsIG9yIHJlc2VhcmNoaW5nLiBUaGlzIGdpdmVzIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBmdW5jdGlvbidzIG92ZXJhbGwgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMC4yMDU2OTQ3MTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDQ4NDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNkX3R4X2lzbV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTIzNz1pbnQgc21jZF9jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjUzLVxcdGNkYy5jb25zLmNvbm5fc3RhdGVfZmxhZ3MgPSBjb25uLVxcdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3M7XFxubmV0L3NtYy9zbWNfY2RjLmM6MjU0OlxcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgXFx1MDAyNmNkYywgc2l6ZW9mKGNkYyksIDAsIDEpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTI1NS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY190eC5jPTE4MT1pbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmMtMzAyLS8qIHNuZGJ1ZiBjb25zdW1lcjogYWN0dWFsIGRhdGEgdHJhbnNmZXIgb2Ygb25lIHRhcmdldCBjaHVuayB3aXRoIElTTSB3cml0ZSAqL1xcbm5ldC9zbWMvc21jX3R4LmM6MzAzOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxubmV0L3NtYy9zbWNfdHguYy0zMDQtXFx0XFx0ICAgICAgdTMyIG9mZnNldCwgaW50IHNpZ25hbClcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9NDIxPXN0YXRpYyBpbnQgc21jZF90eF9yZG1hX3dyaXRlcyhzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHNpemVfdCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTQzNS1cXG5uZXQvc21jL3NtY190eC5jOjQzNjpcXHRcXHRcXHRyYyA9IHNtY2RfdHhfaXNtX3dyaXRlKGNvbm4sIGRhdGEsIHNyY19sZW4sIGRzdF9vZmYgK1xcbm5ldC9zbWMvc21jX3R4LmMtNDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyksIDApO1xcbi0tXFxubmV0L3NtYy9zbWNfdHguaD00MD12b2lkIHNtY190eF9jb25zdW1lcl91cGRhdGUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCBib29sIGZvcmNlKTtcXG5uZXQvc21jL3NtY190eC5oOjQxOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxubmV0L3NtYy9zbWNfdHguaC00Mi1cXHRcXHQgICAgICB1MzIgb2Zmc2V0LCBpbnQgc2lnbmFsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDAuMzEwMTgzNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk4ODY1NTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgRElCUyBNZXNzYWdpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgc21jX3R4X3NlbmRtc2dgIGFuZCBgc21jZF9jZGNfbXNnX3NlbmRgIGJvdGggdWx0aW1hdGVseSByZWx5IG9uIGBzbWNkX3R4X2lzbV93cml0ZWAuIFRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaGVyZSwgdGhlIGNvbW1vbiBkZW5vbWluYXRvci4gTm93LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0aHJvdWdoIHRoZSBESUJTIGxvb3BiYWNrIGRldmljZSByZWdpc3RyYXRpb24gYW5kIG92ZXJhbGwgRElCUyBmdW5jdGlvbmFsaXR5LiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHdpdGggYGRyaXZlcnMvZGlicy9kaWJzX21haW4uY2AgYW5kIHRoZW4gZ2V0IGludG8gdGhlIGxvb3BiYWNrIHNwZWNpZmljIGNvZGUgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBESUJTIG1lY2hhbmljcyBhbmQgcmVnaXN0cmF0aW9uIGRldGFpbHMgaW4gdGhvc2UgZmlsZXMsIHdoaWNoIHdpbGwgY2xhcmlmeSBob3cgdGhhdCBkYXRhIGdldHMgd3JpdHRlbiB2aWEgdGhlIHVuZGVybHlpbmcgSVNNIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MzUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMi4yOTg4NDIyMzlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG4gMjM2OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4gMjM3OlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpXFxuIDIzODpcXHR7XFxuIDIzOTpcXHRcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuIDI0MDpcXHRcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuIDI0MTpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAyNDI6XFx0XFx0dTE2IHNfbWFzaztcXG4gMjQzOlxcdFxcdHU4IGNsaWVudF9pZDtcXG4gMjQ0OlxcdFxcdHUzMiBzYmFfaWR4O1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRsZGV2ID0gZGlicy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdHJlYWRfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNDk6XFx0XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWJfdG9rKSB7XFxuIDI1MDpcXHRcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYl90b2spIHtcXG4gMjUxOlxcdFxcdFxcdFxcdHJtYl9ub2RlID0gdG1wX25vZGU7XFxuIDI1MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcdH1cXG4gMjU1OlxcdFxcdGlmICghcm1iX25vZGUpIHtcXG4gMjU2OlxcdFxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI1NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjU4OlxcdFxcdH1cXG4gMjU5OlxcdFxcdGlmICgodTY0KW9mZnNldCArIHNpemUgXFx1MDAzZSBybWJfbm9kZS1cXHUwMDNlbGVuKSB7XFxuIDI2MDpcXHRcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNjE6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI2MjpcXHRcXHR9XFxuIDI2MzpcXHRcXG4gMjY0OlxcdFxcdG1lbWNweSgoY2hhciAqKXJtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciArIG9mZnNldCwgZGF0YSwgc2l6ZSk7XFxuIDI2NTpcXHRcXHRzYmFfaWR4ID0gcm1iX25vZGUtXFx1MDAzZXNiYV9pZHg7XFxuIDI2NjpcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNjc6XFx0XFxuIDI2ODpcXHRcXHRpZiAoIXNmKVxcbiAyNjk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDI3MjpcXHRcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbiAyNzM6XFx0XFx0c19tYXNrID0gcm9yMTYoMHgxMDAwLCBpZHgpO1xcbiAyNzQ6XFx0XFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXFx1MDAyNlxcdTAwMjYgZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcXG4gMjc1OlxcdFxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuIDI3NjpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdHJldHVybiAwO1xcbiAyNzk6XFx0fVxcbiAyODA6XFx0XFxuIDI4MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcXG4gMjgyOlxcdFxcdC5nZXRfZmFicmljX2lkID0gZGlic19sb19nZXRfZmFicmljX2lkLFxcbiAyODM6XFx0XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuIDI4NDpcXHRcXHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMi4yOTg5NTQzMDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0NjIyNDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgTG9jayBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLCBJIHNlZSBhIGxvY2sgYWNxdWlzaXRpb24gY2hhbmdlZC4gQmVmb3JlIHRoZSBwYXRjaCwgaXQgd2FzIGEgc2ltcGxlIGBzcGluX2xvY2tgIGFuZCBgc3Bpbl91bmxvY2tgIHNlcXVlbmNlLiBOb3csIGl0J3MgYHNwaW5fbG9ja19pcnFzYXZlYCBhbmQgYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoeSogdGhpcyBjaGFuZ2U/IFdoYXQncyB0aGUgY29udGV4dCB0aGF0IG5lY2Vzc2l0YXRlZCB0aGlzIG1vZGlmaWNhdGlvbj9cblxuVGhlIGRpZmZlcmVuY2UgaXMgc2lnbmlmaWNhbnQ6IGBfaXJxc2F2ZWAgaW1wbGllcyB0aGUgbmVlZCB0byBkaXNhYmxlIGludGVycnVwdHMgKGFuZCBzYXZlIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZSkgZHVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgZmxhdy4gSXQncyBsaWtlbHkgdGhhdCBhIHJhY2UgY29uZGl0aW9uIG9yIGludGVycnVwdC1yZWxhdGVkIGlzc3VlIHdhcyBkaXNjb3ZlcmVkLiBUaGUgYGRpYnMtXHUwMDNlbG9ja2AgaXMgcHJvYmFibHkgcHJvdGVjdGluZyBzb21ldGhpbmcgdGhhdCBpcyBhbHNvIGFjY2Vzc2VkIGZyb20gaW50ZXJydXB0IGhhbmRsZXJzLCBvciBzb21ldGhpbmcgdGhhdCBpcyBzZW5zaXRpdmUgdG8gaW50ZXJydXB0IGxhdGVuY3kuXG5cblRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBJIG5lZWQgdG8gc2VlICpldmVyeXdoZXJlKiB0aGlzIGBkaWJzLVx1MDAzZWxvY2tgIGlzIHVzZWQuIEknbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGBkaWJzLVx1MDAzZWxvY2tgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZW50aXJlIHVzYWdlIHBhdHRlcm4uIEkgbmVlZCB0byBrbm93IGhvdyBpdCBpcyBiZWluZyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBBcmUgb3RoZXIgZnVuY3Rpb25zIGFsc28gY2hhbmdpbmcgdG8gaW50ZXJydXB0IHNhdmluZyB2ZXJzaW9ucz8gVGhhdCBjb250ZXh0IHdpbGwgaGVscCBtZSBxdWlja2x5IGRldGVybWluZSB0aGUgcm9vdCBjYXVzZSBhbmQgaWYgdGhlIGNoYW5nZSBpcyBhcHByb3ByaWF0ZS4gSWYgdGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBoYXMgYXBwcm9wcmlhdGUgdXNlcywgdGhlcmUgbWF5IGJlIGFuIGlzc3VlIHdpdGggdGhpcyBjaGFuZ2UuIEl0J3MgdGltZSB0byBkaWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODE0LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDQuNzQ1MTgyOTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzEyMDcyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlicy1cXHUwMDNlbG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDktXFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cXHUwMDNlaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xMzI9c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1OC1cXHRpZiAobGFzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjAtXFx0XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWJfbm9kZS1cXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTIzNT1zdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3MC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVxcdGNsaWVudF9pZCA9IGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3NS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc2OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3Ny1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz00MD1zdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ1OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ2LVxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50LVxcdTAwM2VpZF0gPSBjbGllbnQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ3OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDgtfVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTgzPWludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkxLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MjpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05My1cXHRcXHRtYXhfZG1icyA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlbWF4X2RtYnMoKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDMtXFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tjbGllbnQtXFx1MDAzZWlkXSA9IE5VTEw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwNDpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwNS1cXHRcXHRjbGllbnRzW2NsaWVudC1cXHUwMDNlaWRdLVxcdTAwM2VvcHMtXFx1MDAzZWRlbF9kZXYoZGlicyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMzU9c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0MS1cXHRcXHRyZXR1cm4gZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQyOlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQzLVxcdGRpYnMtXFx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMjI9dm9pZCBkaWJzX2Rldl9kZWwoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI5OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgKytpKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzEtXFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tpXSA9IE5VTEw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMjpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMy1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4Mz1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMS1cXHRkbWItXFx1MDAzZWRtYl90b2sgPSBjbWQucmVzcG9uc2UuZG1iX3RvaztcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTI6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTMtXFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBjbGllbnQtXFx1MDAzZWlkO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNDpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE1LW91dDpcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMxOT1zdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzMxLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzMjpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMzMy1cXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYi1cXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzNDpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM1LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDk5PXN0YXRpYyBpcnFyZXR1cm5fdCBpc21faGFuZGxlX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTEyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUxMzpcXHRzcGluX2xvY2soXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cXHRpc20tXFx1MDAzZXNiYS1cXHUwMDNlcyA9IDA7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MzgtXFx0fVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzOTpcXHRzcGluX3VubG9jayhcXHUwMDI2ZGlicy1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTQwLVxcdHJldHVybiBJUlFfSEFORExFRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDcuMTE2Mzk1NzkyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MzMwNDk3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb2NraW5nIENvbnRleHQgaW4gdGhlIERhdGEgVHJhbnNmZXIgTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZGlic2Agc3RydWN0dXJlIGFuZCBob3cgaXQgaGFuZGxlcyBpbnRlcnJ1cHRzLCBzcGVjaWZpY2FsbHkgZGF0YSB0cmFuc2ZlcnMuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgZGlicy1cdTAwM2Vsb2NrYCBpcyBiZWluZyBncmFiYmVkIHdpdGhpbiB0aGUgaGFyZGlycSBvciBzb2Z0aXJxIGNvbnRleHQuIFRoZSBgc3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jaylgIGNhbGwgaW4gYGlzbV9oYW5kbGVfaXJxYCwgb3IgcG90ZW50aWFsbHkgZWxzZXdoZXJlIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAsIG1ha2VzIHRoaXMgcHJldHR5IGNsZWFyLiBUaGlzIGltcGxpZXMgdGhhdCB3ZSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCBhYm91dCBwb3RlbnRpYWwgY29udGVudGlvbiBhbmQgcHJpb3JpdHkgaXNzdWVzLlxuXG5Ob3csIEkgc2VlIHRoYXQgdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24gY2FsbHMgYGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzaylgICp1bmRlciogdGhlIHByb3RlY3Rpb24gb2YgYGRpYnMtXHUwMDNlbG9ja2AuIFRoaXMgc2VlbXMgbGlrZSB0aGUgY3JpdGljYWwgcGF0aCBmb3IgdGhlIGRhdGEgbW92ZW1lbnQgdHJpZ2dlcmVkIGJ5IGludGVycnVwdHMuIEl0IG1lYW5zIHRoYXQgYW55IG9wZXJhdGlvbiB3aXRoaW4gdGhpcyBgaGFuZGxlX2lycWAgY2FsbCBpcyBpbmhlcmVudGx5IHNlcmlhbGl6ZWQgYnkgdGhhdCBzcGlubG9jay5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaGFuZGxlX2lycWAgZnVuY3Rpb24uIExvb2tzIGxpa2UgaW4gdGhpcyBTTUMgY29udGV4dCwgdGhlIGBoYW5kbGVfaXJxYCBpcyByZXNvbHZlZCB0byBgc21jZF9oYW5kbGVfaXJxYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24gbm93LiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyB0aGVyZSB3aXRoIHJlZ2FyZCB0byB0aGUgbG9ja3MgYW5kIGRhdGEgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowOS42NDk0NTA0NzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjk5NzE2NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9oYW5kbGVfaXJxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2lzbS5jPTMyPXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcXG5uZXQvc21jL3NtY19pc20uYy0zMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjM0OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG5uZXQvc21jL3NtY19pc20uYy0zNS1cXHRcXHRcXHQgICAgdTE2IGRtYmVtYXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTM3PXN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHNtY19jbGllbnRfb3BzID0ge1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDAtXFx0LmhhbmRsZV9ldmVudCA9IHNtY2RfaGFuZGxlX2V2ZW50LFxcbm5ldC9zbWMvc21jX2lzbS5jOjQxOlxcdC5oYW5kbGVfaXJxID0gc21jZF9oYW5kbGVfaXJxLFxcbm5ldC9zbWMvc21jX2lzbS5jLTQyLX07XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz01Njk9c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTkzLSAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk1LVxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjExLjc3OTQzMTYyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzgyMjYxMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBgc21jZF9oYW5kbGVfaXJxYCoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCBob3cgd2UncmUgaGFuZGxpbmcgaW50ZXJydXB0cyB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc21jZF9oYW5kbGVfaXJxYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgbGlrZWx5IHJlc2lkZXMgaW4gYG5ldC9zbWMvc21jX2lzbS5jYCwgc28gSSdsbCBwdWxsIHRoYXQgdXAgaW1tZWRpYXRlbHkuIE15IG1lbnRhbCBtb2RlbCBpcyBhbHJlYWR5IHByaW1lZCB3aXRoIHRoZSBrbm93bGVkZ2UgdGhhdCBTTUMsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMsIG5lY2Vzc2l0YXRlcyBwcmV0dHkgdGlnaHQgc3luY2hyb25pemF0aW9uLCBlc3BlY2lhbGx5IGF0IHRoZSBoYXJkd2FyZSBpbnRlcnJ1cHQgbGV2ZWwuIFNvLCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyByZWxhdGVkIHRvIHNoYXJlZCBtZW1vcnkgYWNjZXNzLCBwb3RlbnRpYWxseSBzcGlubG9ja3Mgb3Igb3RoZXIgY29uY3VycmVuY3kgbWVjaGFuaXNtcywgYW5kIGludGVycnVwdCBkaXNhYmxpbmcvZW5hYmxpbmcgYXJvdW5kIGNyaXRpY2FsIHNlY3Rpb25zLiBJJ2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgdGhlIGZvbGxvd2luZzogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBpZGVudGlmeSB0aGUgc3BlY2lmaWMgU01DIGNvbm5lY3Rpb24gdGhlIGludGVycnVwdCBpcyByZWxhdGVkIHRvPyBXaGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBwcm9jZXNzIHRoZSBpbnRlcnJ1cHQg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBjb21wbGV0aW9ucywgc2VuZCBjb21wbGV0aW9ucywgZXJyb3JzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ3J1Y2lhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYWN0dWFsIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgaG93IGRhdGEgaXMgY29waWVkIGZyb20gc2hhcmVkIG1lbW9yeSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLiBBbmQgZmluYWxseSwgSSdsbCBiZSBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGlzIGludGVycnVwdCBoYW5kbGVyLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzMyMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNC4xNjE2OTc1OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NtYy9zbWNfaXNtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTg1OlxcdH1cXG4gNTg2OlxcdFxcbiA1ODc6XFx0LyogU01DRCBEZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuIENhbGxlZCBmcm9tIElTTSBkZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuXFxuIDU4ODpcXHQgKiBQYXJhbWV0ZXJzIGFyZSB0aGUgaXNtIGRldmljZSBwb2ludGVyLCBETUIgbnVtYmVyLCBhbmQgdGhlIERNQkUgYml0bWFzay5cXG4gNTg5OlxcdCAqIEZpbmQgdGhlIGNvbm5lY3Rpb24gYW5kIHNjaGVkdWxlIHRoZSB0YXNrbGV0IGZvciB0aGlzIGNvbm5lY3Rpb24uXFxuIDU5MDpcXHQgKlxcbiA1OTE6XFx0ICogQ29udGV4dDpcXG4gNTkyOlxcdCAqIC0gRnVuY3Rpb24gY2FsbGVkIGluIElSUSBjb250ZXh0IGZyb20gSVNNIGRldmljZSBkcml2ZXIgSVJRIGhhbmRsZXIuXFxuIDU5MzpcXHQgKi9cXG4gNTk0OlxcdHN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG4gNTk1OlxcdFxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxuIDU5NjpcXHR7XFxuIDU5NzpcXHRcXHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFxcdTAwMjZzbWNfZGlic19jbGllbnQpO1xcbiA1OTg6XFx0XFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gTlVMTDtcXG4gNTk5OlxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIDYwMDpcXHRcXG4gNjAxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzbWNkLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDYwMjpcXHRcXHRjb25uID0gc21jZC1cXHUwMDNlY29ubltkbWJub107XFxuIDYwMzpcXHRcXHRpZiAoY29ubiBcXHUwMDI2XFx1MDAyNiAhY29ubi1cXHUwMDNla2lsbGVkKVxcbiA2MDQ6XFx0XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2Y29ubi1cXHUwMDNlcnhfdHNrbGV0KTtcXG4gNjA1OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnNtY2QtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gNjA2OlxcdH1cXG4gNjA3OlxcdFxcbiA2MDg6XFx0aW50IHNtY19pc21fc2lnbmFsX3NodXRkb3duKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbiA2MDk6XFx0e1xcbiA2MTA6XFx0XFx0aW50IHJjID0gMDtcXG4gNjExOlxcdFxcdHVuaW9uIHNtY2Rfc3dfZXZlbnRfaW5mbyBldl9pbmZvO1xcbiA2MTI6XFx0XFx0dXVpZF90IGlzbV9yZ2lkO1xcbiA2MTM6XFx0XFxuIDYxNDpcXHRcXHRpZiAobGdyLVxcdTAwM2VwZWVyX3NodXRkb3duKVxcbiA2MTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYxNjpcXHRcXHRpZiAoIWxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzaWduYWxfZXZlbnQpXFxuIDYxNzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNjE4OlxcdFxcbiA2MTk6XFx0XFx0bWVtY3B5KGV2X2luZm8udWlkLCBsZ3ItXFx1MDAzZWlkLCBTTUNfTEdSX0lEX1NJWkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNC4xNjE4MzAyOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTU2MDI3MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgZGlic19sb29wYmFjay5jYCBjb2RlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgYSBwb3RlbnRpYWwgaXNzdWUgcmVsYXRlZCB0byBsb2NraW5nIGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIGNhbGxlZCBkdXJpbmcgZGF0YSB0cmFuc21pc3Npb24g4oCTIHNwZWNpZmljYWxseSB0aHJvdWdoIHRoZSBgc21jX3R4X3NlbmRtc2dgIGZsb3cuIEl0IHVsdGltYXRlbHkgYm9pbHMgZG93biB0byBgb3BzLVx1MDAzZW1vdmVfZGF0YWAsIHdoaWNoIHJlc29sdmVzIHRvIGBkaWJzX2xvX21vdmVfZGF0YWAuIFRoZSBjb2RlIHVzZXMgYSBwbGFpbiBgc3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jaylgLCBhbmQgdGhhdCdzIHdoZXJlIG15IGV5ZWJyb3dzIGFyZSByYWlzaW5nLlxuXG5UaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgYGRpYnMtXHUwMDNlbG9ja2AgaXMgYWxzbyBhY3F1aXJlZCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgaW4gc29tZSBvdGhlciBwbGFjZXMsIGluY2x1ZGluZyBwb3RlbnRpYWxseSB3aXRoaW4gaW50ZXJydXB0IGhhbmRsZXJzIHRoZW1zZWx2ZXMuIElmIGFuIGludGVycnVwdCB3ZXJlIHRvIG9jY3VyIHdoaWxlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgaG9sZGluZyB0aGF0IGxvY2ssIHdl4oCZcmUgc2V0dGluZyBvdXJzZWx2ZXMgdXAgZm9yIGEgbmFzdHkgbG9ja2RlcCB3YXJuaW5nLCBvciB3b3JzZSwgYSBjb21wbGV0ZSBkZWFkbG9jay4gQ2xhc3NpYy5cblxuVGhlIHN1Z2dlc3RlZCBwYXRjaCB0byB1c2UgYHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpYCBpcyB0aGUgcmlnaHQgc29sdXRpb24uIFRoYXQncyB0aGUgY29ycmVjdCBsZXZlbCBvZiBwcm90ZWN0aW9uLiBXZSBuZWVkIHRvIHNhdmUgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCB0aGVuIHJlc3RvcmUgaXQuIEl0J3MgdGhlIG1vc3QgY29tbW9uIGFuZCBjb3JyZWN0IGFwcHJvYWNoIGluIHRoZXNlIHNpdHVhdGlvbnMuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHJlYWNoYWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdGFyZ2V0IGlzIGFtZDY0LiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgRElCUyBhbmQgRElCU19MTyBhcmUgZXZlbiBjb25maWd1cmVkIGFuZCBhdmFpbGFibGUgb24gdGhpcyBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AsIGBuZXQvc21jL0tjb25maWdgLCBhbmQgYW55dGhpbmcgaW4gYGFyY2gveDg2L0tjb25maWdgIHRoYXQgbWlnaHQgY29udHJvbCB0aGVzZSBmZWF0dXJlcy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50IHRvIHRoaXMgdGFyZ2V0LiBJJ2xsIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHdoaWNoIG1pZ2h0IG1ha2UgdGhpcyBhIG5vbi1pc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNy43MTc4NjAzNjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIERJQlNcXG4gIDE3OlxcdFxcdGRlZmF1bHQgblxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXFxuICAyMDpcXHRcXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG4gIDIxOlxcdFxcdCAgb2NjdXJzIHdpdGhpbiB0aGUgc2FtZSBPUy4gVGhpcyBoZWxwcyBpbiBjb252ZW5pZW50IHRlc3Rpbmcgb2ZcXG4gIDIyOlxcdFxcdCAgZGlicyBjbGllbnRzLCBzaW5jZSBkaWJzIGxvb3BiYWNrIGlzIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZSBvclxcbiAgMjM6XFx0XFx0ICBoYXJkd2FyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MTcuNzE3OTI0ODAzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjU2MzczNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBSZXZpZXcgb2YgRElCU19MTyBmb3IgVGVzdGluZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgd2hhdCdzIHRoaXMgYERJQlNfTE9gIHRoaW5nPyBBaCwgdGhlIGhlbHAgdGV4dCBjbGFyaWZpZXM6IGl0IGNyZWF0ZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBESUJTIGRldmljZSwgYGxvYC4gU28sIGEgbG9vcGJhY2sgZm9yIERJQlMgZGF0YSB0cmFuc2ZlciB3aXRoaW4gYSBzaW5nbGUgT1MuIFRoZSBrZXkgdGFrZWF3YXkgaXMgaW5kZXBlbmRlbmNlIGZyb20gYXJjaGl0ZWN0dXJlIG9yIGhhcmR3YXJlOyBwZXJmZWN0IGZvciBjb252ZW5pZW50IHRlc3Rpbmcgb2YgRElCUyBjbGllbnRzLiBUaGF0J3MgYWN0dWFsbHkgcHJldHR5IGNsZXZlci4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSB3YW50IGZvciBhIHJvYnVzdCB0ZXN0aW5nIGVudmlyb25tZW50LlxuXG5Ob3csIHdoZXJlJ3MgdGhlIG1lYXQgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbj8gTGV0J3MgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgdmlydHVhbCBkZXZpY2UgYXJlIGRlZmluZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkndmUgaGFuZGxlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLCBhbmQgbWF5YmUgYW55IHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLiBJIHdvbmRlciBpZiBpdCBpbmNsdWRlcyBhbnkgaG9va3MgZm9yIGNhcHR1cmluZyBhbmQgYW5hbHl6aW5nIHRoZSBkYXRhIGZsb3cuIEdvdHRhIGdldCBhIGdvb2QgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiB0byBzZWUgaG93IHdlbGwgaXQncyBkZXNpZ25lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNzksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjE5Ljc0MzU2NTI1MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgaWYgdW5zdXJlLCBzYXkgWS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gU01DIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgQlBGX1NZU0NBTExcXG4gIDI2OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcXG4gIDI5OlxcdFxcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXFxuICAzMDpcXHRcXHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxcbiAgMzE6XFx0XFx0ICB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCBmaWx0cmluZyB0aGUgaGFuZHNoYWtlIHByb2Nlc3MgdmlhIGVCUEYgcHJvZ3JhbXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjE5Ljc0MzY1OTA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjY4NzI1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIGBDT05GSUdfU01DYCBkZXBlbmRzIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlbiwgYENPTkZJR19ESUJTX0xPYCByZWxpZXMgb24gYERJQlNgIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBESUJTYCBkZXBlbmRlbmN5IG1vcmUuIEl0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aWVkIHRvIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0J3MgcHJldHR5IGdlbmVyaWMuIFNpbmNlIGl0J3MgbGlrZWx5IGEgZHJpdmVyLCBJJ2xsIGNoZWNrIGBkcml2ZXJzL0tjb25maWdgIHRvIHNlZSB3aGVyZSBgZHJpdmVycy9kaWJzL0tjb25maWdgIGlzIGluY2x1ZGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBsYXJnZXIgY29udGV4dCBmb3IgYERJQlNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjEuNjEwNTM0ODAxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NzcwMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2ODEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XFx0XFx0XFx0XFx0Kz0gcmVzY3RybC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcXHRcXHQrPSBkaWJzL1xcbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVxcdFxcdCs9IHMzOTAvXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZz0yPWNvbmZpZyBESUJTXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMC1cXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTE6XFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTI6XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZz0xND1jb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE1OlxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNi1cXHRkZXBlbmRzIG9uIERJQlNcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE4LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMS1cXHQgIG9jY3VycyB3aXRoaW4gdGhlIHNhbWUgT1MuIFRoaXMgaGVscHMgaW4gY29udmVuaWVudCB0ZXN0aW5nIG9mXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MjI6XFx0ICBkaWJzIGNsaWVudHMsIHNpbmNlIGRpYnMgbG9vcGJhY2sgaXMgaW5kZXBlbmRlbnQgb2YgYXJjaGl0ZWN0dXJlIG9yXFxuZHJpdmVycy9kaWJzL0tjb25maWctMjMtXFx0ICBoYXJkd2FyZS5cXG4tLVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSArPSBkaWJzX21haW4ub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSArPSBkaWJzLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICs9IGRpYnNfbG9vcGJhY2sub1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yLS8qXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozOiAqICBGdW5jdGlvbnMgZm9yIGRpYnMgbG9vcGJhY2svbG9vcGJhY2staXNtIGRldmljZS5cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcXFwibG9cXFwiO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2xvX2RldiAqbG9fZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ6c3RhdGljIGludCBkaWJzX2xvX3F1ZXJ5X3JnaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cXHRcXHRcXHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNy1cXHQvKiByZ2lkIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBsZ2lkICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozODpcXHRpZiAoIXV1aWRfZXF1YWwocmdpZCwgXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCkpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zOS1cXHRcXHRyZXR1cm4gLUVORVRVTlJFQUNIO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5OlxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01My1cXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Ni1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU3OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU4LVxcdHNiYV9pZHggPSBkbWItXFx1MDAzZWlkeDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDk6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cXHUwMDNlaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjI6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM5OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVxcdGlmIChsYXN0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTk6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzY6XFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc4OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3OS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA1LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNjpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDc6XFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA4LVxcdGJvb2wgbGFzdDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMDpcXHRsZGV2ID0gZGlicy1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTEtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQwOlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDY6XFx0bGRldiA9IGRpYnMtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQ3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzE6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MjpcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjczLVxcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3NDpcXHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcXHUwMDI2XFx1MDAyNiBkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc1OlxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODE6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODI6XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NTpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODY6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTEtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5MzpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9pbml0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwNi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDgte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzA5OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMxMDpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE3OlxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE4OlxcdGlmICghZGlicykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE5LVxcdFxcdGtmcmVlKGxkZXYpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjM6XFx0bGRldi1cXHUwMDNlZGlicyA9IGRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjQ6XFx0ZGlicy1cXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1OlxcdGRpYnNfbG9fZGV2X2luaXQobGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjY6XFx0dXVpZF9nZW4oXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XFx0ZGlicy1cXHUwMDNlb3BzID0gXFx1MDAyNmRpYnNfbG9fb3BzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI5OlxcdGRpYnMtXFx1MDAzZWRldi5wYXJlbnQgPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlxcdGRldl9zZXRfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBkaWJzX2xvX2Rldl9uYW1lKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDA6XFx0cHV0X2RldmljZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM0MS1cXHRrZnJlZShsZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ1LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ2OnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X3JlbW92ZSh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlxcdGRpYnNfZGV2X2RlbChsb19kZXYtXFx1MDAzZWRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlxcdGRpYnNfbG9fZGV2X2V4aXQobG9fZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1MzpcXHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1NDpcXHRwdXRfZGV2aWNlKFxcdTAwMjZsb19kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNTUtXFx0a2ZyZWUobG9fZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzU5OmludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2MC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XFx0cmV0dXJuIGRpYnNfbG9fZGV2X3Byb2JlKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjItfVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY0OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjUte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2OlxcdGRpYnNfbG9fZGV2X3JlbW92ZSgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY3LX1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMi0vKlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzogKiAgZGlicyBsb29wYmFjayAoYWthIGxvb3BiYWNrLWlzbSkgZGV2aWNlIHN0cnVjdHVyZSBkZWZpbml0aW9ucy5cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZGlicy5oXFx1MDAzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2hhc2h0YWJsZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVxcdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzU6c3RydWN0IGRpYnNfbG9fZGV2IHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM2OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM3LVxcdGF0b21pY190IGRtYl9jbnQ7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDQ6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ1OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDYtI2Vsc2VcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ3OnN0YXRpYyBpbmxpbmUgaW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDgte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC01MS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjUyOnN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUzLXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04LSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5OiNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImRpYnM6IFxcXCIgZm10XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE3OiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xhc3MgZGlic19jbGFzcyA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjM6XFx0Lm5hbWVcXHRcXHQ9IFxcXCJkaWJzXFxcIixcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQtfTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNi0vKiB1c2UgYW4gYXJyYXkgcmF0aGVyIGEgbGlzdCBmb3IgZmFzdCBtYXBwaW5nOiAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnRzW01BWF9ESUJTX0NMSUVOVFNdO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yOC1zdGF0aWMgdTggbWF4X2NsaWVudDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9Mjk9c3RhdGljIERFRklORV9NVVRFWChjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozMDpzdHJ1Y3QgZGlic19kZXZfbGlzdCB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMxLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzI6XFx0c3RydWN0IG11dGV4IG11dGV4OyAvKiBwcm90ZWN0cyBkaWJzIGRldmljZSBsaXN0ICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMzLX07XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNTpzdGF0aWMgc3RydWN0IGRpYnNfZGV2X2xpc3QgZGlic19kZXZfbGlzdCA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzY6XFx0Lmxpc3QgPSBMSVNUX0hFQURfSU5JVChkaWJzX2Rldl9saXN0Lmxpc3QpLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNzpcXHQubXV0ZXggPSBfX01VVEVYX0lOSVRJQUxJWkVSKGRpYnNfZGV2X2xpc3QubXV0ZXgpLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOC19O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDA6c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDIte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NjpcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudC1cXHUwMDNlaWRdID0gY2xpZW50O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MjpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVxcdGludCBpLCByYyA9IC1FTk9TUEM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjcxOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MjpcXHRcXHRcXHRkaWJzLVxcdTAwM2Vwcml2W2ldID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzM6XFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VvcHMtXFx1MDAzZWFkZF9kZXYoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc0OlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnQsIGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cXHRcXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Nzc6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3JlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTM6XFx0XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk0LVxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbWF4X2RtYnM7ICsraSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcXHRcXHRcXHRpZiAoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltpXSA9PSBjbGllbnQtXFx1MDAzZWlkKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk2LVxcdFxcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiBhdHRlbXB0IHRvIHVucmVnaXN0ZXIgJyVzJyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMi1cXHRcXHQvKiBTdG9wIGZvcndhcmRpbmcgSVJRcyBhbmQgZXZlbnRzICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwMzpcXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudC1cXHUwMDNlaWRdID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA0OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA1OlxcdFxcdGNsaWVudHNbY2xpZW50LVxcdTAwM2VpZF0tXFx1MDAzZW9wcy1cXHUwMDNlZGVsX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA2OlxcdFxcdGRpYnMtXFx1MDAzZXByaXZbY2xpZW50LVxcdTAwM2VpZF0gPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDctXFx0fVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTE1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNi1cXHRyZXR1cm4gcmM7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjA6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIxLVxcdHJldHVybiByYztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIyLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIzOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfdW5yZWdpc3Rlcl9jbGllbnQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyNTpzdGF0aWMgdm9pZCBkaWJzX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTI2LXtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XFx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XFx0a2ZyZWUoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2Fycik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzMjpcXHRrZnJlZShkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMzLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzU6c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzOTpcXHRkaWJzID0ga3phbGxvY19vYmooKmRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDA6XFx0aWYgKCFkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDE6XFx0XFx0cmV0dXJuIGRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MjpcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGlicy1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MzpcXHRkaWJzLVxcdTAwM2VkZXYucmVsZWFzZSA9IGRpYnNfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NDpcXHRkaWJzLVxcdTAwM2VkZXYuY2xhc3MgPSBcXHUwMDI2ZGlic19jbGFzcztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ1OlxcdGRldmljZV9pbml0aWFsaXplKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDYtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NzpcXHRyZXR1cm4gZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNTE9c3RhdGljIHNzaXplX3QgZ2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTQ6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NjpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1ODpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlcFViXFxcXG5cXFwiLCBcXHUwMDI2ZGlicy1cXHUwMDNlZ2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTU5LX1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNjI9c3RhdGljIHNzaXplX3QgZmFicmljX2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNjQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNjU6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNjYtXFx0dTE2IGZhYnJpY19pZDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNjg6XFx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY5OlxcdGZhYnJpY19pZCA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE3Mz1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmFicmljX2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRpYnNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3Ni1cXHRcXHUwMDI2ZGV2X2F0dHJfZ2lkLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZGlic19kZXZfYXR0cl9ncm91cCA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgyOlxcdC5hdHRycyA9IGRpYnNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODMtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODU6aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg5LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTA6XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MTpcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyID0ga3phbGxvYyhtYXhfZG1icywgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MjpcXHRpZiAoIWRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0OlxcdG1lbXNldChkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyLCBOT19ESUJTX0NMSUVOVCwgbWF4X2RtYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5NjpcXHRyZXQgPSBkZXZpY2VfYWRkKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcXHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNmRpYnMtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcXHRcXHRkZXZfZXJyKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYsIFxcXCJzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMzpcXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDQtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA1LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjA2OlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDctXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDktXFx0XFx0aWYgKGNsaWVudHNbaV0pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjEwOlxcdFxcdFxcdGNsaWVudHNbaV0tXFx1MDAzZW9wcy1cXHUwMDNlYWRkX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTU6XFx0bGlzdF9hZGQoXFx1MDAyNmRpYnMtXFx1MDAzZWxpc3QsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTY6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMDpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hZGQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjc6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRpYnNfZGV2X2F0dHJfZ3JvdXApO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyOTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFM7ICsraSlcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMxOlxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbaV0gPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzI6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzNDpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM1LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM3LVxcdFxcdGlmIChjbGllbnRzW2ldKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzg6XFx0XFx0XFx0Y2xpZW50c1tpXS1cXHUwMDNlb3BzLVxcdTAwM2VkZWxfZGV2KGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzktXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDE6XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZGlicy1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0MjpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0NDpcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDY6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19kZXZfZGVsKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTI6XFx0cmMgPSBjbGFzc19yZWdpc3RlcihcXHUwMDI2ZGlic19jbGFzcyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU1LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XFx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2NTpcXHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNmRpYnNfY2xhc3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaD00MjA9c3RydWN0IGNhY2hlIHtcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTQzNi1cXHQvKlxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjQzNzpcXHQgKiBXaGVuIGFsbG9jYXRpbmcgbmV3IGJ1Y2tldHMsIHByaW9fd3JpdGUoKSBnZXRzIGZpcnN0IGRpYnMgLSBzaW5jZSB3ZVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTQzOC1cXHQgKiBtYXkgbm90IGJlIGFsbG9jYXRlIGF0IGFsbCB3aXRob3V0IHdyaXRpbmcgcHJpb3JpdGllcyBhbmQgZ2Vucy5cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9kaWJzLmhcXHUwMDNlXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC05LSNpbmNsdWRlIFxcdTAwM2Nhc20vcGNpX2luc24uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjI3PXN0cnVjdCBpc21fZGV2IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyOC1cXHRzcGlubG9ja190IGNtZF9sb2NrOyAvKiBzZXJpYWxpemVzIGNtZHMgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMzAtXFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0xNzc9c3RhdGljIHZvaWQgaXNtX2ZyZWVfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xODUtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTg2OnN0YXRpYyBpbnQgaXNtX3JlYWRfbG9jYWxfZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjIuNjc4MzE0NDY0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MzczODMxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBhIERJQlMvU01DIExvb3BiYWNrIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnNgLCBzcGVjaWZpY2FsbHkgdGhlIGxvb3BiYWNrIGNvbXBvbmVudCAoYGRpYnNfbG9vcGJhY2suY2ApLiBUaGlzIGlzIGEgdmlydHVhbCBzdWJzeXN0ZW0sIGEgc29mdHdhcmUgZW11bGF0aW9uIG9mIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgdXNlZCBmb3IgbG9vcGJhY2sgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgZW5hYmxlZCBieSBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gLiBDcnVjaWFsbHksIGBDT05GSUdfU01DYCB1dGlsaXplcyBESUJTLCBzcGVjaWZpY2FsbHkgZm9yIGludHJhLU9TIGFuZCBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgU01DLUQgb3IgSVNNLlxuXG5XZSBrbm93IGBkaWJzX2xvb3BiYWNrLmluaXRgIGNyZWF0ZXMgdGhpcyBlbXVsYXRlZCBsb29wYmFjayBkZXZpY2UsIG5hbWVkIFwibG9cIi4gTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogV2hlbiBTTUMgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkIG92ZXIgdGhpcyBsb29wYmFjaywgb3Igd2UncmUgc2VuZGluZyBkYXRhIHZpYSBTTUMtRCB1c2luZyBsb29wYmFjaywgdGhlIGZ1bmN0aW9uIGBkaWJzX2xvX21vdmVfZGF0YWAgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0IGlzIG91ciB0YXJnZXQuIFdlIGNhbiByZWFjaCB0aGlzIG9uIGFtZDY0IGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgU01DIHNvY2tldHMgKEFGX1NNQykgYW5kIHdoZW4gYENPTkZJR19ESUJTX0xPYCBpcyBhbHNvIGVuYWJsZWQuXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSXMgaXQgcmVhY2hhYmxlPyBBYnNvbHV0ZWx5LiBXZSd2ZSBnb3QgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBkZXZpY2UgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgU01DLCBzcGVjaWZpY2FsbHkgb24gYW1kNjQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIElzIGl0IHdvcnRoIGZ1enppbmc/IFllcywgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGNvZGUgdGhhdCAqbW9kaWZpZXMgbG9ja2luZyBtZWNoYW5pc21zKjogc3BlY2lmaWNhbGx5IGNoYW5naW5nIGZyb20gYHNwaW5fbG9ja2AgdG8gYHNwaW5fbG9ja19pcnFzYXZlYCAqd2l0aGluKiBgZGlic19sb19tb3ZlX2RhdGFgLCBhbmQgaXQncyByZWFjaGFibGUgY29kZS4gVGhlIGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgc2hhcmVkIGJ1ZmZlciB1c2FnZSBhbmQgbG9ja2luZyBpcyBzb21ldGhpbmcgdGhhdCdzIGFsd2F5cyBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTGV0J3MgbmFpbCBkb3duIG91ciBgRm9jdXNTeW1ib2xzYC4gT2J2aW91c2x5LCBgZGlic19sb19tb3ZlX2RhdGFgIGlzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIHRoZSBsb2NrIG1vZGlmaWNhdGlvbi4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBvdGhlciwgbGVzcyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2A6IGBkaWJzX2xvX3JlZ2lzdGVyX2RtYmAsIGBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iYCwgYGRpYnNfbG9fYXR0YWNoX2RtYmAsIGBkaWJzX2xvX2RldGFjaF9kbWJgLCBhbmQgcG90ZW50aWFsbHkgYHNtY2RfdHhfaXNtX3dyaXRlYC4gSSB0aGluayB0aGUgYmVzdCBhcHByb2FjaCBpcyB0byBzdGFydCB3aXRoIGEgbGFzZXIgZm9jdXMgb24gYGRpYnNfbG9fbW92ZV9kYXRhYCBhbmQgZXhwYW5kIGFzIG5lZWRlZC5cblxuRmluYWxseSwgdGhlIGBFbmFibGVDb25maWdzYC4gV2UgbmVlZCBgRElCU2AsIGBESUJTX0xPYCwgYW5kIGJlY2F1c2UgYFNNQ2AgdXNlcyBESUJTLCB3ZSBzaG91bGQgaW5jbHVkZSBgU01DYC4gSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgZHJpdmVycy9LY29uZmlnYCB0byBjb25maXJtIHRoZSBpbmNsdWRlIG9mIHRoZSBgZGlicy9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczOTcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjcuMjE1NzAwMTQxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTIyNjI4MTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTkwPXNvdXJjZSBcXFwibmV0L3NtYy9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnOjkxOnNvdXJjZSBcXFwiZHJpdmVycy9kaWJzL0tjb25maWdcXFwiXFxubmV0L0tjb25maWctOTItc291cmNlIFxcXCJuZXQveGRwL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjI5LjMzODMzMjg0OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzM3NDM0NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBESUJTIExvb3BiYWNrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyB3aGF0IEknbSBzZWVpbmcuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgbmV0L0tjb25maWdgIGFuZCBpdCBzb3VyY2VzIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuIFRoYXQgdGVsbHMgbWUgdGhlIERJQlMgKERlZGljYXRlZCBJbnRlcnJ1cHQgQmxvY2sgU3lzdGVtKSBsb29wYmFjayBkZXZpY2UgZHJpdmVyIGlzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gV2UndmUgZ290IGBDT05GSUdfRElCU2AgYW5kIGBDT05GSUdfRElCU19MT2AsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGVuIGBDT05GSUdfU01DYCBmb3IgdGhvc2UgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciBzb2NrZXRzLiBHb29kLiBOb3csIGxldCdzIG5haWwgZG93biB0aGUgc3BlY2lmaWNzLlxuXG5SaWdodCwgdGhlIG1ldGFkYXRhIGNvbmZpcm1zIHdoYXQgSSBzdXNwZWN0ZWQuIGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBvZnRlbiBpbmRpY2F0ZXMgYSBoaWdoZXItcmlzayBjb21wb25lbnQsIG9uZSB0aGF0IGlzIGludGVyZXN0aW5nIHRvIGZ1enogdGVzdC4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IGNvbmZpcm1zIHRoYXQgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgU01DYCBhcmUgZW5hYmxlZCwgc28gd2UndmUgZ290IHRoZSBmdWxsIHNjb3BlIGZvciBhbmFseXNpcy4gVGhlIGltcG9ydGFudCBiaXQsIHRoZSBgRm9jdXNTeW1ib2xzYCwgaGlnaGxpZ2h0cyBgZGlic19sb19tb3ZlX2RhdGFgLiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2UgaXMgaGFwcGVuaW5nLiBUaGUgYFJlYXNvbmluZ2AgcHJvdmlkZXMgdGhlIG1lYXQgb2YgaXQuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIHJlcGxhY2luZyBgc3Bpbl9sb2NrYCB3aXRoIGBzcGluX2xvY2tfaXJxc2F2ZWAgaW4gYGRpYnNfbG9fbW92ZV9kYXRhYCB3aXRoaW4gdGhlIERJQlMgbG9vcGJhY2sgZGV2aWNlIGRyaXZlciB0byBwcm9wZXJseSBkaXNhYmxlIGludGVycnVwdHMgd2hpbGUgYWNxdWlyaW5nIGBkaWJzLVx1MDAzZWxvY2tgLiBUaGlzIGlzIGEgY3JpdGljYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBpc24ndCBpdD8gVGhlIGV4cGxhbmF0aW9uIGFsc28gbm90ZXMgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFNNQyBzb2NrZXRzIG92ZXIgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgbG9vcGJhY2sgZGV2aWNlLCBzbyB0aGUgcG90ZW50aWFsIGltcGFjdCBpcyBtdWNoIG1vcmUgd2lkZXNwcmVhZCB0aGFuIGluaXRpYWxseSBzZWVuLiBJdCdzIG5vdCBhIGZyaW5nZSBjYXNlLlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCByZWNvcmQgbXkgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTQyLCJPdXRwdXRUb2tlbnMiOjEzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzozMy4wNzU3NzAyMDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ0MzA4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpYnNfbG9fbW92ZV9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUgaW4gZGlic19sb19tb3ZlX2RhdGEgdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gYWNxdWlyaW5nIGRpYnMtXFx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiLFxuICAgIFwiU01DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlic19sb19tb3ZlX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2sgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSBpbiBkaWJzX2xvX21vdmVfZGF0YSB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBhY3F1aXJpbmcgZGlicy1cXHUwMDNlbG9jayBmcm9tIGRpZmZlcmVudCBpbnRlcnJ1cHQgY29udGV4dHMuIFRoZSBESUJTIGxvb3BiYWNrIGRyaXZlciBwcm92aWRlcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGxvb3BiYWNrIG1lY2hhbmlzbSBmb3IgaW50cmEtT1MgU01DLUQgY29tbXVuaWNhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIG9uIGFtZDY0IHZpYSBBRl9TTUMgc29ja2V0cyB3aXRob3V0IHJlcXVpcmluZyBzcGVjaWFsaXplZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzMuMjEwMjA4NjE2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzYxOTU4ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzMuMjEwNjY2MjM2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODc2MTQ5NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXFx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG5AQCAtMjM4LDYgKzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTE2IHNfbWFzaztcbiBcdHU4IGNsaWVudF9pZDtcbiBcdHUzMiBzYmFfaWR4O1xuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiBcdGlmICghc2YpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0c3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG4rXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuK1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjMzLjIxMDY2NzIyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzE5MzAzOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRElCcyBMb29wYmFjayBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEknbGwgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UncmUgaW4gdGhlIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLlxuXG5SaWdodCBhd2F5LCBJIHNlZSB0aGUgY29yZSBjaGFuZ2U6IHRoZSBzcGlubG9jayBpcyBiZWluZyBtb2RpZmllZC4gV2UncmUgbW92aW5nIGZyb20gYSBzaW1wbGUgYHNwaW5fbG9ja2AgYW5kIGBzcGluX3VubG9ja2AgcGFpciB0byBgc3Bpbl9sb2NrX2lycXNhdmVgIGFuZCBgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZWAuIFRoaXMgc2lnbmFscyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGludGVycnVwdCBjb250ZXh0LiBXZSdyZSBub3cgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYW5kIGFmdGVyIGFjcXVpcmluZyB0aGUgbG9jaywgYW5kIHRoYXQgaW1wbGllcyB3ZSBhcmUgd29ycmllZCBhYm91dCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB3ZSBoYXZlIGEgbG9jayAoYGRpYnMtXHUwMDNlbG9ja2ApIHByb3RlY3RpbmcgYWNjZXNzIHRvIGBjbGllbnRfaWRgLCBgc19tYXNrYCwgYW5kIHRoZSBgZGlicy1cdTAwM2VzdWJzYCBhcnJheS4gVGhlIGNvZGUgY2hlY2tzIGZvciBhIHZhbGlkIGBjbGllbnRfaWRgLCBhbmQgaWYgb25lIGV4aXN0cyBjYWxscyBhIGZ1bmN0aW9uLCBgaGFuZGxlX2lycWAsIHByZXN1bWFibHkgb24gdGhlIHN1YnNjcmliZXIncyBvcGVyYXRpb24gc3RydWN0LiBUaGlzIGZ1bmN0aW9uIGBoYW5kbGVfaXJxYCBtdXN0IGJlIGV4ZWN1dGluZyB1bmRlciBhIGNyaXRpY2FsIHNlY3Rpb24sIGFuZCB0aGlzIHBhdGNoIGlzIG5vdyBtYWtpbmcgc3VyZSB0aGUgaW50ZXJydXB0IGNvbnRleHQgaXMgcHJlc2VydmVkLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbGwgbmVlZCB0byBleHBsb3JlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byBzZWUgd2hhdCBgZGlicy1cdTAwM2Vsb2NrYCBwcm90ZWN0cywgd2hhdCBgaGFuZGxlX2lycWAgYWN0dWFsbHkgKmRvZXMqLCBhbmQgd2hlcmUgYGRpYnNfbG9fbW92ZV9kYXRhYCBpcyBjYWxsZWQgZnJvbS4gSSdsbCBuZWVkIHRvIGNvbnN1bHQgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLiBUaGVyZWZvcmUsIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gZXhhbWluZSBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AgaW4gbW9yZSBkZXRhaWwuIEknbSBnb2luZyB0byBsb29rIGZvciBhIGJldHRlciB2aWV3IG9mIHRoZSBjb2RlIGFuZCBhbnkgb3RoZXIgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzYuOTI5OTc0NjQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdFxcdGlmICghZG1iX25vZGUpIHtcXG4gMjIxOlxcdFxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyMjI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDIyMzpcXHRcXHR9XFxuIDIyNDpcXHRcXHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250KTtcXG4gMjI1OlxcdFxcdGlmIChsYXN0KVxcbiAyMjY6XFx0XFx0XFx0aGFzaF9kZWwoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0KTtcXG4gMjI3OlxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRpZiAobGFzdClcXG4gMjMwOlxcdFxcdFxcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRyZXR1cm4gMDtcXG4gMjMzOlxcdH1cXG4gMjM0OlxcdFxcbiAyMzU6XFx0c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxcbiAyMzY6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbiAyMzc6XFx0XFx0XFx0XFx0ICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4gMjM4OlxcdHtcXG4gMjM5OlxcdFxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpybWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG4gMjQwOlxcdFxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG4gMjQxOlxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIDI0MjpcXHRcXHR1MTYgc19tYXNrO1xcbiAyNDM6XFx0XFx0dTggY2xpZW50X2lkO1xcbiAyNDQ6XFx0XFx0dTMyIHNiYV9pZHg7XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI0OTpcXHRcXHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXFx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl90b2spIHtcXG4gMjUwOlxcdFxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xcbiAyNTE6XFx0XFx0XFx0XFx0cm1iX25vZGUgPSB0bXBfbm9kZTtcXG4gMjUyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNTM6XFx0XFx0XFx0fVxcbiAyNTQ6XFx0XFx0fVxcbiAyNTU6XFx0XFx0aWYgKCFybWJfbm9kZSkge1xcbiAyNTY6XFx0XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG4gMjU3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNTg6XFx0XFx0fVxcbiAyNTk6XFx0XFx0aWYgKCh1NjQpb2Zmc2V0ICsgc2l6ZSBcXHUwMDNlIHJtYl9ub2RlLVxcdTAwM2VsZW4pIHtcXG4gMjYwOlxcdFxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI2MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjYyOlxcdFxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0bWVtY3B5KChjaGFyICopcm1iX25vZGUtXFx1MDAzZWNwdV9hZGRyICsgb2Zmc2V0LCBkYXRhLCBzaXplKTtcXG4gMjY1OlxcdFxcdHNiYV9pZHggPSBybWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG4gMjY2OlxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdFxcdGlmICghc2YpXFxuIDI2OTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjcwOlxcdFxcbiAyNzE6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjcyOlxcdFxcdGNsaWVudF9pZCA9IGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XFxuIDI3MzpcXHRcXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuIDI3NDpcXHRcXHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcXHUwMDI2XFx1MDAyNiBkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxcbiAyNzU6XFx0XFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdLVxcdTAwM2VvcHMtXFx1MDAzZWhhbmRsZV9pcnEoZGlicywgc2JhX2lkeCwgc19tYXNrKTtcXG4gMjc2OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjc3OlxcdFxcbiAyNzg6XFx0XFx0cmV0dXJuIDA7XFxuIDI3OTpcXHR9XFxuIDI4MDpcXHRcXG4gMjgxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbiAyODI6XFx0XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuIDI4MzpcXHRcXHQucXVlcnlfcmVtb3RlX2dpZCA9IGRpYnNfbG9fcXVlcnlfcmdpZCxcXG4gMjg0OlxcdFxcdC5tYXhfZG1icyA9IGRpYnNfbG9fbWF4X2RtYnMsXFxuIDI4NTpcXHRcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuIDI4NjpcXHRcXHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxcbiAyODc6XFx0XFx0Lm1vdmVfZGF0YSA9IGRpYnNfbG9fbW92ZV9kYXRhLFxcbiAyODg6XFx0XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuIDI4OTpcXHRcXHQuYXR0YWNoX2RtYiA9IGRpYnNfbG9fYXR0YWNoX2RtYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzYuOTMwMDY1Mzc3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNDIwNDg1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogQ29uY3VycmVuY3kgRml4LCBOb3QgVW5pbml0aWFsaXplZCBNZW1vcnkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgbG9jayB1cGdyYWRlOiBgc3Bpbl9sb2NrYCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGFuZCBgc3Bpbl91bmxvY2tgIHdpdGggYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBJdCdzIGhhcHBlbmluZyBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AsIHdpdGhpbiB0aGUgYGRpYnNfbG9fbW92ZV9kYXRhYCBmdW5jdGlvbi4gVGhlIHByaW1hcnkgZ29hbCBpcyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIGRlYWRsb2NrIHNjZW5hcmlvIHdoZW4gYGRpYnMtXHUwMDNlbG9ja2AgaXMgaGVsZCBpbiBhbiBpbnRlcnJ1cHQgb3Igc29mdGlycS9pcnEgY29udGV4dC4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBpc3N1ZS5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgS01TQU4gY2hlY2tsaXN0LiBEb2VzIHRoaXMgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSwgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXJzcGFjZSwgb3Igc2NyZXcgd2l0aCBib3VuZHMgY2hlY2tzPyBOb3BlLiBUaGlzIGlzIHB1cmVseSBhYm91dCAqaG93KiB0aGUgc3BpbmxvY2sgaXMgYWNxdWlyZWQsIG5hbWVseSBkaXNhYmxpbmcgaW50ZXJydXB0cyB3aGVuIGhvbGRpbmcgdGhlIGxvY2suIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGNhc2UgZm9yIExPQ0tERVAgYW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgc2FuaXR5IGNoZWNrcy5cblxuSSdtIGRvdWJsZS1jaGVja2luZyBteSB3b3JrIGhlcmUuIE5vIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBhc3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb25kaXRpb25hbCBsb2dpYyByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIHJlYWRzIGxhdGVyIG9uLCBhbmQgbm8gYm91bmRzIGNoZWNrcyBhcmUgYmVpbmcgbWVzc2VkIHdpdGguXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRoaXMgaXMgYSAqbG9ja2luZyogYnVnIGZpeCwgbm90IGFuICp1bmluaXRpYWxpemVkIG1lbW9yeSogYnVnIGZpeC5cblxuVG8gYmUgZXh0cmEgY2xlYXIgaW4gdGhlIHJlYXNvbmluZywgaXQncyBhIHNpbXBsZSBgc3Bpbl9sb2NrYCB0byBgc3Bpbl9sb2NrX2lycXNhdmVgIHJlcGxhY2VtZW50LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRlYWRsb2NrcyBpbiBpbnRlcnJ1cHQgY29udGV4dHMuIEl0IGRvZXNuJ3QgdG91Y2ggbWVtb3J5IGFsbG9jYXRpb24sIHN0cnVjdCBpbml0aWFsaXphdGlvbiwgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIG9yIGJ1ZmZlciBib3VuZGFyaWVzLiBUaGlzIGlzIGNvbmN1cnJlbmN5LCBub3QgS01TQU4ncyByZWFsbS4gTE9DS0RFUCBhbmQgc3RhbmRhcmQgY2hlY2tlcnMgYXJlIHRoZSB0b29scyB0byB1c2UgaGVyZS4gTm8gS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5lY2Vzc2FyeS4gQWxyaWdodCwgbGV0J3MgY2FsbCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMywiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzo0MS45NzIxMTg0MDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVxcdTAwM2Vsb2NrIGluIGRpYnNfbG9fbW92ZV9kYXRhKCkuIFRoaXMgaXMgcHVyZWx5IGEgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGRpYnMtXFx1MDAzZWxvY2sgaXMgYWNjZXNzZWQgZnJvbSBJUlEgY29udGV4dHMuIFRoZSBjaGFuZ2UgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgYWx0ZXIgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uLCBvciBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZS4gTG9ja2luZyBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2soKS9zcGluX3VubG9jaygpIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUoKS9zcGluX3VubG9ja19pcnFyZXN0b3JlKCkgb24gZGlicy1cXHUwMDNlbG9jayBpbiBkaWJzX2xvX21vdmVfZGF0YSgpLiBUaGlzIGlzIHB1cmVseSBhIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBkaWJzLVxcdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb7fdp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-05 18:18:29 +0000 UTC FinishedAt: 2026-09-05 19:03:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "9eab111e765729e93087ff86a2ec9b2ae42d0fa5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DIBS", "DIBS_LO", "SMC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "9eab111e765729e93087ff86a2ec9b2ae42d0fa5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DIBS", "DIBS_LO", "SMC" ], "series_id": "163829c9-8d41-41b8-8023-e31da2596acc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dibs_lo_move_data" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWJzX2xvX21vdmVfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBTZXAgNSAxOTowMjozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jIGIvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY1xuaW5kZXggNjQ5ZTRlMzc1YmUzMy4uNDRhMmU3NGMyZWZjYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbkBAIC0yMzgsNiAmIzQzOzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiBcdHUxNiBzX21hc2s7XG4gXHR1OCBjbGllbnRfaWQ7XG4gXHR1MzIgc2JhX2lkeDtcbkBAIC0yNjcsMTIgJiM0MzsyNjgsMTIgQEAgc3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuIFx0aWYgKCFzZilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuJiM0MztcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpYnNfbG9fbW92ZV9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBTZXAgNSAxOTowMjozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jCmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYwpAQCAtMjM4LDYgJiM0MzsyMzgsNyBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssCiB7CiAJc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlOwogCXN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MTYgc19tYXNrOwogCXU4IGNsaWVudF9pZDsKIAl1MzIgc2JhX2lkeDsKQEAgLTI2NywxMiAmIzQzOzI2OCwxMiBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssCiAJaWYgKCFzZikKIAkJcmV0dXJuIDA7CiAKLQlzcGluX2xvY2soJmFtcDtkaWJzLSZndDtsb2NrKTsKJiM0MzsJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkaWJzLSZndDtsb2NrLCBmbGFncyk7CiAJY2xpZW50X2lkID0gZGlicy0mZ3Q7ZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTsKIAlzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7CiAJaWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgJmFtcDsmYW1wOyBkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0pKQogCQlkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0tJmd0O29wcy0mZ3Q7aGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spOwotCXNwaW5fdW5sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jayk7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkaWJzLSZndDtsb2NrLCBmbGFncyk7CiAKIAlyZXR1cm4gMDsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExNAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGFuZCBSZWxldmFudCBLZXJuZWwgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgbW9kaWZpY2F0aW9ucyBtYWRlIHRvIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJiMzOTttIGFscmVhZHkgZm9ybXVsYXRpbmcgYSBtZW50YWwgbWFwIG9mIHdoZXJlIHRoaXMgZmFsbHMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBjb250ZXh0OiB3aGF0ICppcyogdGhlIGBkcml2ZXJzL2RpYnNgIHN1YnN5c3RlbT8gV2hhdCBhcmUgdGhlIGVuYWJsaW5nIEtjb25maWcgb3B0aW9ucz8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGludGVyYWN0IHdpdGggdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBwYXJ0aWN1bGFybHkgYGRpYnNfbG9fbW92ZV9kYXRhYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgY29kZSBpcyBleGVjdXRlZC4KClRvIGZhY2lsaXRhdGUgdGhpcywgSSYjMzk7bGwgbGV2ZXJhZ2UgbXkgdXN1YWwgdG9vbHMuIEkmIzM5O20gdGhpbmtpbmcgYGdyZXBwZXJgIGlzIHRoZSBmaXJzdCBsb2dpY2FsIGNob2ljZS4gSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgZGVwZW5kZW5jaWVzLCBjcm9zcy1yZWZlcmVuY2VzLCBhbmQgcG90ZW50aWFsIGltcGFjdHMuIEFsdGVybmF0aXZlbHksIGByZWFkLWZpbGVgIG1pZ2h0IGJlIGhhbmR5IGZvciBhIHF1aWNrIG92ZXJ2aWV3IGlmIEkmIzM5O20gbG9va2luZyBmb3Igc3BlY2lmaWNzLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgcHJhY3RpY2FsIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBmdW5jdGlvbmFsaXR5IGV2ZW4gYWNjZXNzaWJsZSBpbiBjb21tb24gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFRoYXQmIzM5O3MgZXNzZW50aWFsIHRvIHJlcGxpY2F0aW5nIGFuZCB0ZXN0aW5nIHRoaXMgaW4gYSByZWFsaXN0aWMgc2V0dGluZy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBzZXJpZXMgb2YgYGdyZXBwZXJgIHF1ZXJpZXMgdG8gcGlucG9pbnQgdGhlc2UgY3JpdGljYWwgZGV0YWlscywgc3RhcnRpbmcgd2l0aCB0aGUgZmlsZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlic19sb19tb3ZlX2RhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yMDQ9c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzNTpzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yODE9c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODc6XHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4OC1cdC5zdXBwb3J0X21tYXBwZWRfcmRtYiA9IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RJQlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy01LVx0aGVscFxuZHJpdmVycy9kaWJzL0tjb25maWc6NjpcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbmRyaXZlcnMvZGlicy9LY29uZmlnLTctXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTMtXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuZHJpdmVycy9kaWJzL0tjb25maWc6MTY6XHRkZXBlbmRzIG9uIERJQlNcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE3LVx0ZGVmYXVsdCBuXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xOC1cdGhlbHBcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE5Olx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxuLS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZS0yLSNcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTozOiMgRElCUyBjbGFzcyBtb2R1bGVcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS00LSNcbi0tXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU9Nj1kaWJzLXkgJiM0Mzs9IGRpYnNfbWFpbi5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfRElCUykgJiM0Mzs9IGRpYnMub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlOjg6ZGlicy0kKENPTkZJR19ESUJTX0xPKSAmIzQzOz0gZGlic19sb29wYmFjay5vXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI6I2RlZmluZSBESUJTX0xPX1NVUFBPUlRfTk9DT1BZXHQweDFcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM6I2RlZmluZSBESUJTX0RNQV9BRERSX0lOVkFMSURcdCh+KGRtYV9hZGRyX3QpMClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yOT1zdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE6XHRyZXR1cm4gRElCU19MT09QQkFDS19GQUJSSUM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyLX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQzPXN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00NC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ1Olx0cmV0dXJuIERJQlNfTE9fTUFYX0RNQlM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ2LX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU5LVx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NjA6XHRmb3JfZWFjaF9jbGVhcl9iaXQoc2JhX2lkeCwgbGRldi1cdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjEtXHRcdGlmICghdGVzdF9hbmRfc2V0X2JpdChzYmFfaWR4LCBsZGV2LVx1MDAzZXNiYV9pZHhfbWFzaykpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02My1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NjQ6XHRpZiAoc2JhX2lkeCA9PSBESUJTX0xPX01BWF9ETUJTKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02NS1cdFx0cmV0dXJuIC1FTk9TUEM7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy04NC1cdGRtYl9ub2RlLVx1MDAzZWNwdV9hZGRyID0gZm9saW9fYWRkcmVzcyhmb2xpbyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjg1Olx0ZG1iX25vZGUtXHUwMDNlZG1hX2FkZHIgPSBESUJTX0RNQV9BRERSX0lOVkFMSUQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg2LVx0cmVmY291bnRfc2V0KFx1MDAyNmRtYl9ub2RlLVx1MDAzZXJlZmNudCwgMSk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xMzI9c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjA6XHRcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWJfbm9kZS1cdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjEtXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xNjg9c3RhdGljIGludCBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MDpcdHJldHVybiBESUJTX0xPX1NVUFBPUlRfTk9DT1BZO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzEtfVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjM1PXN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3Rvayxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc0Olx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc1LVx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjEyOiNpZm5kZWYgX0RJQlNfTE9PUEJBQ0tfSFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxMzojZGVmaW5lIF9ESUJTX0xPT1BCQUNLX0hcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTQtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yMC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjE6I2lmIElTX0VOQUJMRUQoQ09ORklHX0RJQlNfTE8pXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIyOiNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1x0MTJcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjM6I2RlZmluZSBESUJTX0xPX01BWF9ETUJTXHQ1MDAwXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM4LVx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM5Olx0REVDTEFSRV9CSVRNQVAoc2JhX2lkeF9tYXNrLCBESUJTX0xPX01BWF9ETUJTKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XHRERUNMQVJFX0hBU0hUQUJMRShkbWJfaHQsIERJQlNfTE9fRE1CU19IQVNIX0JJVFMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00MS1cdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oPTUyPXN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTU2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo1NzojZW5kaWYgLyogX0RJQlNfTE9PUEJBQ0tfSCAqL1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzogKiAgRElCUyAtIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZ1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQtICpcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1OiAqICBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRElCUyBjbGFzcyBtb2R1bGVcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy02LSAqXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xhc3MgZGlic19jbGFzcyA9IHtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnRzW01BWF9ESUJTX0NMSUVOVFNdO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI4LXN0YXRpYyB1OCBtYXhfY2xpZW50O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz01MD1pbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU2LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU3Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01OC1cdFx0aWYgKCFjbGllbnRzW2ldKSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTY4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjY5Olx0aWYgKGkgXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFMpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cdFx0LyogaW5pdGlhbGl6ZSB3aXRoIGFsbCBkZXZpY2VzIHRoYXQgd2UgZ290IHNvIGZhciAqL1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xODU9aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0Olx0bWVtc2V0KGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciwgTk9fRElCU19DTElFTlQsIG1heF9kbWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyMj12b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOS1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMDpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFM7ICYjNDM7JiM0MztpKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMS1cdFx0ZGlicy1cdTAwM2VzdWJzW2ldID0gTlVMTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL01ha2VmaWxlPTE5Nz1vYmoteVx0XHRcdFx0JiM0Mzs9IHJlc2N0cmwvXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cbmRyaXZlcnMvTWFrZWZpbGU6MTk5Om9iai0kKENPTkZJR19ESUJTKVx0XHQmIzQzOz0gZGlicy9cbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVx0XHQmIzQzOz0gczM5MC9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbC1XaWRlIERJQlMgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYERJQlNgIG9yIGBkaWJzYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBncmVwLCBtaW5kIHlvdTsgSSYjMzk7bSB0aGlua2luZyBhIHRob3JvdWdoIHNlYXJjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dCBvZiB0aGVzZSB0ZXJtcyBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSB1bmRlcmx5aW5nIHN1YnN5c3RlbXMuIEkgbmVlZCB0byBxdWlja2x5IGFuZCBlZmZpY2llbnRseSBpZGVudGlmeSBhbGwgdGhlIHJlbGV2YW50IGNhbGwgc2l0ZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBzbyBJIGNhbiBhc3Nlc3MgaW1wYWN0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIGEgZmFpciBiaXQgb2Ygbm9pc2UsIGJ1dCBob3BlZnVsbHksIHRoZSB3aGVhdCB3aWxsIHNlcGFyYXRlIGZyb20gdGhlIGNoYWZmIHF1aWNrbHkuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1biBiZWdpbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEzMz1DT05GSUdfU01DX0RJQUc9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNDpDT05GSUdfRElCUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTM1OkNPTkZJR19ESUJTX0xPPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMzYtQ09ORklHX1hEUF9TT0NLRVRTPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTI0PUNPTkZJR19TTUNfRElBRz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTI1OkNPTkZJR19ESUJTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjY6Q09ORklHX0RJQlNfTE89eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyNy1DT05GSUdfWERQX1NPQ0tFVFM9eVxuLS1cbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XHRcdFx0XHQmIzQzOz0gcmVzY3RybC9cbmRyaXZlcnMvTWFrZWZpbGUtMTk4LVxuZHJpdmVycy9NYWtlZmlsZToxOTk6b2JqLSQoQ09ORklHX0RJQlMpXHRcdCYjNDM7PSBkaWJzL1xuZHJpdmVycy9NYWtlZmlsZS0yMDAtb2JqLSQoQ09ORklHX1MzOTApXHRcdCYjNDM7PSBzMzkwL1xuLS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZT02PWRpYnMteSAmIzQzOz0gZGlic19tYWluLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSAmIzQzOz0gZGlicy5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICYjNDM7PSBkaWJzX2xvb3BiYWNrLm9cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjItI2RlZmluZSBESUJTX0xPX0RNQlNfSEFTSF9CSVRTXHQxMlxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc9MTM1PUNPTkZJR19TTUNfSFNfQ1RSTF9CUEY9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzY6Q09ORklHX0RJQlM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzc6Q09ORklHX0RJQlNfTE89eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy0xMzgtQ09ORklHX1BNX1dBS0VMT0NLUz15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnNfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjY6ZGlicy15ICYjNDM7PSBkaWJzX21haW4ub1xuZHJpdmVycy9kaWJzL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX0RJQlMpICYjNDM7PSBkaWJzLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgJiM0Mzs9IGRpYnNfbG9vcGJhY2sub1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTktXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFwmIzM0O2RpYnNfbG9vcGJhY2suaFwmIzM0O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcJiMzNDtsb1wmIzM0OztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfbG9fZGV2ICpsb19kZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDpzdGF0aWMgaW50IGRpYnNfbG9fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUtXHRcdFx0ICAgICAgdTMyIHZpZF92YWxpZCwgdTMyIHZpZClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0MzpzdGF0aWMgaW50IGRpYnNfbG9fbWF4X2RtYnModm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDctXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDk6XHRcdFx0XHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MTpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTMtXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMjpcdFx0XHQgICAgIHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTMyOnN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzQ6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM2LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYzOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY0LVx0fVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNjg6c3RhdGljIGludCBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weShzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzQte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzU6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NjpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc3LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDQ6c3RhdGljIGludCBkaWJzX2xvX2RldGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdG9rZW4pXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNS17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNjpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA3Olx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDgtXHRib29sIGxhc3Q7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjktXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjMwOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjMxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzYtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM4LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM5Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDA6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgyOlx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MzpcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NjpcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5tb3ZlX2RhdGEgPSBkaWJzX2xvX21vdmVfZGF0YSxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg4Olx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4OTpcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XHQuZGV0YWNoX2RtYiA9IGRpYnNfbG9fZGV0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkxLX07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjkzOnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDE6c3RhdGljIHZvaWQgZGlic19sb19kZXZfZXhpdChzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDYtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwOC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwOTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzEwOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTc6XHRkaWJzID0gZGlic19kZXZfYWxsb2MoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE4LVx0aWYgKCFkaWJzKSB7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjQtXHRkaWJzLVx1MDAzZWRydl9wcml2ID0gbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1Olx0ZGlic19sb19kZXZfaW5pdChsZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI2LVx0dXVpZF9nZW4oXHUwMDI2ZGlicy1cdTAwM2VnaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XHRkaWJzLVx1MDAzZW9wcyA9IFx1MDAyNmRpYnNfbG9fb3BzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyOS1cdGRpYnMtXHUwMDNlZGV2LnBhcmVudCA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMDpcdGRldl9zZXRfbmFtZShcdTAwMjZkaWJzLVx1MDAzZWRldiwgXCYjMzQ7JXNcJiMzNDssIGRpYnNfbG9fZGV2X25hbWUpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcdHJldCA9IGRpYnNfZGV2X2FkZChkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzMzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzOC1lcnJfcmVnOlxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQwLVx0cHV0X2RldmljZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0NjpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9yZW1vdmUodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1MC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlx0ZGlic19kZXZfZGVsKGxvX2Rldi1cdTAwM2VkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlx0ZGlic19sb19kZXZfZXhpdChsb19kZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTM6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU0LVx0cHV0X2RldmljZShcdTAwMjZsb19kZXYtXHUwMDNlZGlicy1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTk6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XHRyZXR1cm4gZGlic19sb19kZXZfcHJvYmUoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjQ6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2Olx0ZGlic19sb19kZXZfcmVtb3ZlKCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjU6c3RydWN0IGRpYnNfbG9fZG1iX25vZGUge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNi1cdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0zNC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzU6c3RydWN0IGRpYnNfbG9fZGV2IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzY6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM3LVx0YXRvbWljX3QgZG1iX2NudDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NDppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NTp2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDYtI2Vsc2VcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDc6c3RhdGljIGlubGluZSBpbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQ4LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo1MjpzdGF0aWMgaW5saW5lIHZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyBkaWJzX2NsYXNzID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzLVx0Lm5hbWVcdFx0PSBcJiMzNDtkaWJzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNi0vKiB1c2UgYW4gYXJyYXkgcmF0aGVyIGEgbGlzdCBmb3IgZmFzdCBtYXBwaW5nOiAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI3OnN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudHNbTUFYX0RJQlNfQ0xJRU5UU107XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9Mjk9c3RhdGljIERFRklORV9NVVRFWChjbGllbnRzX2xvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjMwOnN0cnVjdCBkaWJzX2Rldl9saXN0IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zMS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzU6c3RhdGljIHN0cnVjdCBkaWJzX2Rldl9saXN0IGRpYnNfZGV2X2xpc3QgPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzY6XHQubGlzdCA9IExJU1RfSEVBRF9JTklUKGRpYnNfZGV2X2xpc3QubGlzdCksXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mzc6XHQubXV0ZXggPSBfX01VVEVYX0lOSVRJQUxJWkVSKGRpYnNfZGV2X2xpc3QubXV0ZXgpLFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM4LX07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzktXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDA6c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQxOlx0XHRcdFx0ICBzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDIte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MDppbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUyOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVx0aW50IGksIHJjID0gLUVOT1NQQztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01NC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXHRtdXRleF9sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTcwLVx0XHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzE6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzItXHRcdFx0ZGlicy1cdTAwM2Vwcml2W2ldID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03My1cdFx0XHRjbGllbnQtXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzQ6XHRcdFx0ZGlic19zZXR1cF9mb3J3YXJkaW5nKGNsaWVudCwgZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzUtXHRcdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03Ni1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3NzpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03OC1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjgxOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfcmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Mi1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODU6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MDpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTE6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkyLVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExNTpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTYtXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExOS1cdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyMS1cdHJldHVybiByYztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMzpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNi17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMC1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzNTpzdHJ1Y3QgZGlic19kZXYgKmRpYnNfZGV2X2FsbG9jKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM2LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM4LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDItXHRzcGluX2xvY2tfaW5pdChcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MzpcdGRpYnMtXHUwMDNlZGV2LnJlbGVhc2UgPSBkaWJzX2Rldl9yZWxlYXNlO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NDpcdGRpYnMtXHUwMDNlZGV2LmNsYXNzID0gXHUwMDI2ZGlic19jbGFzcztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDUtXHRkZXZpY2VfaW5pdGlhbGl6ZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0OC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTUxPXN0YXRpYyBzc2l6ZV90IGdpZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1My17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU0Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1NS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTY6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE1Ny1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ni1cdHUxNiBmYWJyaWNfaWQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE2ODpcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY5LVx0ZmFicmljX2lkID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTczPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmYWJyaWNfaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3NC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRpYnNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc2LVx0XHUwMDI2ZGV2X2F0dHJfZ2lkLmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4MC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZGlic19kZXZfYXR0cl9ncm91cCA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODI6XHQuYXR0cnMgPSBkaWJzX2Rldl9hdHRycyxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODMtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTg1OmludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMDA6XHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXHUwMDI2ZGlicy1cdTAwM2VkZXYua29iaiwgXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjAxLVx0aWYgKHJldCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcdFx0ZGV2X2VycihcdTAwMjZkaWJzLVx1MDAzZWRldiwgXCYjMzQ7c3lzZnNfY3JlYXRlX2dyb3VwIGZhaWxlZCBmb3IgZGlic19kZXZcXG5cJiMzNDspO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMy1cdFx0ZGV2aWNlX2RlbChcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMDY6XHRtdXRleF9sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNy1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEwLVx0XHRcdGNsaWVudHNbaV0tXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlx0XHRcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTItXHRcdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjE1Olx0bGlzdF9hZGQoXHUwMDI2ZGlicy1cdTAwM2VsaXN0LCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIxNjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjIwOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FkZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyNzpcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMy1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzQ6XHRtdXRleF9sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzNS1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQxLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZkaWJzLVx1MDAzZWxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0MjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDMtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0NS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQ2OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2RlbCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0ODpzdGF0aWMgaW50IF9faW5pdCBkaWJzX2luaXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDkte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjUyOlx0cmMgPSBjbGFzc19yZWdpc3RlcihcdTAwMjZkaWJzX2NsYXNzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1NS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XHRyYyA9IGRpYnNfbG9vcGJhY2tfaW5pdCgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1Ny1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYyLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjY0LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjU6XHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjY6XHRjbGFzc191bnJlZ2lzdGVyKFx1MDAyNmRpYnNfY2xhc3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2Ny19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjY4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzA6bW9kdWxlX2V4aXQoZGlic19leGl0KTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyOC1cdHNwaW5sb2NrX3QgY21kX2xvY2s7IC8qIHNlcmlhbGl6ZXMgY21kcyAqL1xuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjk6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIzMC1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTE3Nz1zdGF0aWMgdm9pZCBpc21fZnJlZV9pZXEoc3RydWN0IGlzbV9kZXYgKmlzbSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xODUtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoxODY6c3RhdGljIGludCBpc21fcmVhZF9sb2NhbF9naWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg3LXtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMDUtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDY6c3RhdGljIGludCBpc21fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIwNy1cdFx0XHQgIHUzMiB2aWRfdmFsaWQsIHUzMiB2aWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjIzPXN0YXRpYyBpbnQgaXNtX21heF9kbWJzKHZvaWQpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjI3LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjI4OnN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIyOS17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM1LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjM2OnN0YXRpYyBpbnQgaXNtX2FsbG9jX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIzNy17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjgyLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjgzOnN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjg0Olx0XHRcdCAgICBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI4NS17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE4LVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzE5OnN0YXRpYyBpbnQgaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMjAte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM0NC1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM0NTpzdGF0aWMgaW50IGlzbV9hZGRfdmxhbl9pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB2bGFuX2lkKVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzQ2LXtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNTgtXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNTk6c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM2MC17XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzcyLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzczOnN0YXRpYyBpbnQgaXNtX3NpZ25hbF9pZXEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNzQtXHRcdFx0ICB1MzIgdHJpZ2dlcl9pcnEsIHUzMiBldmVudF9jb2RlLCB1NjQgaW5mbylcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0zOTE9c3RhdGljIHVuc2lnbmVkIGludCBtYXhfYnl0ZXModW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5Ni1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM5NzpzdGF0aWMgaW50IGlzbV9tb3ZlKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssIHVuc2lnbmVkIGludCBpZHgsXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zOTgtXHRcdCAgICBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyMi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQyMzpzdGF0aWMgdTE2IGlzbV9nZXRfY2hpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00MjQte1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTQ2MT1zdGF0aWMgdm9pZCBpc21faGFuZGxlX2V2ZW50KHN0cnVjdCBpc21fZGV2ICppc20pXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjIte1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDYzOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gaXNtLVx1MDAzZWRpYnM7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NjQ6XHRzdHJ1Y3QgZGlic19ldmVudCBldmVudDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ2NS1cdHN0cnVjdCBpc21fZXZlbnQgKmVudHJ5O1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDY2Olx0c3RydWN0IGRpYnNfY2xpZW50ICpjbHQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00OTk9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTAyLVx0dW5zaWduZWQgbG9uZyBiaXQsIGVuZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUwMzpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUwNC1cdHVuc2lnbmVkIGxvbmcgKmJ2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0Mi1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjU0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBpc21fb3BzID0ge1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTQ0LVx0LmdldF9mYWJyaWNfaWQgPSBpc21fZ2V0X2NoaWQsXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NjA1PXN0YXRpYyBpbnQgaXNtX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02MDYte1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjA3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjA4LVx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTYzNS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjYzNjpcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjM3LVx0aWYgKCFkaWJzKSB7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ2LVx0LyogZW5hYmxlIGlzbSBkZXZpY2UsIGJ1dCBhbnkgaW50ZXJydXB0cyBhbmQgZXZlbnRzIHdpbGwgYmUgaWdub3JlZFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjQ3Olx0ICogYmVmb3JlIGRpYnNfZGV2X2FkZCgpIGFkZHMgaXQgdG8gYW55IGNsaWVudHMuXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NDgtXHQgKi9cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NjItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2NjM6XHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY3MS1lcnJfZGliczpcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY3MjpcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjczLVx0cHV0X2RldmljZShcdTAwMjZkaWJzLVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Njg1PXN0YXRpYyB2b2lkIGlzbV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjg3LVx0c3RydWN0IGlzbV9kZXYgKmlzbSA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2ODg6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSBpc20tXHUwMDNlZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY4OS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY5MDpcdGRpYnNfZGV2X2RlbChkaWJzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY5MS1cdGlzbV9kZXZfZXhpdChpc20pO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjkyOlx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02OTMtXHRwdXRfZGV2aWNlKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00NS0gKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjQ2OnN0cnVjdCBkaWJzX2RtYiB7XG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00Ny1cdC8qIHRvayAtIFRva2VuIGZvciB0aGlzIGRtYlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTc0LSAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6NzU6ZW51bSBkaWJzX2V2ZW50X3R5cGUge1xuaW5jbHVkZS9saW51eC9kaWJzLmgtNzYtXHQvKiBCdWZmZXIgZXZlbnQsIGUuZy4gYSByZW1vdGUgZG1iIHdhcyB1bnJlZ2lzdGVyZWQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC04NS1cbmluY2x1ZGUvbGludXgvZGlicy5oOjg2OmVudW0gZGlic19ldmVudF9zdWJ0eXBlIHtcbmluY2x1ZGUvbGludXgvZGlicy5oLTg3LVx0RElCU19CVUZfVU5SRUdJU1RFUkVELFxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTkyLVxuaW5jbHVkZS9saW51eC9kaWJzLmg6OTM6c3RydWN0IGRpYnNfZXZlbnQge1xuaW5jbHVkZS9saW51eC9kaWJzLmgtOTQtXHR1MzIgdHlwZTtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMDQtXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMDU6c3RydWN0IGRpYnNfZGV2O1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTA2LVxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTExNS0gKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjExNjpzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcbmluY2x1ZGUvbGludXgvZGlicy5oLTExNy1cdC8qKlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyMC1cdCAqXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjE6XHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic19yZWdpc3Rlcl9jbGllbnQoKSBmb3IgYWxsIGV4aXN0aW5nXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjItXHQgKiBkaWJzIGRldmljZXMgYW5kIHdoZW5ldmVyIGEgbmV3IGRpYnMgZGV2aWNlIGlzIHJlZ2lzdGVyZWQuXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjM6XHQgKiBkZXYgaXMgdXNhYmxlIHVudGlsIGRpYnNfY2xpZW50LnJlbW92ZSgpIGlzIGNhbGxlZC5cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNC1cdCAqICpkZXYgaXMgcHJvdGVjdGVkIGJ5IGRldmljZSByZWZjb3VudGluZy5cbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNS1cdCAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6MTI2Olx0dm9pZCAoKmFkZF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNy1cdC8qKlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTEzMS1cdCAqIFdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgZGlicyBkZXZpY2UgaXMgcmVtb3ZlZC5cbmluY2x1ZGUvbGludXgvZGlicy5oOjEzMjpcdCAqIFdpbGwgYmUgY2FsbGVkIGR1cmluZyBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KCkgZm9yIGFsbCBleGlzdGluZ1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTMzLVx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIGRpYnMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzctXHQgKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjEzODpcdHZvaWQgKCpkZWxfZGV2KShzdHJ1Y3QgZGlic19kZXYgKmRldik7XG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzktXHQvKipcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTItXHQgKi9cbmluY2x1ZGUvbGludXgvZGlicy5oOjE1MzpcdHZvaWQgKCpoYW5kbGVfaXJxKShzdHJ1Y3QgZGlic19kZXYgKmRldiwgdW5zaWduZWQgaW50IGlkeCxcbmluY2x1ZGUvbGludXgvZGlicy5oLTE1NC1cdFx0XHQgICB1MTYgZG1iZW1hc2spO1xuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTE2MS1cdCAqL1xuaW5jbHVkZS9saW51eC9kaWJzLmg6MTYyOlx0dm9pZCAoKmhhbmRsZV9ldmVudCkoc3RydWN0IGRpYnNfZGV2ICpkZXYsXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxNjM6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MjU1CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBESUJTIENsaWVudCBSZWdpc3RyYXRpb24qKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aG8mIzM5O3MgcmVnaXN0ZXJpbmcgYXMgYSBESUJTIGNsaWVudC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYuIFRpbWUgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXTigJlzIGhhcHBlbmluZyBpbiB0aGUgc3lzdGVtLgoKSSYjMzk7bGwgc3RhcnQgd2l0aCB0aGUgbW9zdCBvYnZpb3VzOiB3aGVyZSYjMzk7cyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIGNhbGwgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZXNlIGNsaWVudHM/IEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiB0aGF0JiMzOTtzIGxpa2VseSBgZGlic19yZWdpc3Rlcl9jbGllbnRgLiBMZXQmIzM5O3MgdXNlIGBncmVwYCB0byBxdWlja2x5IHNlYXJjaCB0aGUgY29kZWJhc2UgYW5kIGZpbmQgYWxsIGluc3RhbmNlcyBvZiB0aGF0IGZ1bmN0aW9uIG5hbWUuIFRoaXMgd2lsbCBpbW1lZGlhdGVseSBzaG93IG1lIHdoZXJlIHRoZSByZWdpc3RyYXRpb24gbG9naWMgaXMgaW52b2tlZCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgd2hpY2ggSSBjYW4gdGhlbiBhbmFseXplLiBGcm9tIHRoZXJlIEkgY2FuIG1vdmUgaW50byB0aGUgY29kZSBhbmQgZGV0ZXJtaW5lIGFueSByZWxldmFudCBwYXJhbWV0ZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzX3JlZ2lzdGVyX2NsaWVudCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19tYWluLmM9NDA9c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MDppbnQgZGlic19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04MC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oPTExNj1zdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjAtXHQgKlxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTIxOlx0ICogV2lsbCBiZSBjYWxsZWQgZHVyaW5nIGRpYnNfcmVnaXN0ZXJfY2xpZW50KCkgZm9yIGFsbCBleGlzdGluZ1xuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIyLVx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIG5ldyBkaWJzIGRldmljZSBpcyByZWdpc3RlcmVkLlxuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oPTE2Nj1zdHJ1Y3QgZGlic19jbGllbnQge1xuLS1cbmluY2x1ZGUvbGludXgvZGlicy5oLTE3Ni0vKipcbmluY2x1ZGUvbGludXgvZGlicy5oOjE3NzogKiBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIC0gcmVnaXN0ZXIgYSBjbGllbnQgd2l0aCBkaWJzIGxheWVyXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNzgtICogQGNsaWVudDogdGhpcyBjbGllbnRcbi0tXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xODItICovXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxODM6aW50IGRpYnNfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KTtcbmluY2x1ZGUvbGludXgvZGlicy5oLTE4NC0vKipcbi0tXG5uZXQvc21jL3NtY19pc20uYz02MzA9aW50IHNtY19pc21faW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cbm5ldC9zbWMvc21jX2lzbS5jOjYzNzpcdHJjID0gZGlic19yZWdpc3Rlcl9jbGllbnQoXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTYzOC1cdHJldHVybiByYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwMTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIFNNQyBDbGllbnQgRGF0YSBNb3ZlbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgU01DIHN0dWZmLCBzcGVjaWZpY2FsbHkgdGhlIGNsaWVudCBzaWRlIGltcGxlbWVudGF0aW9uLCB3aGljaCBJJiMzOTttIHByZXR0eSBzdXJlIHJlc2lkZXMgd2l0aGluIGBuZXQvc21jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCBESUJTIGFuZCB1c2luZyB0aGF0IGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLgoKTXkgZmlyc3Qgc3RlcCBpcyBnb2luZyB0byBiZSBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBgbmV0L3NtYy9gIGRpcmVjdG9yeSBhbmQgaXRzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgZmlsZXMgZGlyZWN0bHksIGxvb2tpbmcgZm9yIGhvdyBkYXRhIG1vdmVtZW50IGlzIG9yY2hlc3RyYXRlZCB3aXRoaW4gdGhlIFNNQyBjbGllbnQuIFRvIGFjY2VsZXJhdGUgdGhpbmdzLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIHRlcm1zICYjMzQ7bW92ZV9kYXRhJiMzNDsgYW5kICYjMzQ7ZGlicyYjMzQ7IHdpdGhpbiB0aGF0IHNwZWNpZmljIGRpcmVjdG9yeS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGZvY3VzZWQgbGlzdCBvZiByZWxldmFudCBmaWxlcyBhbmQgc2VjdGlvbnMgb2YgY29kZSB0byBleGFtaW5lIGNsb3NlbHkuIFRoYXQgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIGFyZWFzIHdoZXJlIHRoZSBESUJTIGludGVncmF0aW9uIGlzIG1vc3QgcmVsZXZhbnQgdG8gdGhlIGRhdGEgdHJhbnNmZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NsYy5jPTg0Nj1pbnQgc21jX2NsY19zZW5kX3Byb3Bvc2FsKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NsYy5jLTkxOS1cdFx0XHRzbWNkID0gaW5pLVx1MDAzZWlzbV9kZXZbMF07XG5uZXQvc21jL3NtY19jbGMuYzo5MjA6XHRcdFx0Y29weV90b19zbWNkZ2lkKFx1MDAyNnNtY2RfZ2lkLCBcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZ2lkKTtcbm5ldC9zbWMvc21jX2NsYy5jLTkyMS1cdFx0XHRwY2xjX3NtY2QtXHUwMDNlaXNtLmdpZCA9IGh0b25sbChzbWNkX2dpZC5naWQpO1xuLS1cbm5ldC9zbWMvc21jX2NsYy5jLTk2OS1cdFx0XHRcdHNtY2QgPSBpbmktXHUwMDNlaXNtX2RldltpXTtcbm5ldC9zbWMvc21jX2NsYy5jOjk3MDpcdFx0XHRcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19jbGMuYy05NzEtXHRcdFx0XHRnaWRjaGlkc1tlbnRyeV0uY2hpZCA9XG4tLVxubmV0L3NtYy9zbWNfY2xjLmM9MTA0Nz1zbWNkX2NsY19wcmVwX2NvbmZpcm1fYWNjZXB0KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbi0tXG5uZXQvc21jL3NtY19jbGMuYy0xMDYyLVx0ICAgICAgIHNpemVvZihTTUNEX0VZRUNBVENIRVIpKTtcbm5ldC9zbWMvc21jX2NsYy5jOjEwNjM6XHRjb3B5X3RvX3NtY2RnaWQoXHUwMDI2c21jZF9naWQsIFx1MDAyNnNtY2QtXHUwMDNlZGlicy1cdTAwM2VnaWQpO1xubmV0L3NtYy9zbWNfY2xjLmMtMTA2NC1cdGNsYy1cdTAwM2VoZHIudHlwZXYxID0gU01DX1RZUEVfRDtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9NTM2PXN0YXRpYyBpbnQgc21jX25sX2ZpbGxfc21jZF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTU1Ny1cdFx0Z290byBlcnJhdHRyO1xubmV0L3NtYy9zbWNfY29yZS5jOjU1ODpcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19jb3JlLmMtNTU5LVx0aWYgKG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgU01DX05MQV9MR1JfRF9HSUQsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTg4OT1zdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy05NDAtXHRcdHNtY2QgPSBpbmktXHUwMDNlaXNtX2RldltpbmktXHUwMDNlaXNtX3NlbGVjdGVkXTtcbm5ldC9zbWMvc21jX2NvcmUuYzo5NDE6XHRcdGdldF9kZXZpY2UoXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWRldik7XG5uZXQvc21jL3NtY19jb3JlLmMtOTQyLVx0XHRsZ3ItXHUwMDNlcGVlcl9naWQuZ2lkID1cbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MTQ3NT1zdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTEtXHRcdHNtY19pc21fcHV0X3ZsYW4obGdyLVx1MDAzZXNtY2QsIGxnci1cdTAwM2V2bGFuX2lkKTtcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDkyOlx0XHRwdXRfZGV2aWNlKFx1MDAyNmxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KTtcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDkzLVx0fVxuLS1cbm5ldC9zbWMvc21jX2RpYWcuYz03Mj1zdGF0aWMgaW50IF9fc21jX2RpYWdfZHVtcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfZGlhZy5jLTE3Ny1cdFx0ZGluZm8ucGVlcl9naWRfZXh0ID0gY29ubi1cdTAwM2VsZ3ItXHUwMDNlcGVlcl9naWQuZ2lkX2V4dDtcbm5ldC9zbWMvc21jX2RpYWcuYzoxNzg6XHRcdGNvcHlfdG9fc21jZGdpZChcdTAwMjZzbWNkX2dpZCwgXHUwMDI2c21jZC1cdTAwM2VkaWJzLVx1MDAzZWdpZCk7XG5uZXQvc21jL3NtY19kaWFnLmMtMTc5LVx0XHRkaW5mby5teV9naWQgPSBzbWNkX2dpZC5naWQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTktI2luY2x1ZGUgXCYjMzQ7c21jX25ldGxpbmsuaFwmIzM0O1xubmV0L3NtYy9zbWNfaXNtLmM6MjA6I2luY2x1ZGUgXCYjMzQ7bGludXgvZGlicy5oXCYjMzQ7XG5uZXQvc21jL3NtY19pc20uYy0yMS1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yOD1zdGF0aWMgdTggc21jX2lzbV92Ml9zeXN0ZW1fZWlkW1NNQ19NQVhfRUlEX0xFTl07XG5uZXQvc21jL3NtY19pc20uYy0yOS1cbm5ldC9zbWMvc21jX2lzbS5jOjMwOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XG5uZXQvc21jL3NtY19pc20uYzozMTpzdGF0aWMgdm9pZCBzbWNkX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XG5uZXQvc21jL3NtY19pc20uYzozMjpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9ldmVudChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsXG5uZXQvc21jL3NtY19pc20uYzozMzpcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xubmV0L3NtYy9zbWNfaXNtLmM6MzQ6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfaXJxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdW5zaWduZWQgaW50IGRtYm5vLFxubmV0L3NtYy9zbWNfaXNtLmMtMzUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzayk7XG5uZXQvc21jL3NtY19pc20uYy0zNi1cbm5ldC9zbWMvc21jX2lzbS5jOjM3OnN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHNtY19jbGllbnRfb3BzID0ge1xubmV0L3NtYy9zbWNfaXNtLmMtMzgtXHQuYWRkX2RldiA9IHNtY2RfcmVnaXN0ZXJfZGV2LFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTQzLVxubmV0L3NtYy9zbWNfaXNtLmM6NDQ6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCBzbWNfZGlic19jbGllbnQgPSB7XG5uZXQvc21jL3NtY19pc20uYy00NS1cdC5uYW1lID0gXCYjMzQ7U01DLURcJiMzNDssXG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NzE9aW50IHNtY19pc21fY2FudGFsayhzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTczLXtcbm5ldC9zbWMvc21jX2lzbS5jOjc0Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gc21jZC1cdTAwM2VkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmMtNzUtXHR1dWlkX3QgaXNtX3JnaWQ7XG5uZXQvc21jL3NtY19pc20uYy03Ni1cbm5ldC9zbWMvc21jX2lzbS5jOjc3Olx0Y29weV90b19kaWJzZ2lkKFx1MDAyNmlzbV9yZ2lkLCBwZWVyX2dpZCk7XG5uZXQvc21jL3NtY19pc20uYzo3ODpcdHJldHVybiBkaWJzLVx1MDAzZW9wcy1cdTAwM2VxdWVyeV9yZW1vdGVfZ2lkKGRpYnMsIFx1MDAyNmlzbV9yZ2lkLCB2bGFuX2lkID8gMSA6IDAsXG5uZXQvc21jL3NtY19pc20uYy03OS1cdFx0XHRcdFx0ICB2bGFuX2lkKTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz05MD11MTYgc21jX2lzbV9nZXRfY2hpZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXG5uZXQvc21jL3NtY19pc20uYy05MS17XG5uZXQvc21jL3NtY19pc20uYzo5MjpcdHJldHVybiBzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cdTAwM2VkaWJzKTtcbm5ldC9zbWMvc21jX2lzbS5jLTkzLX1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0xMzM9aW50IHNtY19pc21fZ2V0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTQwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbm5ldC9zbWMvc21jX2lzbS5jOjE0MTpcdGlmICghc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZClcbm5ldC9zbWMvc21jX2lzbS5jLTE0Mi1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTE2My1cdCAqL1xubmV0L3NtYy9zbWNfaXNtLmM6MTY0Olx0aWYgKHNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlYWRkX3ZsYW5faWQoc21jZC1cdTAwM2VkaWJzLCB2bGFuaWQpKSB7XG5uZXQvc21jL3NtY19pc20uYy0xNjUtXHRcdGtmcmVlKG5ld192bGFuKTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz0xNzk9aW50IHNtY19pc21fcHV0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMTg3LVx0XHRyZXR1cm4gLUVJTlZBTDtcbm5ldC9zbWMvc21jX2lzbS5jOjE4ODpcdGlmICghc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VkZWxfdmxhbl9pZClcbm5ldC9zbWMvc21jX2lzbS5jLTE4OS1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTIwNS1cdC8qIEZvdW5kIGFuZCB0aGUgbGFzdCByZWZlcmVuY2UganVzdCBnb25lICovXG5uZXQvc21jL3NtY19pc20uYzoyMDY6XHRpZiAoc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VkZWxfdmxhbl9pZChzbWNkLVx1MDAzZWRpYnMsIHZsYW5pZCkpXG5uZXQvc21jL3NtY19pc20uYy0yMDctXHRcdHJjID0gLUVJTztcbi0tXG5uZXQvc21jL3NtY19pc20uYz0yMTU9dm9pZCBzbWNfaXNtX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBzbWNkX2RldiAqc21jZCxcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMTcte1xubmV0L3NtYy9zbWNfaXNtLmM6MjE4Olx0c3RydWN0IGRpYnNfZG1iIGRtYjtcbm5ldC9zbWMvc21jX2lzbS5jLTIxOS1cbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMjktXG5uZXQvc21jL3NtY19pc20uYzoyMzA6XHRzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXVucmVnaXN0ZXJfZG1iKHNtY2QtXHUwMDNlZGlicywgXHUwMDI2ZG1iKTtcbm5ldC9zbWMvc21jX2lzbS5jLTIzMS1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yMzU9aW50IHNtY19pc21fcmVnaXN0ZXJfZG1iKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgZG1iX2xlbixcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yMzcte1xubmV0L3NtYy9zbWNfaXNtLmM6MjM4Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmM6MjM5Olx0c3RydWN0IGRpYnNfZG1iIGRtYjtcbm5ldC9zbWMvc21jX2lzbS5jLTI0MC1cdGludCByYztcbi0tXG5uZXQvc21jL3NtY19pc20uYy0yNDUtXHRkbWIudmxhbl9pZCA9IGxnci1cdTAwM2V2bGFuX2lkO1xubmV0L3NtYy9zbWNfaXNtLmM6MjQ2Olx0Y29weV90b19kaWJzZ2lkKFx1MDAyNmRtYi5yZ2lkLCBcdTAwMjZsZ3ItXHUwMDNlcGVlcl9naWQpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjQ3LVxubmV0L3NtYy9zbWNfaXNtLmM6MjQ4Olx0ZGlicyA9IGxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnM7XG5uZXQvc21jL3NtY19pc20uYzoyNDk6XHRyYyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZXJlZ2lzdGVyX2RtYihkaWJzLCBcdTAwMjZkbWIsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG5uZXQvc21jL3NtY19pc20uYy0yNTAtXHRpZiAoIXJjKSB7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI2NS1cdCAqL1xubmV0L3NtYy9zbWNfaXNtLmM6MjY2Olx0cmV0dXJuIChzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXN1cHBvcnRfbW1hcHBlZF9yZG1iIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfaXNtLmM6MjY3Olx0XHRzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZXN1cHBvcnRfbW1hcHBlZF9yZG1iKHNtY2QtXHUwMDNlZGlicykpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjY4LX1cbi0tXG5uZXQvc21jL3NtY19pc20uYz0yNzA9aW50IHNtY19pc21fYXR0YWNoX2RtYihzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgdTY0IHRva2VuLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI3Mi17XG5uZXQvc21jL3NtY19pc20uYzoyNzM6XHRzdHJ1Y3QgZGlic19kbWIgZG1iO1xubmV0L3NtYy9zbWNfaXNtLmMtMjc0LVx0aW50IHJjID0gMDtcbm5ldC9zbWMvc21jX2lzbS5jLTI3NS1cbm5ldC9zbWMvc21jX2lzbS5jOjI3NjpcdGlmICghZGV2LVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWF0dGFjaF9kbWIpXG5uZXQvc21jL3NtY19pc20uYy0yNzctXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTI4MC1cdGRtYi5kbWJfdG9rID0gdG9rZW47XG5uZXQvc21jL3NtY19pc20uYzoyODE6XHRyYyA9IGRldi1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VhdHRhY2hfZG1iKGRldi1cdTAwM2VkaWJzLCBcdTAwMjZkbWIpO1xubmV0L3NtYy9zbWNfaXNtLmMtMjgyLVx0aWYgKCFyYykge1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTI5Mz1pbnQgc21jX2lzbV9kZXRhY2hfZG1iKHN0cnVjdCBzbWNkX2RldiAqZGV2LCB1NjQgdG9rZW4pXG5uZXQvc21jL3NtY19pc20uYy0yOTQte1xubmV0L3NtYy9zbWNfaXNtLmM6Mjk1Olx0aWYgKCFkZXYtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlZGV0YWNoX2RtYilcbm5ldC9zbWMvc21jX2lzbS5jLTI5Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG5uZXQvc21jL3NtY19pc20uYy0yOTctXG5uZXQvc21jL3NtY19pc20uYzoyOTg6XHRyZXR1cm4gZGV2LVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWRldGFjaF9kbWIoZGV2LVx1MDAzZWRpYnMsIHRva2VuKTtcbm5ldC9zbWMvc21jX2lzbS5jLTI5OS19XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9MzAxPXN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzA3LVx0c3RydWN0IG5sYXR0ciAqcG9ydF9hdHRycztcbm5ldC9zbWMvc21jX2lzbS5jOjMwODpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbm5ldC9zbWMvc21jX2lzbS5jLTMwOS1cdHN0cnVjdCBubGF0dHIgKmF0dHJzO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTMxMi1cbm5ldC9zbWMvc21jX2lzbS5jOjMxMzpcdGRpYnMgPSBzbWNkLVx1MDAzZWRpYnM7XG5uZXQvc21jL3NtY19pc20uYy0zMTQtXHRubGggPSBnZW5sbXNnX3B1dChza2IsIE5FVExJTktfQ0IoY2ItXHUwMDNlc2tiKS5wb3J0aWQsIGNiLVx1MDAzZW5saC1cdTAwM2VubG1zZ19zZXEsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzI3LVx0bWVtc2V0KFx1MDAyNnNtY19wY2lfZGV2LCAwLCBzaXplb2Yoc21jX3BjaV9kZXYpKTtcbm5ldC9zbWMvc21jX2lzbS5jOjMyODpcdHNtY19zZXRfcGNpX3ZhbHVlcyh0b19wY2lfZGV2KGRpYnMtXHUwMDNlZGV2LnBhcmVudCksIFx1MDAyNnNtY19wY2lfZGV2KTtcbm5ldC9zbWMvc21jX2lzbS5jLTMyOS1cdGlmIChubGFfcHV0X3UzMihza2IsIFNNQ19OTEFfREVWX1BDSV9GSUQsIHNtY19wY2lfZGV2LnBjaV9maWQpKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTM2NT1zdGF0aWMgdm9pZCBzbWNfbmxfcHJlcF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVx0XHRcdGdvdG8gbmV4dDtcbm5ldC9zbWMvc21jX2lzbS5jOjM3ODpcdFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cdTAwM2VkaWJzKSlcbm5ldC9zbWMvc21jX2lzbS5jLTM3OS1cdFx0XHRnb3RvIG5leHQ7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9Mzk2PXN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsge1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTM5OC1cdHN0cnVjdCBzbWNkX2RldiAqc21jZDtcbm5ldC9zbWMvc21jX2lzbS5jOjM5OTpcdHN0cnVjdCBkaWJzX2V2ZW50IGV2ZW50O1xubmV0L3NtYy9zbWNfaXNtLmMtNDAwLX07XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9NDE3PXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX3N3X2V2ZW50KHN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsgKndyaylcbm5ldC9zbWMvc21jX2lzbS5jLTQxOC17XG5uZXQvc21jL3NtY19pc20uYzo0MTk6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSB3cmstXHUwMDNlc21jZC1cdTAwM2VkaWJzO1xubmV0L3NtYy9zbWNfaXNtLmMtNDIwLVx0dW5pb24gc21jZF9zd19ldmVudF9pbmZvIGV2X2luZm87XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDMxLVx0XHRpZiAoZXZfaW5mby5jb2RlID09IElTTV9FVkVOVF9SRVFVRVNUIFx1MDAyNlx1MDAyNlxubmV0L3NtYy9zbWNfaXNtLmM6NDMyOlx0XHQgICAgZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KSB7XG5uZXQvc21jL3NtY19pc20uYy00MzMtXHRcdFx0ZXZfaW5mby5jb2RlID0gSVNNX0VWRU5UX1JFU1BPTlNFO1xubmV0L3NtYy9zbWNfaXNtLmM6NDM0Olx0XHRcdGNvcHlfdG9fZGlic2dpZChcdTAwMjZpc21fcmdpZCwgXHUwMDI2cGVlcl9naWQpO1xubmV0L3NtYy9zbWNfaXNtLmM6NDM1Olx0XHRcdGRpYnMtXHUwMDNlb3BzLVx1MDAzZXNpZ25hbF9ldmVudChkaWJzLCBcdTAwMjZpc21fcmdpZCxcbm5ldC9zbWMvc21jX2lzbS5jLTQzNi1cdFx0XHRcdFx0ICAgICAgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTQ2Nj1zdGF0aWMgc3RydWN0IHNtY2RfZGV2ICpzbWNkX2FsbG9jX2Rldihjb25zdCBjaGFyICpuYW1lLCBpbnQgbWF4X2RtYnMpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDkwLVxubmV0L3NtYy9zbWNfaXNtLmM6NDkxOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicylcbm5ldC9zbWMvc21jX2lzbS5jLTQ5Mi17XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDk1LVxubmV0L3NtYy9zbWNfaXNtLmM6NDk2Olx0bWF4X2RtYnMgPSBkaWJzLVx1MDAzZW9wcy1cdTAwM2VtYXhfZG1icygpO1xubmV0L3NtYy9zbWNfaXNtLmMtNDk3LVxubmV0L3NtYy9zbWNfaXNtLmM6NDk4Olx0c21jZCA9IHNtY2RfYWxsb2NfZGV2KGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSwgbWF4X2RtYnMpO1xubmV0L3NtYy9zbWNfaXNtLmMtNDk5LVx0aWYgKCFzbWNkKVxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUwMS1cbm5ldC9zbWMvc21jX2lzbS5jOjUwMjpcdHNtY2QtXHUwMDNlZGlicyA9IGRpYnM7XG5uZXQvc21jL3NtY19pc20uYzo1MDM6XHRkaWJzX3NldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCwgc21jZCk7XG5uZXQvc21jL3NtY19pc20uYy01MDQtXG5uZXQvc21jL3NtY19pc20uYzo1MDU6XHRpZiAoc21jX3BuZXRpZF9ieV9kZXZfcG9ydChkaWJzLVx1MDAzZWRldi5wYXJlbnQsIDAsIHNtY2QtXHUwMDNlcG5ldGlkKSlcbm5ldC9zbWMvc21jX2lzbS5jLTUwNi1cdFx0c21jX3BuZXRpZF9ieV90YWJsZV9zbWNkKHNtY2QpO1xubmV0L3NtYy9zbWNfaXNtLmMtNTA3LVxubmV0L3NtYy9zbWNfaXNtLmM6NTA4Olx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soZGlicykgfHxcbm5ldC9zbWMvc21jX2lzbS5jOjUwOTpcdCAgICAoZGlicy1cdTAwM2VvcHMtXHUwMDNlYWRkX3ZsYW5faWQgXHUwMDI2XHUwMDI2XG5uZXQvc21jL3NtY19pc20uYzo1MTA6XHQgICAgICFkaWJzLVx1MDAzZW9wcy1cdTAwM2VhZGRfdmxhbl9pZChkaWJzLCBJU01fUkVTRVJWRURfVkxBTklEKSkpIHtcbm5ldC9zbWMvc21jX2lzbS5jLTUxMS1cdFx0c21jX2lzbV9zZXRfdjJfY2FwYWJsZSgpO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUyMS1cdFx0XHRcdFx0XHQgIHN0cnVjdCBzbWNkX2RldiwgbGlzdCk7XG5uZXQvc21jL3NtY19pc20uYzo1MjI6XHRcdGlmIChmZW50cnkgXHUwMDI2XHUwMDI2IHNtY19pc21faXNfbG9vcGJhY2soZmVudHJ5LVx1MDAzZWRpYnMpKVxubmV0L3NtYy9zbWNfaXNtLmMtNTIzLVx0XHRcdGxpc3RfYWRkKFx1MDAyNnNtY2QtXHUwMDNlbGlzdCwgXHUwMDI2ZmVudHJ5LVx1MDAzZWxpc3QpO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTUzMi1cdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtzbWM6IGFkZGluZyBzbWNkIGRldmljZSAlcyB3aXRoIHBuZXRpZCAlLjE2cyVzXFxuXCYjMzQ7LFxubmV0L3NtYy9zbWNfaXNtLmM6NTMzOlx0XHRcdFx0ICAgIGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSwgc21jZC1cdTAwM2VwbmV0aWQsXG5uZXQvc21jL3NtY19pc20uYy01MzQtXHRcdFx0XHQgICAgc21jZC1cdTAwM2VwbmV0aWRfYnlfdXNlciA/XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTM4LVx0XHRwcl93YXJuX3JhdGVsaW1pdGVkKFwmIzM0O3NtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGhvdXQgcG5ldGlkXFxuXCYjMzQ7LFxubmV0L3NtYy9zbWNfaXNtLmM6NTM5Olx0XHRcdFx0ICAgIGRldl9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2KSk7XG5uZXQvc21jL3NtY19pc20uYy01NDAtXHRyZXR1cm47XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTQyLVxubmV0L3NtYy9zbWNfaXNtLmM6NTQzOnN0YXRpYyB2b2lkIHNtY2RfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxubmV0L3NtYy9zbWNfaXNtLmMtNTQ0LXtcbm5ldC9zbWMvc21jX2lzbS5jOjU0NTpcdHN0cnVjdCBzbWNkX2RldiAqc21jZCA9IGRpYnNfZ2V0X3ByaXYoZGlicywgXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTU0Ni1cbm5ldC9zbWMvc21jX2lzbS5jLTU0Ny1cdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7c21jOiByZW1vdmluZyBzbWNkIGRldmljZSAlc1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX2lzbS5jOjU0ODpcdFx0XHQgICAgZGV2X25hbWUoXHUwMDI2ZGlicy1cdTAwM2VkZXYpKTtcbm5ldC9zbWMvc21jX2lzbS5jLTU0OS1cdHNtY2QtXHUwMDNlZ29pbmdfYXdheSA9IDE7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNTY4LSAqL1xubmV0L3NtYy9zbWNfaXNtLmM6NTY5OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcbm5ldC9zbWMvc21jX2lzbS5jOjU3MDpcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpXG5uZXQvc21jL3NtY19pc20uYy01NzEte1xubmV0L3NtYy9zbWNfaXNtLmM6NTcyOlx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcdTAwMjZzbWNfZGlic19jbGllbnQpO1xubmV0L3NtYy9zbWNfaXNtLmMtNTczLVx0c3RydWN0IHNtY19pc21fZXZlbnRfd29yayAqd3JrO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTU5My0gKi9cbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG5uZXQvc21jL3NtY19pc20uYy01OTUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbm5ldC9zbWMvc21jX2lzbS5jLTU5Ni17XG5uZXQvc21jL3NtY19pc20uYzo1OTc6XHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG5uZXQvc21jL3NtY19pc20uYy01OTgtXHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBOVUxMO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTYwOD1pbnQgc21jX2lzbV9zaWduYWxfc2h1dGRvd24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNjE1LVx0XHRyZXR1cm4gMDtcbm5ldC9zbWMvc21jX2lzbS5jOjYxNjpcdGlmICghbGdyLVx1MDAzZXNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KVxubmV0L3NtYy9zbWNfaXNtLmMtNjE3LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvc21jL3NtY19pc20uYy02MjEtXHRldl9pbmZvLmNvZGUgPSBJU01fRVZFTlRfUkVRVUVTVDtcbm5ldC9zbWMvc21jX2lzbS5jOjYyMjpcdGNvcHlfdG9fZGlic2dpZChcdTAwMjZpc21fcmdpZCwgXHUwMDI2bGdyLVx1MDAzZXBlZXJfZ2lkKTtcbm5ldC9zbWMvc21jX2lzbS5jOjYyMzpcdHJjID0gbGdyLVx1MDAzZXNtY2QtXHUwMDNlZGlicy1cdTAwM2VvcHMtXHUwMDNlc2lnbmFsX2V2ZW50KGxnci1cdTAwM2VzbWNkLVx1MDAzZWRpYnMsIFx1MDAyNmlzbV9yZ2lkLFxubmV0L3NtYy9zbWNfaXNtLmMtNjI0LVx0XHRcdFx0XHQgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTYzMD1pbnQgc21jX2lzbV9pbml0KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNjM2LVxubmV0L3NtYy9zbWNfaXNtLmM6NjM3Olx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcdTAwMjZzbWNfZGlic19jbGllbnQpO1xubmV0L3NtYy9zbWNfaXNtLmMtNjM4LVx0cmV0dXJuIHJjO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5jPTY0MT12b2lkIHNtY19pc21fZXhpdCh2b2lkKVxubmV0L3NtYy9zbWNfaXNtLmMtNjQyLXtcbm5ldC9zbWMvc21jX2lzbS5jOjY0MzpcdGRpYnNfdW5yZWdpc3Rlcl9jbGllbnQoXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcbm5ldC9zbWMvc21jX2lzbS5jLTY0NC19XG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtMTQtI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxubmV0L3NtYy9zbWNfaXNtLmg6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZGlicy5oXHUwMDNlXG5uZXQvc21jL3NtY19pc20uaC0xNi1cbi0tXG5uZXQvc21jL3NtY19pc20uaD02Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfaXNtX3dyaXRlKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdTY0IGRtYl90b2ssXG4tLVxubmV0L3NtYy9zbWNfaXNtLmgtNzEtXG5uZXQvc21jL3NtY19pc20uaDo3MjpcdHJjID0gc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2Vtb3ZlX2RhdGEoc21jZC1cdTAwM2VkaWJzLCBkbWJfdG9rLCBpZHgsIHNmLCBvZmZzZXQsXG5uZXQvc21jL3NtY19pc20uaC03My1cdFx0XHRcdCAgICAgICBkYXRhLCBsZW4pO1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oPTg5PXN0YXRpYyBpbmxpbmUgYm9vbCBzbWNfaXNtX2lzX2VtdWxhdGVkKHN0cnVjdCBzbWNkX2RldiAqc21jZClcbm5ldC9zbWMvc21jX2lzbS5oLTkwLXtcbm5ldC9zbWMvc21jX2lzbS5oOjkxOlx0dTE2IGNoaWQgPSBzbWNkLVx1MDAzZWRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cdTAwM2VkaWJzKTtcbm5ldC9zbWMvc21jX2lzbS5oLTkyLVxuLS1cbm5ldC9zbWMvc21jX2lzbS5oLTk1LVxubmV0L3NtYy9zbWNfaXNtLmg6OTY6c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfbG9vcGJhY2soc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxubmV0L3NtYy9zbWNfaXNtLmgtOTcte1xubmV0L3NtYy9zbWNfaXNtLmg6OTg6XHRyZXR1cm4gKGRpYnMtXHUwMDNlb3BzLVx1MDAzZWdldF9mYWJyaWNfaWQoZGlicykgPT0gRElCU19MT09QQkFDS19GQUJSSUMpO1xubmV0L3NtYy9zbWNfaXNtLmgtOTktfVxubmV0L3NtYy9zbWNfaXNtLmgtMTAwLVxubmV0L3NtYy9zbWNfaXNtLmg6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3NtY2RnaWQoc3RydWN0IHNtY2RfZ2lkICpzZ2lkLCB1dWlkX3QgKmRpYnNfZ2lkKVxubmV0L3NtYy9zbWNfaXNtLmgtMTAyLXtcbi0tXG5uZXQvc21jL3NtY19pc20uaC0xMDQtXG5uZXQvc21jL3NtY19pc20uaDoxMDU6XHRtZW1jcHkoXHUwMDI2dGVtcCwgZGlic19naWQsIHNpemVvZihzZ2lkLVx1MDAzZWdpZCkpO1xubmV0L3NtYy9zbWNfaXNtLmgtMTA2LVx0c2dpZC1cdTAwM2VnaWQgPSBudG9obGwodGVtcCk7XG5uZXQvc21jL3NtY19pc20uaDoxMDc6XHRtZW1jcHkoXHUwMDI2dGVtcCwgKHVpbnQ4X3QgKilkaWJzX2dpZCAmIzQzOyBzaXplb2Yoc2dpZC1cdTAwM2VnaWQpLFxubmV0L3NtYy9zbWNfaXNtLmgtMTA4LVx0ICAgICAgIHNpemVvZihzZ2lkLVx1MDAzZWdpZF9leHQpKTtcbi0tXG5uZXQvc21jL3NtY19pc20uaC0xMTEtXG5uZXQvc21jL3NtY19pc20uaDoxMTI6c3RhdGljIGlubGluZSB2b2lkIGNvcHlfdG9fZGlic2dpZCh1dWlkX3QgKmRpYnNfZ2lkLCBzdHJ1Y3Qgc21jZF9naWQgKnNnaWQpXG5uZXQvc21jL3NtY19pc20uaC0xMTMte1xuLS1cbm5ldC9zbWMvc21jX2lzbS5oLTExNi1cdHRlbXAgPSBodG9ubGwoc2dpZC1cdTAwM2VnaWQpO1xubmV0L3NtYy9zbWNfaXNtLmg6MTE3Olx0bWVtY3B5KGRpYnNfZ2lkLCBcdTAwMjZ0ZW1wLCBzaXplb2Yoc2dpZC1cdTAwM2VnaWQpKTtcbm5ldC9zbWMvc21jX2lzbS5oLTExOC1cdHRlbXAgPSBodG9ubGwoc2dpZC1cdTAwM2VnaWRfZXh0KTtcbm5ldC9zbWMvc21jX2lzbS5oOjExOTpcdG1lbWNweSgodWludDhfdCAqKWRpYnNfZ2lkICYjNDM7IHNpemVvZihzZ2lkLVx1MDAzZWdpZCksIFx1MDAyNnRlbXAsXG5uZXQvc21jL3NtY19pc20uaC0xMjAtXHQgICAgICAgc2l6ZW9mKHNnaWQtXHUwMDNlZ2lkX2V4dCkpO1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz0xMDE9c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqcG5ldF9uYW1lKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xNzEtXHRcdFx0XHRcdCAgICBcJiMzNDslLjE2c1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX3BuZXQuYzoxNzI6XHRcdFx0XHRcdCAgICBkZXZfbmFtZShcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KSxcbm5ldC9zbWMvc21jX3BuZXQuYy0xNzMtXHRcdFx0XHRcdCAgICBzbWNkLVx1MDAzZXBuZXRpZCk7XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTMzND1zdGF0aWMgc3RydWN0IHNtY2RfZGV2ICpzbWNfcG5ldF9maW5kX3NtY2QoY2hhciAqc21jZF9uYW1lKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0zMzktXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHNtY2RfZGV2LCBcdTAwMjZzbWNkX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcbm5ldC9zbWMvc21jX3BuZXQuYzozNDA6XHRcdGlmICghc3RybmNtcChkZXZfbmFtZShcdTAwMjZzbWNkX2Rldi1cdTAwM2VkaWJzLVx1MDAzZWRldiksIHNtY2RfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYy0zNDEtXHRcdFx0ICAgICBJQl9ERVZJQ0VfTkFNRV9NQVggLSAxKSB8fFxubmV0L3NtYy9zbWNfcG5ldC5jOjM0MjpcdFx0ICAgIChzbWNkX2Rldi1cdTAwM2VkaWJzLVx1MDAzZWRldi5wYXJlbnQgXHUwMDI2XHUwMDI2XG5uZXQvc21jL3NtY19wbmV0LmM6MzQzOlx0XHQgICAgICFzdHJuY21wKGRldl9uYW1lKHNtY2RfZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCksIHNtY2RfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYy0zNDQtXHRcdFx0ICAgICAgSUJfREVWSUNFX05BTUVfTUFYIC0gMSkpKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz00MTY9c3RhdGljIGludCBzbWNfcG5ldF9hZGRfaWIoc3RydWN0IHNtY19wbmV0dGFibGUgKnBuZXR0YWJsZSwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy00NDEtXHRcdFx0cHJfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtzbWM6IHNtY2QgZGV2aWNlICVzIGFwcGxpZWQgdXNlciBkZWZpbmVkIHBuZXRpZCAlLjE2c1xcblwmIzM0Oyxcbm5ldC9zbWMvc21jX3BuZXQuYzo0NDI6XHRcdFx0XHRcdCAgICBkZXZfbmFtZShcdTAwMjZzbWNkLVx1MDAzZWRpYnMtXHUwMDNlZGV2KSxcbm5ldC9zbWMvc21jX3BuZXQuYy00NDMtXHRcdFx0XHRcdCAgICBzbWNkLVx1MDAzZXBuZXRpZCk7XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTEyMDI9aW50IHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2RkZXYpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMTYtXHRcdCAgICAoIXN0cm5jbXAodG1wX3BlLVx1MDAzZWliX25hbWUsXG5uZXQvc21jL3NtY19wbmV0LmM6MTIxNzpcdFx0XHQgICAgICAgZGV2X25hbWUoXHUwMDI2c21jZGRldi1cdTAwM2VkaWJzLVx1MDAzZWRldiksXG5uZXQvc21jL3NtY19wbmV0LmMtMTIxOC1cdFx0XHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cdTAwM2VpYl9uYW1lKSkgfHxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjE5Olx0XHQgICAgIChzbWNkZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCBcdTAwMjZcdTAwMjZcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjIwLVx0XHQgICAgICAhc3RybmNtcCh0bXBfcGUtXHUwMDNlaWJfbmFtZSxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjIxOlx0XHRcdCAgICAgICBkZXZfbmFtZShzbWNkZGV2LVx1MDAzZWRpYnMtXHUwMDNlZGV2LnBhcmVudCksXG5uZXQvc21jL3NtY19wbmV0LmMtMTIyMi1cdFx0XHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cdTAwM2VpYl9uYW1lKSkpKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5MwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIFNNQyBXcml0ZSBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIGBzbWNfaXNtX3dyaXRlYCBmdW5jdGlvbiBjYWxsLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgc3RhY2suIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKndobyoqIGFuZCB0aGUgKipob3cqKiDigJMgc3BlY2lmaWNhbGx5LCAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgZnVuY3Rpb24gYW5kIHdoYXQgdGhlIGV4ZWN1dGlvbiBwYXRoLCB0aGUgY2FsbCAqc3RhY2sqLCBsb29rcyBsaWtlIHRoYXQgbGVhZHMgdG8gaXQuIEVzc2VudGlhbGx5LCBJJiMzOTttIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvZGUmIzM5O3MgZXhlY3V0aW9uIGZsb3cgbGVhZGluZyB1cCB0byB0aGUgcG9pbnQgb2YgaW50ZXJlc3QuIFRoaXMgaXMgYSBjb21tb24gZGVidWdnaW5nIHRlY2huaXF1ZTsgYnkgZXhhbWluaW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucywgSSBjYW4gb2Z0ZW4gaW5mZXIgdGhlIGNvbnRleHQgYW5kIHRoZSBwdXJwb3NlIG9mIHRoZSB3cml0ZSBvcGVyYXRpb24uIEtub3dpbmcgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGJlaW5nIHdyaXR0ZW4sIGFuZCBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSB3cml0ZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgdGVsbHMgdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY19pc21fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2lzbS5oPTY0PWludCBzbWNkX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcbm5ldC9zbWMvc21jX2lzbS5oLTY1LVxubmV0L3NtYy9zbWNfaXNtLmg6NjY6c3RhdGljIGlubGluZSBpbnQgc21jX2lzbV93cml0ZShzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsIHU2NCBkbWJfdG9rLFxubmV0L3NtYy9zbWNfaXNtLmgtNjctXHRcdFx0XHR1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbm5ldC9zbWMvc21jX3R4LmM9MzAzPWludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXG4tLVxubmV0L3NtYy9zbWNfdHguYy0zMDctXG5uZXQvc21jL3NtY190eC5jOjMwODpcdHJjID0gc21jX2lzbV93cml0ZShjb25uLVx1MDAzZWxnci1cdTAwM2VzbWNkLCBjb25uLVx1MDAzZXBlZXJfdG9rZW4sXG5uZXQvc21jL3NtY190eC5jLTMwOS1cdFx0XHQgICBjb25uLVx1MDAzZXBlZXJfcm1iZV9pZHgsIHNpZ25hbCwgY29ubi1cdTAwM2V0eF9vZmYgJiM0Mzsgb2Zmc2V0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzkxNgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBzbWNkX3R4X2lzbV93cml0ZWAgQ2FsbGVycyoqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgc21jZF90eF9pc21fd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciByZXNlYXJjaGluZy4gVGhpcyBnaXZlcyBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZnVuY3Rpb24mIzM5O3Mgb3ZlcmFsbCBwdXJwb3NlIGFuZCBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21jZF90eF9pc21fd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2NkYy5jPTIzNz1pbnQgc21jZF9jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxuLS1cbm5ldC9zbWMvc21jX2NkYy5jLTI1My1cdGNkYy5jb25zLmNvbm5fc3RhdGVfZmxhZ3MgPSBjb25uLVx1MDAzZWxvY2FsX3R4X2N0cmwuY29ubl9zdGF0ZV9mbGFncztcbm5ldC9zbWMvc21jX2NkYy5jOjI1NDpcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgXHUwMDI2Y2RjLCBzaXplb2YoY2RjKSwgMCwgMSk7XG5uZXQvc21jL3NtY19jZGMuYy0yNTUtXHRpZiAocmMpXG4tLVxubmV0L3NtYy9zbWNfdHguYz0xODE9aW50IHNtY190eF9zZW5kbXNnKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG4tLVxubmV0L3NtYy9zbWNfdHguYy0zMDItLyogc25kYnVmIGNvbnN1bWVyOiBhY3R1YWwgZGF0YSB0cmFuc2ZlciBvZiBvbmUgdGFyZ2V0IGNodW5rIHdpdGggSVNNIHdyaXRlICovXG5uZXQvc21jL3NtY190eC5jOjMwMzppbnQgc21jZF90eF9pc21fd3JpdGUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuLFxubmV0L3NtYy9zbWNfdHguYy0zMDQtXHRcdCAgICAgIHUzMiBvZmZzZXQsIGludCBzaWduYWwpXG4tLVxubmV0L3NtYy9zbWNfdHguYz00MjE9c3RhdGljIGludCBzbWNkX3R4X3JkbWFfd3JpdGVzKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgc2l6ZV90IGxlbixcbi0tXG5uZXQvc21jL3NtY190eC5jLTQzNS1cbm5ldC9zbWMvc21jX3R4LmM6NDM2Olx0XHRcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgZGF0YSwgc3JjX2xlbiwgZHN0X29mZiAmIzQzO1xubmV0L3NtYy9zbWNfdHguYy00MzctXHRcdFx0XHRcdCAgICAgICBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyksIDApO1xuLS1cbm5ldC9zbWMvc21jX3R4Lmg9NDA9dm9pZCBzbWNfdHhfY29uc3VtZXJfdXBkYXRlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmb3JjZSk7XG5uZXQvc21jL3NtY190eC5oOjQxOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXG5uZXQvc21jL3NtY190eC5oLTQyLVx0XHQgICAgICB1MzIgb2Zmc2V0LCBpbnQgc2lnbmFsKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2MzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgRElCUyBNZXNzYWdpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBzZWUgYHNtY190eF9zZW5kbXNnYCBhbmQgYHNtY2RfY2RjX21zZ19zZW5kYCBib3RoIHVsdGltYXRlbHkgcmVseSBvbiBgc21jZF90eF9pc21fd3JpdGVgLiBUaGF0JiMzOTtzIHRoZSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBoZXJlLCB0aGUgY29tbW9uIGRlbm9taW5hdG9yLiBOb3csIEkgd2FudCB0byB0cmFjZSB0aGUgZGF0YSBmbG93IHRocm91Z2ggdGhlIERJQlMgbG9vcGJhY2sgZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQgb3ZlcmFsbCBESUJTIGZ1bmN0aW9uYWxpdHkuIFNpbmNlIEkmIzM5O20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIEkmIzM5O2xsIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIExldCYjMzk7cyBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCBgZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jYCBhbmQgdGhlbiBnZXQgaW50byB0aGUgbG9vcGJhY2sgc3BlY2lmaWMgY29kZSBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIERJQlMgbWVjaGFuaWNzIGFuZCByZWdpc3RyYXRpb24gZGV0YWlscyBpbiB0aG9zZSBmaWxlcywgd2hpY2ggd2lsbCBjbGFyaWZ5IGhvdyB0aGF0IGRhdGEgZ2V0cyB3cml0dGVuIHZpYSB0aGUgdW5kZXJseWluZyBJU00gaW50ZXJmYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzNTpcdHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiAyMzY6XHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gMjM3Olx0XHRcdFx0ICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcbiAyMzg6XHR7XG4gMjM5Olx0XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gMjQwOlx0XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4gMjQxOlx0XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIDI0MjpcdFx0dTE2IHNfbWFzaztcbiAyNDM6XHRcdHU4IGNsaWVudF9pZDtcbiAyNDQ6XHRcdHUzMiBzYmFfaWR4O1xuIDI0NTpcdFxuIDI0NjpcdFx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG4gMjQ3Olx0XG4gMjQ4Olx0XHRyZWFkX2xvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjQ5Olx0XHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXHUwMDNlZG1iX2h0LCB0bXBfbm9kZSwgbGlzdCwgZG1iX3Rvaykge1xuIDI1MDpcdFx0XHRpZiAodG1wX25vZGUtXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xuIDI1MTpcdFx0XHRcdHJtYl9ub2RlID0gdG1wX25vZGU7XG4gMjUyOlx0XHRcdFx0YnJlYWs7XG4gMjUzOlx0XHRcdH1cbiAyNTQ6XHRcdH1cbiAyNTU6XHRcdGlmICghcm1iX25vZGUpIHtcbiAyNTY6XHRcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjU3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI1ODpcdFx0fVxuIDI1OTpcdFx0aWYgKCh1NjQpb2Zmc2V0ICYjNDM7IHNpemUgXHUwMDNlIHJtYl9ub2RlLVx1MDAzZWxlbikge1xuIDI2MDpcdFx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyNjE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMjYyOlx0XHR9XG4gMjYzOlx0XG4gMjY0Olx0XHRtZW1jcHkoKGNoYXIgKilybWJfbm9kZS1cdTAwM2VjcHVfYWRkciAmIzQzOyBvZmZzZXQsIGRhdGEsIHNpemUpO1xuIDI2NTpcdFx0c2JhX2lkeCA9IHJtYl9ub2RlLVx1MDAzZXNiYV9pZHg7XG4gMjY2Olx0XHRyZWFkX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyNjc6XHRcbiAyNjg6XHRcdGlmICghc2YpXG4gMjY5Olx0XHRcdHJldHVybiAwO1xuIDI3MDpcdFxuIDI3MTpcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjcyOlx0XHRjbGllbnRfaWQgPSBkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XG4gMjczOlx0XHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XG4gMjc0Olx0XHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcdTAwMjZcdTAwMjYgZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxuIDI3NTpcdFx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuIDI3NjpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiAyNzc6XHRcbiAyNzg6XHRcdHJldHVybiAwO1xuIDI3OTpcdH1cbiAyODA6XHRcbiAyODE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbiAyODI6XHRcdC5nZXRfZmFicmljX2lkID0gZGlic19sb19nZXRfZmFicmljX2lkLFxuIDI4MzpcdFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXG4gMjg0Olx0XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgxNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTG9jayBNb2RpZmljYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSW4gdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24sIEkgc2VlIGEgbG9jayBhY3F1aXNpdGlvbiBjaGFuZ2VkLiBCZWZvcmUgdGhlIHBhdGNoLCBpdCB3YXMgYSBzaW1wbGUgYHNwaW5fbG9ja2AgYW5kIGBzcGluX3VubG9ja2Agc2VxdWVuY2UuIE5vdywgaXQmIzM5O3MgYHNwaW5fbG9ja19pcnFzYXZlYCBhbmQgYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoeSogdGhpcyBjaGFuZ2U/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgdGhhdCBuZWNlc3NpdGF0ZWQgdGhpcyBtb2RpZmljYXRpb24/CgpUaGUgZGlmZmVyZW5jZSBpcyBzaWduaWZpY2FudDogYF9pcnFzYXZlYCBpbXBsaWVzIHRoZSBuZWVkIHRvIGRpc2FibGUgaW50ZXJydXB0cyAoYW5kIHNhdmUgdGhlIGN1cnJlbnQgaW50ZXJydXB0IHN0YXRlKSBkdXJpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb24uIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBmbGF3LiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBhIHJhY2UgY29uZGl0aW9uIG9yIGludGVycnVwdC1yZWxhdGVkIGlzc3VlIHdhcyBkaXNjb3ZlcmVkLiBUaGUgYGRpYnMtJmd0O2xvY2tgIGlzIHByb2JhYmx5IHByb3RlY3Rpbmcgc29tZXRoaW5nIHRoYXQgaXMgYWxzbyBhY2Nlc3NlZCBmcm9tIGludGVycnVwdCBoYW5kbGVycywgb3Igc29tZXRoaW5nIHRoYXQgaXMgc2Vuc2l0aXZlIHRvIGludGVycnVwdCBsYXRlbmN5LgoKVG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIEkgbmVlZCB0byBzZWUgKmV2ZXJ5d2hlcmUqIHRoaXMgYGRpYnMtJmd0O2xvY2tgIGlzIHVzZWQuIEkmIzM5O2xsIHNlYXJjaCB0aGUga2VybmVsIHNvdXJjZSBmb3IgYWxsIGluc3RhbmNlcyBvZiBgZGlicy0mZ3Q7bG9ja2AuIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBlbnRpcmUgdXNhZ2UgcGF0dGVybi4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBzeXN0ZW0uIEFyZSBvdGhlciBmdW5jdGlvbnMgYWxzbyBjaGFuZ2luZyB0byBpbnRlcnJ1cHQgc2F2aW5nIHZlcnNpb25zPyBUaGF0IGNvbnRleHQgd2lsbCBoZWxwIG1lIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlIGFuZCBpZiB0aGUgY2hhbmdlIGlzIGFwcHJvcHJpYXRlLiBJZiB0aGUgZXhpc3RpbmcgY29kZSBhbHJlYWR5IGhhcyBhcHByb3ByaWF0ZSB1c2VzLCB0aGVyZSBtYXkgYmUgYW4gaXNzdWUgd2l0aCB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgdGltZSB0byBkaWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpYnMtXHUwMDNlbG9jayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEwNy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEwOS1cdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTEwOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTMyPXN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVx0aWYgKGxhc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYwLVx0XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbZG1iX25vZGUtXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yMzU9c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzE6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc1LVx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTQwPXN0YXRpYyB2b2lkIGRpYnNfc2V0dXBfZm9yd2FyZGluZyhzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudCxcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDU6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Ni1cdGRpYnMtXHUwMDNlc3Vic1tjbGllbnQtXHUwMDNlaWRdID0gY2xpZW50O1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ3Olx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00OC19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTgzPWludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05MS1cdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkzLVx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMy1cdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudC1cdTAwM2VpZF0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwNDpcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDUtXHRcdGNsaWVudHNbY2xpZW50LVx1MDAzZWlkXS1cdTAwM2VvcHMtXHUwMDNlZGVsX2RldihkaWJzKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExOTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIwLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMzU9c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDEtXHRcdHJldHVybiBkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MjpcdHNwaW5fbG9ja19pbml0KFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQzLVx0ZGlicy1cdTAwM2VkZXYucmVsZWFzZSA9IGRpYnNfZGV2X3JlbGVhc2U7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIyMj12b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjk6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyAmIzQzOyYjNDM7aSlcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzEtXHRcdGRpYnMtXHUwMDNlc3Vic1tpXSA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMyOlx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzMtXG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjgzPXN0YXRpYyBpbnQgaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iLFxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMS1cdGRtYi1cdTAwM2VkbWJfdG9rID0gY21kLnJlc3BvbnNlLmRtYl90b2s7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTI6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMy1cdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IGNsaWVudC1cdTAwM2VpZDtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNDpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTUtb3V0OlxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMxOT1zdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMzMS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzMjpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzMzLVx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYi1cdTAwM2VpZHggLSBJU01fRE1CX0JJVF9PRkZTRVRdID0gTk9fRElCU19DTElFTlQ7XG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMzQ6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM1LVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTQ5OT1zdGF0aWMgaXJxcmV0dXJuX3QgaXNtX2hhbmRsZV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MTItXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MTM6XHRzcGluX2xvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cdGlzbS1cdTAwM2VzYmEtXHUwMDNlcyA9IDA7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTM4LVx0fVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NTM5Olx0c3Bpbl91bmxvY2soXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0MC1cdHJldHVybiBJUlFfSEFORExFRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MDkKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMb2NraW5nIENvbnRleHQgaW4gdGhlIERhdGEgVHJhbnNmZXIgTWVjaGFuaXNtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBkaWJzYCBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCBoYW5kbGVzIGludGVycnVwdHMsIHNwZWNpZmljYWxseSBkYXRhIHRyYW5zZmVycy4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBkaWJzLSZndDtsb2NrYCBpcyBiZWluZyBncmFiYmVkIHdpdGhpbiB0aGUgaGFyZGlycSBvciBzb2Z0aXJxIGNvbnRleHQuIFRoZSBgc3Bpbl9sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jaylgIGNhbGwgaW4gYGlzbV9oYW5kbGVfaXJxYCwgb3IgcG90ZW50aWFsbHkgZWxzZXdoZXJlIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAsIG1ha2VzIHRoaXMgcHJldHR5IGNsZWFyLiBUaGlzIGltcGxpZXMgdGhhdCB3ZSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCBhYm91dCBwb3RlbnRpYWwgY29udGVudGlvbiBhbmQgcHJpb3JpdHkgaXNzdWVzLgoKTm93LCBJIHNlZSB0aGF0IHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uIGNhbGxzIGBkaWJzLSZndDtzdWJzW2NsaWVudF9pZF0tJmd0O29wcy0mZ3Q7aGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spYCAqdW5kZXIqIHRoZSBwcm90ZWN0aW9uIG9mIGBkaWJzLSZndDtsb2NrYC4gVGhpcyBzZWVtcyBsaWtlIHRoZSBjcml0aWNhbCBwYXRoIGZvciB0aGUgZGF0YSBtb3ZlbWVudCB0cmlnZ2VyZWQgYnkgaW50ZXJydXB0cy4gSXQgbWVhbnMgdGhhdCBhbnkgb3BlcmF0aW9uIHdpdGhpbiB0aGlzIGBoYW5kbGVfaXJxYCBjYWxsIGlzIGluaGVyZW50bHkgc2VyaWFsaXplZCBieSB0aGF0IHNwaW5sb2NrLgoKVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaGFuZGxlX2lycWAgZnVuY3Rpb24uIExvb2tzIGxpa2UgaW4gdGhpcyBTTUMgY29udGV4dCwgdGhlIGBoYW5kbGVfaXJxYCBpcyByZXNvbHZlZCB0byBgc21jZF9oYW5kbGVfaXJxYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24gbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHdpdGggcmVnYXJkIHRvIHRoZSBsb2NrcyBhbmQgZGF0YSBhY2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NtY2RfaGFuZGxlX2lycSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pc20uYz0zMj1zdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9ldmVudChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsXG5uZXQvc21jL3NtY19pc20uYy0zMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xubmV0L3NtYy9zbWNfaXNtLmM6MzQ6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfaXJxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdW5zaWduZWQgaW50IGRtYm5vLFxubmV0L3NtYy9zbWNfaXNtLmMtMzUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzayk7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmM9Mzc9c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudF9vcHMgc21jX2NsaWVudF9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaXNtLmMtNDAtXHQuaGFuZGxlX2V2ZW50ID0gc21jZF9oYW5kbGVfZXZlbnQsXG5uZXQvc21jL3NtY19pc20uYzo0MTpcdC5oYW5kbGVfaXJxID0gc21jZF9oYW5kbGVfaXJxLFxubmV0L3NtYy9zbWNfaXNtLmMtNDItfTtcbi0tXG5uZXQvc21jL3NtY19pc20uYz01Njk9c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxuLS1cbm5ldC9zbWMvc21jX2lzbS5jLTU5My0gKi9cbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG5uZXQvc21jL3NtY19pc20uYy01OTUtXHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyMjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczoKCioqRGl2aW5nIGludG8gYHNtY2RfaGFuZGxlX2lycWAqKgoKQWxyaWdodCwgdGhlIHRhc2sgYXQgaGFuZCBpcyB0byB1bmRlcnN0YW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgaW50ZXJydXB0cyB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc21jZF9oYW5kbGVfaXJxYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgbGlrZWx5IHJlc2lkZXMgaW4gYG5ldC9zbWMvc21jX2lzbS5jYCwgc28gSSYjMzk7bGwgcHVsbCB0aGF0IHVwIGltbWVkaWF0ZWx5LiBNeSBtZW50YWwgbW9kZWwgaXMgYWxyZWFkeSBwcmltZWQgd2l0aCB0aGUga25vd2xlZGdlIHRoYXQgU01DLCBvciBTaGFyZWQgTWVtb3J5IENvbW11bmljYXRpb25zLCBuZWNlc3NpdGF0ZXMgcHJldHR5IHRpZ2h0IHN5bmNocm9uaXphdGlvbiwgZXNwZWNpYWxseSBhdCB0aGUgaGFyZHdhcmUgaW50ZXJydXB0IGxldmVsLiBTbywgSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIGxvZ2ljIHJlbGF0ZWQgdG8gc2hhcmVkIG1lbW9yeSBhY2Nlc3MsIHBvdGVudGlhbGx5IHNwaW5sb2NrcyBvciBvdGhlciBjb25jdXJyZW5jeSBtZWNoYW5pc21zLCBhbmQgaW50ZXJydXB0IGRpc2FibGluZy9lbmFibGluZyBhcm91bmQgY3JpdGljYWwgc2VjdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgdGhlIGZvbGxvd2luZzogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBpZGVudGlmeSB0aGUgc3BlY2lmaWMgU01DIGNvbm5lY3Rpb24gdGhlIGludGVycnVwdCBpcyByZWxhdGVkIHRvPyBXaGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBwcm9jZXNzIHRoZSBpbnRlcnJ1cHQg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBjb21wbGV0aW9ucywgc2VuZCBjb21wbGV0aW9ucywgZXJyb3JzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ3J1Y2lhbGx5LCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIGFjdHVhbCBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIGhvdyBkYXRhIGlzIGNvcGllZCBmcm9tIHNoYXJlZCBtZW1vcnkgYnVmZmVycywgaWYgYXBwbGljYWJsZS4gQW5kIGZpbmFsbHksIEkmIzM5O2xsIGJlIGFzc2Vzc2luZyB0aGUgcG90ZW50aWFsIGZvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciByYWNlIGNvbmRpdGlvbnMgd2l0aGluIHRoaXMgaW50ZXJydXB0IGhhbmRsZXIuIFRpbWUgdG8gZGlnIGluIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvc21jX2lzbS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1ODU6XHR9XG4gNTg2Olx0XG4gNTg3Olx0LyogU01DRCBEZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuIENhbGxlZCBmcm9tIElTTSBkZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuXG4gNTg4Olx0ICogUGFyYW1ldGVycyBhcmUgdGhlIGlzbSBkZXZpY2UgcG9pbnRlciwgRE1CIG51bWJlciwgYW5kIHRoZSBETUJFIGJpdG1hc2suXG4gNTg5Olx0ICogRmluZCB0aGUgY29ubmVjdGlvbiBhbmQgc2NoZWR1bGUgdGhlIHRhc2tsZXQgZm9yIHRoaXMgY29ubmVjdGlvbi5cbiA1OTA6XHQgKlxuIDU5MTpcdCAqIENvbnRleHQ6XG4gNTkyOlx0ICogLSBGdW5jdGlvbiBjYWxsZWQgaW4gSVJRIGNvbnRleHQgZnJvbSBJU00gZGV2aWNlIGRyaXZlciBJUlEgaGFuZGxlci5cbiA1OTM6XHQgKi9cbiA1OTQ6XHRzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXG4gNTk1Olx0XHRcdFx0ICAgIHUxNiBkbWJlbWFzaylcbiA1OTY6XHR7XG4gNTk3Olx0XHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XG4gNTk4Olx0XHRzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4gPSBOVUxMO1xuIDU5OTpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiA2MDA6XHRcbiA2MDE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNnNtY2QtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIDYwMjpcdFx0Y29ubiA9IHNtY2QtXHUwMDNlY29ubltkbWJub107XG4gNjAzOlx0XHRpZiAoY29ubiBcdTAwMjZcdTAwMjYgIWNvbm4tXHUwMDNla2lsbGVkKVxuIDYwNDpcdFx0XHR0YXNrbGV0X3NjaGVkdWxlKFx1MDAyNmNvbm4tXHUwMDNlcnhfdHNrbGV0KTtcbiA2MDU6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2c21jZC1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gNjA2Olx0fVxuIDYwNzpcdFxuIDYwODpcdGludCBzbWNfaXNtX3NpZ25hbF9zaHV0ZG93bihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbiA2MDk6XHR7XG4gNjEwOlx0XHRpbnQgcmMgPSAwO1xuIDYxMTpcdFx0dW5pb24gc21jZF9zd19ldmVudF9pbmZvIGV2X2luZm87XG4gNjEyOlx0XHR1dWlkX3QgaXNtX3JnaWQ7XG4gNjEzOlx0XG4gNjE0Olx0XHRpZiAobGdyLVx1MDAzZXBlZXJfc2h1dGRvd24pXG4gNjE1Olx0XHRcdHJldHVybiAwO1xuIDYxNjpcdFx0aWYgKCFsZ3ItXHUwMDNlc21jZC1cdTAwM2VkaWJzLVx1MDAzZW9wcy1cdTAwM2VzaWduYWxfZXZlbnQpXG4gNjE3Olx0XHRcdHJldHVybiAwO1xuIDYxODpcdFxuIDYxOTpcdFx0bWVtY3B5KGV2X2luZm8udWlkLCBsZ3ItXHUwMDNlaWQsIFNNQ19MR1JfSURfU0laRSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTQyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBkaWJzX2xvb3BiYWNrLmNgIGNvZGUuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGxvY2tpbmcgaW4gdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBvbiB0aGUgY3JpdGljYWwgcGF0aCwgY2FsbGVkIGR1cmluZyBkYXRhIHRyYW5zbWlzc2lvbiDigJMgc3BlY2lmaWNhbGx5IHRocm91Z2ggdGhlIGBzbWNfdHhfc2VuZG1zZ2AgZmxvdy4gSXQgdWx0aW1hdGVseSBib2lscyBkb3duIHRvIGBvcHMtJmd0O21vdmVfZGF0YWAsIHdoaWNoIHJlc29sdmVzIHRvIGBkaWJzX2xvX21vdmVfZGF0YWAuIFRoZSBjb2RlIHVzZXMgYSBwbGFpbiBgc3Bpbl9sb2NrKCZhbXA7ZGlicy0mZ3Q7bG9jaylgLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBleWVicm93cyBhcmUgcmFpc2luZy4KClRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCwgaXMgdGhhdCBgZGlicy0mZ3Q7bG9ja2AgaXMgYWxzbyBhY3F1aXJlZCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgaW4gc29tZSBvdGhlciBwbGFjZXMsIGluY2x1ZGluZyBwb3RlbnRpYWxseSB3aXRoaW4gaW50ZXJydXB0IGhhbmRsZXJzIHRoZW1zZWx2ZXMuIElmIGFuIGludGVycnVwdCB3ZXJlIHRvIG9jY3VyIHdoaWxlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgaG9sZGluZyB0aGF0IGxvY2ssIHdl4oCZcmUgc2V0dGluZyBvdXJzZWx2ZXMgdXAgZm9yIGEgbmFzdHkgbG9ja2RlcCB3YXJuaW5nLCBvciB3b3JzZSwgYSBjb21wbGV0ZSBkZWFkbG9jay4gQ2xhc3NpYy4KClRoZSBzdWdnZXN0ZWQgcGF0Y2ggdG8gdXNlIGBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKWAgaXMgdGhlIHJpZ2h0IHNvbHV0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JyZWN0IGxldmVsIG9mIHByb3RlY3Rpb24uIFdlIG5lZWQgdG8gc2F2ZSB0aGUgaW50ZXJydXB0IHN0YXRlIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sgYW5kIHRoZW4gcmVzdG9yZSBpdC4gSXQmIzM5O3MgdGhlIG1vc3QgY29tbW9uIGFuZCBjb3JyZWN0IGFwcHJvYWNoIGluIHRoZXNlIHNpdHVhdGlvbnMuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgcmVhY2hhYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQuIEkgbmVlZCB0byB2ZXJpZnkgd2hldGhlciBESUJTIGFuZCBESUJTX0xPIGFyZSBldmVuIGNvbmZpZ3VyZWQgYW5kIGF2YWlsYWJsZSBvbiB0aGlzIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AsIGBuZXQvc21jL0tjb25maWdgLCBhbmQgYW55dGhpbmcgaW4gYGFyY2gveDg2L0tjb25maWdgIHRoYXQgbWlnaHQgY29udHJvbCB0aGVzZSBmZWF0dXJlcy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50IHRvIHRoaXMgdGFyZ2V0LiBJJiMzOTtsbCBtYWtlIHN1cmUgdGhlcmUmIzM5O3Mgbm8gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gdGhlIGFyY2hpdGVjdHVyZSwgd2hpY2ggbWlnaHQgbWFrZSB0aGlzIGEgbm9uLWlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdGNvbmZpZyBESUJTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgSW50ZXJuYWwgQnVmZmVyIFNoYXJpbmcgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCBuXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XG4gICA3Olx0XHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXG4gICA4Olx0XHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxuICAgOTpcdFxuICAxMDpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuICAxMTpcdFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXG4gIDEyOlx0XHQgIFRoZSBtb2R1bGUgbmFtZSBpcyBkaWJzLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBESUJTX0xPXG4gIDE1Olx0XHRib29sIFwmIzM0O0ludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBESUJTXG4gIDE3Olx0XHRkZWZhdWx0IG5cbiAgMTg6XHRcdGhlbHBcbiAgMTk6XHRcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuICAyMDpcdFx0ICBuYW1lZCBsbyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgd2hlbiBjb21tdW5pY2F0aW9uXG4gIDIxOlx0XHQgIG9jY3VycyB3aXRoaW4gdGhlIHNhbWUgT1MuIFRoaXMgaGVscHMgaW4gY29udmVuaWVudCB0ZXN0aW5nIG9mXG4gIDIyOlx0XHQgIGRpYnMgY2xpZW50cywgc2luY2UgZGlicyBsb29wYmFjayBpcyBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUgb3JcbiAgMjM6XHRcdCAgaGFyZHdhcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MTc5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIFJldmlldyBvZiBESUJTX0xPIGZvciBUZXN0aW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIHdoYXQmIzM5O3MgdGhpcyBgRElCU19MT2AgdGhpbmc/IEFoLCB0aGUgaGVscCB0ZXh0IGNsYXJpZmllczogaXQgY3JlYXRlcyBhIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgZGV2aWNlLCBgbG9gLiBTbywgYSBsb29wYmFjayBmb3IgRElCUyBkYXRhIHRyYW5zZmVyIHdpdGhpbiBhIHNpbmdsZSBPUy4gVGhlIGtleSB0YWtlYXdheSBpcyBpbmRlcGVuZGVuY2UgZnJvbSBhcmNoaXRlY3R1cmUgb3IgaGFyZHdhcmU7IHBlcmZlY3QgZm9yIGNvbnZlbmllbnQgdGVzdGluZyBvZiBESUJTIGNsaWVudHMuIFRoYXQmIzM5O3MgYWN0dWFsbHkgcHJldHR5IGNsZXZlci4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSB3YW50IGZvciBhIHJvYnVzdCB0ZXN0aW5nIGVudmlyb25tZW50LgoKTm93LCB3aGVyZSYjMzk7cyB0aGUgbWVhdCBvZiB0aGlzIGltcGxlbWVudGF0aW9uPyBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyB2aXJ0dWFsIGRldmljZSBhcmUgZGVmaW5lZC4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIGhhbmRsZWQgZGVwZW5kZW5jaWVzLCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgbmV0d29yayBjb25maWd1cmF0aW9ucywgYW5kIG1heWJlIGFueSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4gSSB3b25kZXIgaWYgaXQgaW5jbHVkZXMgYW55IGhvb2tzIGZvciBjYXB0dXJpbmcgYW5kIGFuYWx5emluZyB0aGUgZGF0YSBmbG93LiBHb3R0YSBnZXQgYSBnb29kIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gc2VlIGhvdyB3ZWxsIGl0JiMzOTtzIGRlc2lnbmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4gIDExOlx0XG4gIDEyOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gU01DIHNvY2tldCBhcHBsaWNhdGlvbnNcbiAgMTM6XHRcbiAgMTQ6XHRjb25maWcgU01DX0RJQUdcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIFNNQ1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBTdXBwb3J0IGZvciBTTUMgc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdG9vbHMgc3VjaCBhc1xuICAxOTpcdFx0ICBzbWNzcy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgaWYgdW5zdXJlLCBzYXkgWS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgU01DX0hTX0NUUkxfQlBGXG4gIDI0Olx0XHRib29sIFwmIzM0O0dlbmVyaWMgZUJQRiBob29rIGZvciBTTUMgaGFuZHNoYWtlIGZsb3dcJiMzNDtcbiAgMjU6XHRcdGRlcGVuZHMgb24gU01DIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfU1lTQ0FMTFxuICAyNjpcdFx0ZGVmYXVsdCB5XG4gIDI3Olx0XHRoZWxwXG4gIDI4Olx0XHQgIFNNQ19IU19DVFJMX0JQRiBlbmFibGVzIHN1cHBvcnQgdG8gcmVnaXN0ZXIgZ2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQ1xuICAyOTpcdFx0ICBoYW5kc2hha2UgZmxvdywgd2hpY2ggb2ZmZXIgbXVjaCBncmVhdGVyIGZsZXhpYmlsaXR5IGluIG1vZGlmeWluZyB0aGUgYmVoYXZpb3JcbiAgMzA6XHRcdCAgb2YgdGhlIFNNQyBwcm90b2NvbCBzdGFjayBjb21wYXJlZCB0byBhIGNvbXBsZXRlIGtlcm5lbC1iYXNlZCBhcHByb2FjaC4gU2VsZWN0XG4gIDMxOlx0XHQgIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IGZpbHRyaW5nIHRoZSBoYW5kc2hha2UgcHJvY2VzcyB2aWEgZUJQRiBwcm9ncmFtcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NzEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSBgQ09ORklHX1NNQ2AgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGVuLCBgQ09ORklHX0RJQlNfTE9gIHJlbGllcyBvbiBgRElCU2Agd2hpY2ggbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYERJQlNgIGRlcGVuZGVuY3kgbW9yZS4gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBiZSB0aWVkIHRvIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0JiMzOTtzIHByZXR0eSBnZW5lcmljLiBTaW5jZSBpdCYjMzk7cyBsaWtlbHkgYSBkcml2ZXIsIEkmIzM5O2xsIGNoZWNrIGBkcml2ZXJzL0tjb25maWdgIHRvIHNlZSB3aGVyZSBgZHJpdmVycy9kaWJzL0tjb25maWdgIGlzIGluY2x1ZGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBsYXJnZXIgY29udGV4dCBmb3IgYERJQlNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY4MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcdFx0XHRcdCYjNDM7PSByZXNjdHJsL1xuZHJpdmVycy9NYWtlZmlsZS0xOTgtXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcdFx0JiM0Mzs9IGRpYnMvXG5kcml2ZXJzL01ha2VmaWxlLTIwMC1vYmotJChDT05GSUdfUzM5MClcdFx0JiM0Mzs9IHMzOTAvXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWc9Mj1jb25maWcgRElCU1xuLS1cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEwLVx0ICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gcHJvdmlkZSB0aGUgYWJzdHJhY3Rpb24gbGF5ZXIgYmV0d2VlblxuZHJpdmVycy9kaWJzL0tjb25maWc6MTE6XHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cbmRyaXZlcnMvZGlicy9LY29uZmlnOjEyOlx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxuZHJpdmVycy9kaWJzL0tjb25maWc9MTQ9Y29uZmlnIERJQlNfTE9cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE1Olx0Ym9vbCBcJiMzNDtJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcJiMzNDtcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE2LVx0ZGVwZW5kcyBvbiBESUJTXG4tLVxuZHJpdmVycy9kaWJzL0tjb25maWctMTgtXHRoZWxwXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcdCAgRElCU19MTyBlbmFibGVzIHRoZSBjcmVhdGlvbiBvZiBhbiBzb2Z0d2FyZS1lbXVsYXRlZCBkaWJzIGRldmljZVxuZHJpdmVycy9kaWJzL0tjb25maWctMjAtXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cbmRyaXZlcnMvZGlicy9LY29uZmlnLTIxLVx0ICBvY2N1cnMgd2l0aGluIHRoZSBzYW1lIE9TLiBUaGlzIGhlbHBzIGluIGNvbnZlbmllbnQgdGVzdGluZyBvZlxuZHJpdmVycy9kaWJzL0tjb25maWc6MjI6XHQgIGRpYnMgY2xpZW50cywgc2luY2UgZGlicyBsb29wYmFjayBpcyBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUgb3JcbmRyaXZlcnMvZGlicy9LY29uZmlnLTIzLVx0ICBoYXJkd2FyZS5cbi0tXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGUtNS1cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSAmIzQzOz0gZGlic19tYWluLm9cbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSAmIzQzOz0gZGlicy5vXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICYjNDM7PSBkaWJzX2xvb3BiYWNrLm9cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTItLypcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzogKiAgRnVuY3Rpb25zIGZvciBkaWJzIGxvb3BiYWNrL2xvb3BiYWNrLWlzbSBkZXZpY2UuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQtICpcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE0OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2RpYnMuaFx1MDAzZVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNS0jaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI1OnN0YXRpYyBjb25zdCBjaGFyIGRpYnNfbG9fZGV2X25hbWVbXSA9IFwmIzM0O2xvXCYjMzQ7O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNi0vKiBnbG9iYWwgbG9vcGJhY2sgZGV2aWNlICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3OnN0YXRpYyBzdHJ1Y3QgZGlic19sb19kZXYgKmxvX2RldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5OnN0YXRpYyB1MTYgZGlic19sb19nZXRfZmFicmljX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzMtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0OnN0YXRpYyBpbnQgZGlic19sb19xdWVyeV9yZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cdFx0XHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzctXHQvKiByZ2lkIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBsZ2lkICovXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM4Olx0aWYgKCF1dWlkX2VxdWFsKHJnaWQsIFx1MDAyNmRpYnMtXHUwMDNlZ2lkKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzktXHRcdHJldHVybiAtRU5FVFVOUkVBQ0g7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDM6c3RhdGljIGludCBkaWJzX2xvX21heF9kbWJzKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ0LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQ3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo0ODpzdGF0aWMgaW50IGRpYnNfbG9fcmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5Olx0XHRcdFx0c3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTUwLXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTI6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTUzLVx0c3RydWN0IGZvbGlvICpmb2xpbztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1NzpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01OC1cdHNiYV9pZHggPSBkbWItXHUwMDNlaWR4O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDg6XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA5Olx0ZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdID0gY2xpZW50LVx1MDAzZWlkO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMTEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEyMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2ZyZWVfZG1iKHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTIyOlx0XHRcdCAgICAgc3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMxLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTEzMy17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNDpcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM1Olx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzk6XHRsZGV2ID0gZGlicy1cdTAwM2VkcnZfcHJpdjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTQwLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVx0aWYgKGxhc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5Olx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYwOlx0XHRkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbZG1iX25vZGUtXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcdFx0ZGlic19sb19mcmVlX2RtYihsZGV2LCBkbWJfbm9kZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTY4OnN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjkte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTcyLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzM6c3RhdGljIGludCBkaWJzX2xvX2F0dGFjaF9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc1Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzY6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Ny1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc4Olx0bGRldiA9IGRpYnMtXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3OS1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDUte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNzpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA4LVx0Ym9vbCBsYXN0O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMDktXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMDpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTEtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMjktXHRpZiAobGFzdClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjMwOlx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjMxLVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzYtXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM4LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM5Olx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDA6XHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI0NjpcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzI6XHRjbGllbnRfaWQgPSBkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc0Olx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc1Olx0XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXS1cdTAwM2VvcHMtXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjgyOlx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4MzpcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODU6XHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NjpcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcdC5tb3ZlX2RhdGEgPSBkaWJzX2xvX21vdmVfZGF0YSxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjg4Olx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4OTpcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XHQuZGV0YWNoX2RtYiA9IGRpYnNfbG9fZGV0YWNoX2RtYixcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjkxLX07XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjkzOnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X2luaXQoc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTQte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzAwLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMDE6c3RhdGljIHZvaWQgZGlic19sb19kZXZfZXhpdChzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDYtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwOC17XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwOTpcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzEwOlx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTc6XHRkaWJzID0gZGlic19kZXZfYWxsb2MoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE4Olx0aWYgKCFkaWJzKSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMxOS1cdFx0a2ZyZWUobGRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjItXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyMzpcdGxkZXYtXHUwMDNlZGlicyA9IGRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyNDpcdGRpYnMtXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjU6XHRkaWJzX2xvX2Rldl9pbml0KGxkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjY6XHR1dWlkX2dlbihcdTAwMjZkaWJzLVx1MDAzZWdpZCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMyNzpcdGRpYnMtXHUwMDNlb3BzID0gXHUwMDI2ZGlic19sb19vcHM7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMyOC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI5Olx0ZGlicy1cdTAwM2VkZXYucGFyZW50ID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlx0ZGV2X3NldF9uYW1lKFx1MDAyNmRpYnMtXHUwMDNlZGV2LCBcJiMzNDslc1wmIzM0OywgZGlic19sb19kZXZfbmFtZSk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMyOlx0cmV0ID0gZGlic19kZXZfYWRkKGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzOTpcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDA6XHRwdXRfZGV2aWNlKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQxLVx0a2ZyZWUobGRldik7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDUtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM0NjpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9yZW1vdmUodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1MC1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlx0ZGlic19kZXZfZGVsKGxvX2Rldi1cdTAwM2VkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlx0ZGlic19sb19kZXZfZXhpdChsb19kZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTM6XHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzU0Olx0cHV0X2RldmljZShcdTAwMjZsb19kZXYtXHUwMDNlZGlicy1cdTAwM2VkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNTUtXHRrZnJlZShsb19kZXYpO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNTk6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XHRyZXR1cm4gZGlic19sb19kZXZfcHJvYmUoKTtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjQ6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2Olx0ZGlic19sb19kZXZfcmVtb3ZlKCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yLS8qXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM6ICogIGRpYnMgbG9vcGJhY2sgKGFrYSBsb29wYmFjay1pc20pIGRldmljZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTE0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxNTojaW5jbHVkZSBcdTAwM2NsaW51eC9kaWJzLmhcdTAwM2VcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvaGFzaHRhYmxlLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyNTpzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSB7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVx0c3RydWN0IGhsaXN0X25vZGUgbGlzdDtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNTpzdHJ1Y3QgZGlic19sb19kZXYge1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNjpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzctXHRhdG9taWNfdCBkbWJfY250O1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDMtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ0OmludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZCk7XG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ1OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00Ni0jZWxzZVxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NzpzdGF0aWMgaW5saW5lIGludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDgte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTEtXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjUyOnN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTMte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04LSAqL1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjk6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtkaWJzOiBcJiMzNDsgZm10XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTAtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU6I2luY2x1ZGUgXHUwMDNjbGludXgvZGlicy5oXHUwMDNlXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZGlic19sb29wYmFjay5oXCYjMzQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI6c3RhdGljIGNvbnN0IHN0cnVjdCBjbGFzcyBkaWJzX2NsYXNzID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzOlx0Lm5hbWVcdFx0PSBcJiMzNDtkaWJzXCYjMzQ7LFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0LX07XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2LS8qIHVzZSBhbiBhcnJheSByYXRoZXIgYSBsaXN0IGZvciBmYXN0IG1hcHBpbmc6ICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yOC1zdGF0aWMgdTggbWF4X2NsaWVudDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yOT1zdGF0aWMgREVGSU5FX01VVEVYKGNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzA6c3RydWN0IGRpYnNfZGV2X2xpc3Qge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMxLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjMyOlx0c3RydWN0IG11dGV4IG11dGV4OyAvKiBwcm90ZWN0cyBkaWJzIGRldmljZSBsaXN0ICovXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzMtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zNC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNTpzdGF0aWMgc3RydWN0IGRpYnNfZGV2X2xpc3QgZGlic19kZXZfbGlzdCA9IHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNjpcdC5saXN0ID0gTElTVF9IRUFEX0lOSVQoZGlic19kZXZfbGlzdC5saXN0KSxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNzpcdC5tdXRleCA9IF9fTVVURVhfSU5JVElBTElaRVIoZGlic19kZXZfbGlzdC5tdXRleCksXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzgtfTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MDpzdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDE6XHRcdFx0XHQgIHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Mi17XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ1Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDY6XHRkaWJzLVx1MDAzZXN1YnNbY2xpZW50LVx1MDAzZWlkXSA9IGNsaWVudDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NzpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDgtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01MS17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NTI6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTMtXHRpbnQgaSwgcmMgPSAtRU5PU1BDO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU1Olx0bXV0ZXhfbG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy01Ni1cdG11dGV4X2xvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzAtXHRcdC8qIGluaXRpYWxpemUgd2l0aCBhbGwgZGV2aWNlcyB0aGF0IHdlIGdvdCBzbyBmYXIgKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShkaWJzLCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MjpcdFx0XHRkaWJzLVx1MDAzZXByaXZbaV0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjczOlx0XHRcdGNsaWVudC1cdTAwM2VvcHMtXHUwMDNlYWRkX2RldihkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3NDpcdFx0XHRkaWJzX3NldHVwX2ZvcndhcmRpbmcoY2xpZW50LCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cdFx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc3Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc4LVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04MC19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjgzOmludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg0LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Ni1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlx0bXV0ZXhfbG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXHUwMDI2ZGlic19kZXZfbGlzdC5saXN0LCBsaXN0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkzOlx0XHRtYXhfZG1icyA9IGRpYnMtXHUwMDNlb3BzLVx1MDAzZW1heF9kbWJzKCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTQtXHRcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBtYXhfZG1iczsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcdFx0XHRpZiAoZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW2ldID09IGNsaWVudC1cdTAwM2VpZCkge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk2LVx0XHRcdFx0V0FSTigxLCBcJiMzNDslczogYXR0ZW1wdCB0byB1bnJlZ2lzdGVyICYjMzk7JXMmIzM5OyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDItXHRcdC8qIFN0b3AgZm9yd2FyZGluZyBJUlFzIGFuZCBldmVudHMgKi9cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMDM6XHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnQtXHUwMDNlaWRdID0gTlVMTDtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMDQ6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA1Olx0XHRjbGllbnRzW2NsaWVudC1cdTAwM2VpZF0tXHUwMDNlb3BzLVx1MDAzZWRlbF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA2Olx0XHRkaWJzLVx1MDAzZXByaXZbY2xpZW50LVx1MDAzZWlkXSA9IE5VTEw7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTA3LVx0fVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTE1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNi1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExOTpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIwOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyMS1cdHJldHVybiByYztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMzpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNi17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyOC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XHRrZnJlZShkaWJzLVx1MDAzZWRtYl9jbGllbnRpZF9hcnIpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzMjpcdGtmcmVlKGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEzMy19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzNTpzdHJ1Y3QgZGlic19kZXYgKmRpYnNfZGV2X2FsbG9jKHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM2LXtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM4LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzOTpcdGRpYnMgPSBremFsbG9jX29iaigqZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQwOlx0aWYgKCFkaWJzKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MTpcdFx0cmV0dXJuIGRpYnM7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQyOlx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDM6XHRkaWJzLVx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDQ6XHRkaWJzLVx1MDAzZWRldi5jbGFzcyA9IFx1MDAyNmRpYnNfY2xhc3M7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ1Olx0ZGV2aWNlX2luaXRpYWxpemUoXHUwMDI2ZGlicy1cdTAwM2VkZXYpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0Ni1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDc6XHRyZXR1cm4gZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDgtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0OTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hbGxvYyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE1MT1zdGF0aWMgc3NpemVfdCBnaWRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NDpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU2Olx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU4Olx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDslcFViXFxuXCYjMzQ7LCBcdTAwMjZkaWJzLVx1MDAzZWdpZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTU5LX1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1Olx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ni1cdHUxNiBmYWJyaWNfaWQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE2ODpcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY5Olx0ZmFicmljX2lkID0gZGlicy1cdTAwM2VvcHMtXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzAtXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE3Mz1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmFicmljX2lkKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzQtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTc1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkaWJzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3Ni1cdFx1MDAyNmRldl9hdHRyX2dpZC5hdHRyLFxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODAtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRpYnNfZGV2X2F0dHJfZ3JvdXAgPSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgyOlx0LmF0dHJzID0gZGlic19kZXZfYXR0cnMsXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgzLX07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg0LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NTppbnQgZGlic19kZXZfYWRkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODYte1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODktXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTkwOlx0bWF4X2RtYnMgPSBkaWJzLVx1MDAzZW9wcy1cdTAwM2VtYXhfZG1icygpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MTpcdGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciA9IGt6YWxsb2MobWF4X2RtYnMsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MjpcdGlmICghZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cdFx0cmV0dXJuIC1FTk9NRU07XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0Olx0bWVtc2V0KGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FyciwgTk9fRElCU19DTElFTlQsIG1heF9kbWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk2Olx0cmV0ID0gZGV2aWNlX2FkZChcdTAwMjZkaWJzLVx1MDAzZWRldik7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTk5LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcdHJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDEtXHRpZiAocmV0KSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjAyOlx0XHRkZXZfZXJyKFx1MDAyNmRpYnMtXHUwMDNlZGV2LCBcJiMzNDtzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcblwmIzM0Oyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjAzOlx0XHRkZXZpY2VfZGVsKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDQtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA1LVx0fVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwNjpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA3LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDktXHRcdGlmIChjbGllbnRzW2ldKSB7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjEwOlx0XHRcdGNsaWVudHNbaV0tXHUwMDNlb3BzLVx1MDAzZWFkZF9kZXYoZGlicyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlx0XHRcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTItXHRcdH1cbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNsaWVudHNfbG9jayk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjE1Olx0bGlzdF9hZGQoXHUwMDI2ZGlicy1cdTAwM2VsaXN0LCBcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIxNjpcdG11dGV4X3VubG9jayhcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTctXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjIwOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FkZCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjIzLXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyNzpcdHN5c2ZzX3JlbW92ZV9ncm91cChcdTAwMjZkaWJzLVx1MDAzZWRldi5rb2JqLCBcdTAwMjZkaWJzX2Rldl9hdHRyX2dyb3VwKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI5Olx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgJiM0MzsmIzQzO2kpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMxOlx0XHRkaWJzLVx1MDAzZXN1YnNbaV0gPSBOVUxMO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMjpcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMzLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzNDpcdG11dGV4X2xvY2soXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM1LVx0bXV0ZXhfbG9jayhcdTAwMjZjbGllbnRzX2xvY2spO1xuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzctXHRcdGlmIChjbGllbnRzW2ldKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzODpcdFx0XHRjbGllbnRzW2ldLVx1MDAzZW9wcy1cdTAwM2VkZWxfZGV2KGRpYnMpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzOS1cdH1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDAtXHRtdXRleF91bmxvY2soXHUwMDI2Y2xpZW50c19sb2NrKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDE6XHRsaXN0X2RlbF9pbml0KFx1MDAyNmRpYnMtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQyOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0My1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDQ6XHRkZXZpY2VfZGVsKFx1MDAyNmRpYnMtXHUwMDNlZGV2KTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0NjpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9kZWwpO1xuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0Ny1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ5LXtcbi0tXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI1MjpcdHJjID0gY2xhc3NfcmVnaXN0ZXIoXHUwMDI2ZGlic19jbGFzcyk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUzLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTUtXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjU2Olx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNTctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2Mi1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjM6c3RhdGljIHZvaWQgX19leGl0IGRpYnNfZXhpdCh2b2lkKVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY1Olx0ZGlic19sb29wYmFja19leGl0KCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2Olx0Y2xhc3NfdW5yZWdpc3RlcihcdTAwMjZkaWJzX2NsYXNzKTtcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2OC1cbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNjk6c3Vic3lzX2luaXRjYWxsKGRpYnNfaW5pdCk7XG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmg9NDIwPXN0cnVjdCBjYWNoZSB7XG4tLVxuZHJpdmVycy9tZC9iY2FjaGUvYmNhY2hlLmgtNDM2LVx0LypcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjQzNzpcdCAqIFdoZW4gYWxsb2NhdGluZyBuZXcgYnVja2V0cywgcHJpb193cml0ZSgpIGdldHMgZmlyc3QgZGlicyAtIHNpbmNlIHdlXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaC00MzgtXHQgKiBtYXkgbm90IGJlIGFsbG9jYXRlIGF0IGFsbCB3aXRob3V0IHdyaXRpbmcgcHJpb3JpdGllcyBhbmQgZ2Vucy5cbi0tXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTctI2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg6ODojaW5jbHVkZSBcdTAwM2NsaW51eC9kaWJzLmhcdTAwM2VcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtOS0jaW5jbHVkZSBcdTAwM2Nhc20vcGNpX2luc24uaFx1MDAzZVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjI3PXN0cnVjdCBpc21fZGV2IHtcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjI4LVx0c3BpbmxvY2tfdCBjbWRfbG9jazsgLyogc2VyaWFsaXplcyBjbWRzICovXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOTpcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMwLVx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4tLVxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTc3PXN0YXRpYyB2b2lkIGlzbV9mcmVlX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxuLS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTE4NS1cbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE4NjpzdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczOTcKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA0NzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBhIERJQlMvU01DIExvb3BiYWNrIEZ1enppbmcgVGFyZ2V0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnNgLCBzcGVjaWZpY2FsbHkgdGhlIGxvb3BiYWNrIGNvbXBvbmVudCAoYGRpYnNfbG9vcGJhY2suY2ApLiBUaGlzIGlzIGEgdmlydHVhbCBzdWJzeXN0ZW0sIGEgc29mdHdhcmUgZW11bGF0aW9uIG9mIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgdXNlZCBmb3IgbG9vcGJhY2sgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgZW5hYmxlZCBieSBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gLiBDcnVjaWFsbHksIGBDT05GSUdfU01DYCB1dGlsaXplcyBESUJTLCBzcGVjaWZpY2FsbHkgZm9yIGludHJhLU9TIGFuZCBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgU01DLUQgb3IgSVNNLgoKV2Uga25vdyBgZGlic19sb29wYmFjay5pbml0YCBjcmVhdGVzIHRoaXMgZW11bGF0ZWQgbG9vcGJhY2sgZGV2aWNlLCBuYW1lZCAmIzM0O2xvJiMzNDsuIE5vdywgaGVyZSYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBXaGVuIFNNQyBjb25uZWN0aW9ucyBhcmUgZXN0YWJsaXNoZWQgb3ZlciB0aGlzIGxvb3BiYWNrLCBvciB3ZSYjMzk7cmUgc2VuZGluZyBkYXRhIHZpYSBTTUMtRCB1c2luZyBsb29wYmFjaywgdGhlIGZ1bmN0aW9uIGBkaWJzX2xvX21vdmVfZGF0YWAgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0IGlzIG91ciB0YXJnZXQuIFdlIGNhbiByZWFjaCB0aGlzIG9uIGFtZDY0IGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgU01DIHNvY2tldHMgKEFGX1NNQykgYW5kIHdoZW4gYENPTkZJR19ESUJTX0xPYCBpcyBhbHNvIGVuYWJsZWQuCgpOb3csIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGNyaXRlcmlhIGZvciBmdXp6aW5nLiBJcyBpdCByZWFjaGFibGU/IEFic29sdXRlbHkuIFdlJiMzOTt2ZSBnb3QgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBkZXZpY2UgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgU01DLCBzcGVjaWZpY2FsbHkgb24gYW1kNjQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJcyBpdCB3b3J0aCBmdXp6aW5nPyBZZXMsIGJlY2F1c2Ugd2UmIzM5O3JlIGxvb2tpbmcgYXQgY29kZSB0aGF0ICptb2RpZmllcyBsb2NraW5nIG1lY2hhbmlzbXMqOiBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgZnJvbSBgc3Bpbl9sb2NrYCB0byBgc3Bpbl9sb2NrX2lycXNhdmVgICp3aXRoaW4qIGBkaWJzX2xvX21vdmVfZGF0YWAsIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgY29kZS4gVGhlIGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgc2hhcmVkIGJ1ZmZlciB1c2FnZSBhbmQgbG9ja2luZyBpcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBhbHdheXMgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcuCgpMZXQmIzM5O3MgbmFpbCBkb3duIG91ciBgRm9jdXNTeW1ib2xzYC4gT2J2aW91c2x5LCBgZGlic19sb19tb3ZlX2RhdGFgIGlzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIHRoZSBsb2NrIG1vZGlmaWNhdGlvbi4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgb3RoZXIsIGxlc3MgdWJpcXVpdG91cyBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgOiBgZGlic19sb19yZWdpc3Rlcl9kbWJgLCBgZGlic19sb191bnJlZ2lzdGVyX2RtYmAsIGBkaWJzX2xvX2F0dGFjaF9kbWJgLCBgZGlic19sb19kZXRhY2hfZG1iYCwgYW5kIHBvdGVudGlhbGx5IGBzbWNkX3R4X2lzbV93cml0ZWAuIEkgdGhpbmsgdGhlIGJlc3QgYXBwcm9hY2ggaXMgdG8gc3RhcnQgd2l0aCBhIGxhc2VyIGZvY3VzIG9uIGBkaWJzX2xvX21vdmVfZGF0YWAgYW5kIGV4cGFuZCBhcyBuZWVkZWQuCgpGaW5hbGx5LCB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBXZSBuZWVkIGBESUJTYCwgYERJQlNfTE9gLCBhbmQgYmVjYXVzZSBgU01DYCB1c2VzIERJQlMsIHdlIHNob3VsZCBpbmNsdWRlIGBTTUNgLiBJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgZHJpdmVycy9LY29uZmlnYCB0byBjb25maXJtIHRoZSBpbmNsdWRlIG9mIHRoZSBgZGlicy9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9OTA9c291cmNlIFwmIzM0O25ldC9zbWMvS2NvbmZpZ1wmIzM0O1xubmV0L0tjb25maWc6OTE6c291cmNlIFwmIzM0O2RyaXZlcnMvZGlicy9LY29uZmlnXCYjMzQ7XG5uZXQvS2NvbmZpZy05Mi1zb3VyY2UgXCYjMzQ7bmV0L3hkcC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NTQyCgkJCQkJCQlvdXRwdXQ6IDEzOQoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTttIHNlZWluZy4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGBuZXQvS2NvbmZpZ2AgYW5kIGl0IHNvdXJjZXMgYGRyaXZlcnMvZGlicy9LY29uZmlnYC4gVGhhdCB0ZWxscyBtZSB0aGUgRElCUyAoRGVkaWNhdGVkIEludGVycnVwdCBCbG9jayBTeXN0ZW0pIGxvb3BiYWNrIGRldmljZSBkcml2ZXIgaXMgYmVpbmcgY29uZmlndXJlZCBoZXJlLiBXZSYjMzk7dmUgZ290IGBDT05GSUdfRElCU2AgYW5kIGBDT05GSUdfRElCU19MT2AsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGVuIGBDT05GSUdfU01DYCBmb3IgdGhvc2UgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciBzb2NrZXRzLiBHb29kLiBOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIHNwZWNpZmljcy4KClJpZ2h0LCB0aGUgbWV0YWRhdGEgY29uZmlybXMgd2hhdCBJIHN1c3BlY3RlZC4gYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0IG9mdGVuIGluZGljYXRlcyBhIGhpZ2hlci1yaXNrIGNvbXBvbmVudCwgb25lIHRoYXQgaXMgaW50ZXJlc3RpbmcgdG8gZnV6eiB0ZXN0LiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgY29uZmlybXMgdGhhdCBgRElCU2AsIGBESUJTX0xPYCwgYW5kIGBTTUNgIGFyZSBlbmFibGVkLCBzbyB3ZSYjMzk7dmUgZ290IHRoZSBmdWxsIHNjb3BlIGZvciBhbmFseXNpcy4gVGhlIGltcG9ydGFudCBiaXQsIHRoZSBgRm9jdXNTeW1ib2xzYCwgaGlnaGxpZ2h0cyBgZGlic19sb19tb3ZlX2RhdGFgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIGlzIGhhcHBlbmluZy4gVGhlIGBSZWFzb25pbmdgIHByb3ZpZGVzIHRoZSBtZWF0IG9mIGl0LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyByZXBsYWNpbmcgYHNwaW5fbG9ja2Agd2l0aCBgc3Bpbl9sb2NrX2lycXNhdmVgIGluIGBkaWJzX2xvX21vdmVfZGF0YWAgd2l0aGluIHRoZSBESUJTIGxvb3BiYWNrIGRldmljZSBkcml2ZXIgdG8gcHJvcGVybHkgZGlzYWJsZSBpbnRlcnJ1cHRzIHdoaWxlIGFjcXVpcmluZyBgZGlicy0mZ3Q7bG9ja2AuIFRoaXMgaXMgYSBjcml0aWNhbCBjaGFuZ2UsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBmaXgsIGlzbiYjMzk7dCBpdD8gVGhlIGV4cGxhbmF0aW9uIGFsc28gbm90ZXMgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFNNQyBzb2NrZXRzIG92ZXIgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgbG9vcGJhY2sgZGV2aWNlLCBzbyB0aGUgcG90ZW50aWFsIGltcGFjdCBpcyBtdWNoIG1vcmUgd2lkZXNwcmVhZCB0aGFuIGluaXRpYWxseSBzZWVuLiBJdCYjMzk7cyBub3QgYSBmcmluZ2UgY2FzZS4KCkJhc2VkIG9uIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgcmVjb3JkIG15IGNvbmNsdXNpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1NNQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpYnNfbG9fbW92ZV9kYXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtTTUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWJzX2xvX21vdmVfZGF0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2sgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSBpbiBkaWJzX2xvX21vdmVfZGF0YSB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBhY3F1aXJpbmcgZGlicy1cdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXHUwMDNlbG9jayBpbiBkaWJzX2xvX21vdmVfZGF0YSgpLiBUaGlzIGlzIHB1cmVseSBhIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBkaWJzLVx1MDAzZWxvY2sgaXMgYWNjZXNzZWQgZnJvbSBJUlEgY29udGV4dHMuIFRoZSBjaGFuZ2UgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgYWx0ZXIgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uLCBvciBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZS4gTG9ja2luZyBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMKaW5kZXggNjQ5ZTRlMzc1YmUzMy4uNDRhMmU3NGMyZWZjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jCkBAIC0yMzgsNiAmIzQzOzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywKIHsKIAlzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7CiAJc3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2OwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCXUxNiBzX21hc2s7CiAJdTggY2xpZW50X2lkOwogCXUzMiBzYmFfaWR4OwpAQCAtMjY3LDEyICYjNDM7MjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvaywKIAlpZiAoIXNmKQogCQlyZXR1cm4gMDsKIAotCXNwaW5fbG9jaygmYW1wO2RpYnMtJmd0O2xvY2spOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKTsKIAljbGllbnRfaWQgPSBkaWJzLSZndDtkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdOwogCXNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTsKIAlpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCAmYW1wOyZhbXA7IGRpYnMtJmd0O3N1YnNbY2xpZW50X2lkXSkpCiAJCWRpYnMtJmd0O3N1YnNbY2xpZW50X2lkXS0mZ3Q7b3BzLSZndDtoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7Ci0Jc3Bpbl91bmxvY2soJmFtcDtkaWJzLSZndDtsb2NrKTsKJiM0MzsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2RpYnMtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyNgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERJQnMgTG9vcGJhY2sgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBkaWZmIGl0c2VsZi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgaW4gdGhlIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLgoKUmlnaHQgYXdheSwgSSBzZWUgdGhlIGNvcmUgY2hhbmdlOiB0aGUgc3BpbmxvY2sgaXMgYmVpbmcgbW9kaWZpZWQuIFdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIHNpbXBsZSBgc3Bpbl9sb2NrYCBhbmQgYHNwaW5fdW5sb2NrYCBwYWlyIHRvIGBzcGluX2xvY2tfaXJxc2F2ZWAgYW5kIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYC4gVGhpcyBzaWduYWxzIGEgcG90ZW50aWFsIGlzc3VlIHdpdGggaW50ZXJydXB0IGNvbnRleHQuIFdlJiMzOTtyZSBub3cgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYW5kIGFmdGVyIGFjcXVpcmluZyB0aGUgbG9jaywgYW5kIHRoYXQgaW1wbGllcyB3ZSBhcmUgd29ycmllZCBhYm91dCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgc2VlbXMgd2UgaGF2ZSBhIGxvY2sgKGBkaWJzLSZndDtsb2NrYCkgcHJvdGVjdGluZyBhY2Nlc3MgdG8gYGNsaWVudF9pZGAsIGBzX21hc2tgLCBhbmQgdGhlIGBkaWJzLSZndDtzdWJzYCBhcnJheS4gVGhlIGNvZGUgY2hlY2tzIGZvciBhIHZhbGlkIGBjbGllbnRfaWRgLCBhbmQgaWYgb25lIGV4aXN0cyBjYWxscyBhIGZ1bmN0aW9uLCBgaGFuZGxlX2lycWAsIHByZXN1bWFibHkgb24gdGhlIHN1YnNjcmliZXImIzM5O3Mgb3BlcmF0aW9uIHN0cnVjdC4gVGhpcyBmdW5jdGlvbiBgaGFuZGxlX2lycWAgbXVzdCBiZSBleGVjdXRpbmcgdW5kZXIgYSBjcml0aWNhbCBzZWN0aW9uLCBhbmQgdGhpcyBwYXRjaCBpcyBub3cgbWFraW5nIHN1cmUgdGhlIGludGVycnVwdCBjb250ZXh0IGlzIHByZXNlcnZlZC4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bGwgbmVlZCB0byBleHBsb3JlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byBzZWUgd2hhdCBgZGlicy0mZ3Q7bG9ja2AgcHJvdGVjdHMsIHdoYXQgYGhhbmRsZV9pcnFgIGFjdHVhbGx5ICpkb2VzKiwgYW5kIHdoZXJlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgY2FsbGVkIGZyb20uIEkmIzM5O2xsIG5lZWQgdG8gY29uc3VsdCB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuIFRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gZXhhbWluZSBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AgaW4gbW9yZSBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgYSBiZXR0ZXIgdmlldyBvZiB0aGUgY29kZSBhbmQgYW55IG90aGVyIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDUgMTk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMjA6XHRcdGlmICghZG1iX25vZGUpIHtcbiAyMjE6XHRcdFx0d3JpdGVfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDIyMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyMjM6XHRcdH1cbiAyMjQ6XHRcdGxhc3QgPSByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2ZG1iX25vZGUtXHUwMDNlcmVmY250KTtcbiAyMjU6XHRcdGlmIChsYXN0KVxuIDIyNjpcdFx0XHRoYXNoX2RlbChcdTAwMjZkbWJfbm9kZS1cdTAwM2VsaXN0KTtcbiAyMjc6XHRcdHdyaXRlX3VubG9ja19iaChcdTAwMjZsZGV2LVx1MDAzZWRtYl9odF9sb2NrKTtcbiAyMjg6XHRcbiAyMjk6XHRcdGlmIChsYXN0KVxuIDIzMDpcdFx0XHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcbiAyMzE6XHRcbiAyMzI6XHRcdHJldHVybiAwO1xuIDIzMzpcdH1cbiAyMzQ6XHRcbiAyMzU6XHRzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXG4gMjM2Olx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuIDIzNzpcdFx0XHRcdCAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpXG4gMjM4Olx0e1xuIDIzOTpcdFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xuIDI0MDpcdFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xuIDI0MTpcdFx0dW5zaWduZWQgbG9uZyBmbGFncztcbiAyNDI6XHRcdHUxNiBzX21hc2s7XG4gMjQzOlx0XHR1OCBjbGllbnRfaWQ7XG4gMjQ0Olx0XHR1MzIgc2JhX2lkeDtcbiAyNDU6XHRcbiAyNDY6XHRcdGxkZXYgPSBkaWJzLVx1MDAzZWRydl9wcml2O1xuIDI0NzpcdFxuIDI0ODpcdFx0cmVhZF9sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDI0OTpcdFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl90b2spIHtcbiAyNTA6XHRcdFx0aWYgKHRtcF9ub2RlLVx1MDAzZXRva2VuID09IGRtYl90b2spIHtcbiAyNTE6XHRcdFx0XHRybWJfbm9kZSA9IHRtcF9ub2RlO1xuIDI1MjpcdFx0XHRcdGJyZWFrO1xuIDI1MzpcdFx0XHR9XG4gMjU0Olx0XHR9XG4gMjU1Olx0XHRpZiAoIXJtYl9ub2RlKSB7XG4gMjU2Olx0XHRcdHJlYWRfdW5sb2NrX2JoKFx1MDAyNmxkZXYtXHUwMDNlZG1iX2h0X2xvY2spO1xuIDI1NzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNTg6XHRcdH1cbiAyNTk6XHRcdGlmICgodTY0KW9mZnNldCAmIzQzOyBzaXplIFx1MDAzZSBybWJfbm9kZS1cdTAwM2VsZW4pIHtcbiAyNjA6XHRcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjYxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI2MjpcdFx0fVxuIDI2MzpcdFxuIDI2NDpcdFx0bWVtY3B5KChjaGFyICopcm1iX25vZGUtXHUwMDNlY3B1X2FkZHIgJiM0Mzsgb2Zmc2V0LCBkYXRhLCBzaXplKTtcbiAyNjU6XHRcdHNiYV9pZHggPSBybWJfbm9kZS1cdTAwM2VzYmFfaWR4O1xuIDI2NjpcdFx0cmVhZF91bmxvY2tfYmgoXHUwMDI2bGRldi1cdTAwM2VkbWJfaHRfbG9jayk7XG4gMjY3Olx0XG4gMjY4Olx0XHRpZiAoIXNmKVxuIDI2OTpcdFx0XHRyZXR1cm4gMDtcbiAyNzA6XHRcbiAyNzE6XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIDI3MjpcdFx0Y2xpZW50X2lkID0gZGlicy1cdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xuIDI3MzpcdFx0c19tYXNrID0gcm9yMTYoMHgxMDAwLCBpZHgpO1xuIDI3NDpcdFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXHUwMDI2XHUwMDI2IGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcbiAyNzU6XHRcdFx0ZGlicy1cdTAwM2VzdWJzW2NsaWVudF9pZF0tXHUwMDNlb3BzLVx1MDAzZWhhbmRsZV9pcnEoZGlicywgc2JhX2lkeCwgc19tYXNrKTtcbiAyNzY6XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGlicy1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gMjc3Olx0XG4gMjc4Olx0XHRyZXR1cm4gMDtcbiAyNzk6XHR9XG4gMjgwOlx0XG4gMjgxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XG4gMjgyOlx0XHQuZ2V0X2ZhYnJpY19pZCA9IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZCxcbiAyODM6XHRcdC5xdWVyeV9yZW1vdGVfZ2lkID0gZGlic19sb19xdWVyeV9yZ2lkLFxuIDI4NDpcdFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcbiAyODU6XHRcdC5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3JlZ2lzdGVyX2RtYixcbiAyODY6XHRcdC51bnJlZ2lzdGVyX2RtYiA9IGRpYnNfbG9fdW5yZWdpc3Rlcl9kbWIsXG4gMjg3Olx0XHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXG4gMjg4Olx0XHQuc3VwcG9ydF9tbWFwcGVkX3JkbWIgPSBkaWJzX2xvX3N1cHBvcnRfZG1iX25vY29weSxcbiAyODk6XHRcdC5hdHRhY2hfZG1iID0gZGlic19sb19hdHRhY2hfZG1iLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNSAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIzCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDUxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBDb25jdXJyZW5jeSBGaXgsIE5vdCBVbmluaXRpYWxpemVkIE1lbW9yeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGxvY2sgdXBncmFkZTogYHNwaW5fbG9ja2AgaXMgYmVpbmcgcmVwbGFjZWQgd2l0aCBgc3Bpbl9sb2NrX2lycXNhdmVgLCBhbmQgYHNwaW5fdW5sb2NrYCB3aXRoIGBzcGluX3VubG9ja19pcnFyZXN0b3JlYC4gSXQmIzM5O3MgaGFwcGVuaW5nIGluIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCwgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLiBUaGUgcHJpbWFyeSBnb2FsIGlzIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2NlbmFyaW8gd2hlbiBgZGlicy0mZ3Q7bG9ja2AgaXMgaGVsZCBpbiBhbiBpbnRlcnJ1cHQgb3Igc29mdGlycS9pcnEgY29udGV4dC4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBpc3N1ZS4KCk5vdywgbGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBLTVNBTiBjaGVja2xpc3QuIERvZXMgdGhpcyBpbnRyb2R1Y2UgbmV3IGFsbG9jYXRpb25zLCByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlcnNwYWNlLCBvciBzY3JldyB3aXRoIGJvdW5kcyBjaGVja3M/IE5vcGUuIFRoaXMgaXMgcHVyZWx5IGFib3V0ICpob3cqIHRoZSBzcGlubG9jayBpcyBhY3F1aXJlZCwgbmFtZWx5IGRpc2FibGluZyBpbnRlcnJ1cHRzIHdoZW4gaG9sZGluZyB0aGUgbG9jay4gVGhpcyBzZWVtcyBsaWtlIGEgdGV4dGJvb2sgY2FzZSBmb3IgTE9DS0RFUCBhbmQgdGhlIHN0YW5kYXJkIGtlcm5lbCBzYW5pdHkgY2hlY2tzLgoKSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgbXkgd29yayBoZXJlLiBObyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZSwgbm8gY29uZGl0aW9uYWwgbG9naWMgcmVsaWVzIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBubyBuZXcgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIGFsbG9jYXRlZCBpbiBhIHdheSB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCByZWFkcyBsYXRlciBvbiwgYW5kIG5vIGJvdW5kcyBjaGVja3MgYXJlIGJlaW5nIG1lc3NlZCB3aXRoLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gVGhpcyBpcyBhICpsb2NraW5nKiBidWcgZml4LCBub3QgYW4gKnVuaW5pdGlhbGl6ZWQgbWVtb3J5KiBidWcgZml4LgoKVG8gYmUgZXh0cmEgY2xlYXIgaW4gdGhlIHJlYXNvbmluZywgaXQmIzM5O3MgYSBzaW1wbGUgYHNwaW5fbG9ja2AgdG8gYHNwaW5fbG9ja19pcnFzYXZlYCByZXBsYWNlbWVudCwgZGVzaWduZWQgdG8gcHJldmVudCBkZWFkbG9ja3MgaW4gaW50ZXJydXB0IGNvbnRleHRzLiBJdCBkb2VzbiYjMzk7dCB0b3VjaCBtZW1vcnkgYWxsb2NhdGlvbiwgc3RydWN0IGluaXRpYWxpemF0aW9uLCBkYXRhIGNvcHlpbmcgdG8gdXNlciBzcGFjZSwgb3IgYnVmZmVyIGJvdW5kYXJpZXMuIFRoaXMgaXMgY29uY3VycmVuY3ksIG5vdCBLTVNBTiYjMzk7cyByZWFsbS4gTE9DS0RFUCBhbmQgc3RhbmRhcmQgY2hlY2tlcnMgYXJlIHRoZSB0b29scyB0byB1c2UgaGVyZS4gTm8gS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5lY2Vzc2FyeS4gQWxyaWdodCwgbGV0JiMzOTtzIGNhbGwgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA1IDE5OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2soKS9zcGluX3VubG9jaygpIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUoKS9zcGluX3VubG9ja19pcnFyZXN0b3JlKCkgb24gZGlicy1cdTAwM2Vsb2NrIGluIGRpYnNfbG9fbW92ZV9kYXRhKCkuIFRoaXMgaXMgcHVyZWx5IGEgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGRpYnMtXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjozNC45OTE3NDU4NDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njk4MDQzNTY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWJzX2xvX21vdmVfZGF0YVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXFx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVxcdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjozNC45OTE3NTU0NDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjQ0MjYzNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZWMwODJmMGQzZmQwZWZmMTAyMTRkMDU3N2NhMDA0NmYwYzE5NzEwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgU2VwIDUgMTk6MDI6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcXG5pbmRleCA2NDllNGUzNzViZTMzLi40NGEyZTc0YzJlZmNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXFxuQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuIHtcXG4gXFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbiBcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIFxcdHUxNiBzX21hc2s7XFxuIFxcdHU4IGNsaWVudF9pZDtcXG4gXFx0dTMyIHNiYV9pZHg7XFxuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG4gXFx0aWYgKCFzZilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRzcGluX2xvY2soXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2spO1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbiBcXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuIFxcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFxcdTAwMjZcXHUwMDI2IGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXFxuIFxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuLVxcdHNwaW5fdW5sb2NrKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG4rXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6MzYuNTU3MTEzODc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1NjY1MzA5MDMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJTTUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWJzX2xvX21vdmVfZGF0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jayB3aXRoIHNwaW5fbG9ja19pcnFzYXZlIGluIGRpYnNfbG9fbW92ZV9kYXRhIHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGFjcXVpcmluZyBkaWJzLVxcdTAwM2Vsb2NrIGZyb20gZGlmZmVyZW50IGludGVycnVwdCBjb250ZXh0cy4gVGhlIERJQlMgbG9vcGJhY2sgZHJpdmVyIHByb3ZpZGVzIGEgc29mdHdhcmUtZW11bGF0ZWQgbG9vcGJhY2sgbWVjaGFuaXNtIGZvciBpbnRyYS1PUyBTTUMtRCBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyByZWFjaGFibGUgb24gYW1kNjQgdmlhIEFGX1NNQyBzb2NrZXRzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG5AQCAtMjM4LDYgKzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTE2IHNfbWFzaztcbiBcdHU4IGNsaWVudF9pZDtcbiBcdHUzMiBzYmFfaWR4O1xuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiBcdGlmICghc2YpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0c3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG4rXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuK1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjM2LjU1NzExNjEwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzODcxNTQxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBhbmQgUmVsZXZhbnQgS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBtb2RpZmljYXRpb25zIG1hZGUgdG8gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIGZhbGxzIHdpdGhpbiB0aGUga2VybmVsJ3MgYXJjaGl0ZWN0dXJlLiBNeSBwcmltYXJ5IGdvYWwgbm93IGlzIHRvIGVzdGFibGlzaCBjb250ZXh0OiB3aGF0ICppcyogdGhlIGBkcml2ZXJzL2RpYnNgIHN1YnN5c3RlbT8gV2hhdCBhcmUgdGhlIGVuYWJsaW5nIEtjb25maWcgb3B0aW9ucz8gV2hhdCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIGludGVyYWN0IHdpdGggdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBwYXJ0aWN1bGFybHkgYGRpYnNfbG9fbW92ZV9kYXRhYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgY29kZSBpcyBleGVjdXRlZC5cblxuVG8gZmFjaWxpdGF0ZSB0aGlzLCBJJ2xsIGxldmVyYWdlIG15IHVzdWFsIHRvb2xzLiBJJ20gdGhpbmtpbmcgYGdyZXBwZXJgIGlzIHRoZSBmaXJzdCBsb2dpY2FsIGNob2ljZS4gSSBjYW4gcXVpY2tseSBkZXRlcm1pbmUgZGVwZW5kZW5jaWVzLCBjcm9zcy1yZWZlcmVuY2VzLCBhbmQgcG90ZW50aWFsIGltcGFjdHMuIEFsdGVybmF0aXZlbHksIGByZWFkLWZpbGVgIG1pZ2h0IGJlIGhhbmR5IGZvciBhIHF1aWNrIG92ZXJ2aWV3IGlmIEknbSBsb29raW5nIGZvciBzcGVjaWZpY3MuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBwcmFjdGljYWwgaW1wbGljYXRpb25zLiBJcyB0aGlzIGZ1bmN0aW9uYWxpdHkgZXZlbiBhY2Nlc3NpYmxlIGluIGNvbW1vbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gVGhhdCdzIGVzc2VudGlhbCB0byByZXBsaWNhdGluZyBhbmQgdGVzdGluZyB0aGlzIGluIGEgcmVhbGlzdGljIHNldHRpbmcuXG5cblNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHNlcmllcyBvZiBgZ3JlcHBlcmAgcXVlcmllcyB0byBwaW5wb2ludCB0aGVzZSBjcml0aWNhbCBkZXRhaWxzLCBzdGFydGluZyB3aXRoIHRoZSBmaWxlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjQwLjk0NDI3MzE4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc2NDAxNjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNfbG9fbW92ZV9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjA0PXN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzU6c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM2LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MjgxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODYtXFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODgtXFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjQzLjIyMDY3ODI2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjU2MTg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJESUJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZGlic1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy01LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzo2OlxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy03LVxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTEzLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXFxuZHJpdmVycy9kaWJzL0tjb25maWctMTUtXFx0Ym9vbCBcXFwiSW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXFxcIlxcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE2OlxcdGRlcGVuZHMgb24gRElCU1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE3LVxcdGRlZmF1bHQgblxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE4LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG4tLVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS0yLSNcXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6MzojIERJQlMgY2xhc3MgbW9kdWxlXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlLTQtI1xcbi0tXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlPTY9ZGlicy15ICs9IGRpYnNfbWFpbi5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0RJQlMpICs9IGRpYnMub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo4OmRpYnMtJChDT05GSUdfRElCU19MTykgKz0gZGlic19sb29wYmFjay5vXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIxLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjI6I2RlZmluZSBESUJTX0xPX1NVUFBPUlRfTk9DT1BZXFx0MHgxXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzojZGVmaW5lIERJQlNfRE1BX0FERFJfSU5WQUxJRFxcdCh+KGRtYV9hZGRyX3QpMClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0yOT1zdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMTpcXHRyZXR1cm4gRElCU19MT09QQkFDS19GQUJSSUM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMi19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQzPXN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NDU6XFx0cmV0dXJuIERJQlNfTE9fTUFYX0RNQlM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ni19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTktXFx0LyogY2hlY2sgc3BhY2UgZm9yIG5ldyBkbWIgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjYwOlxcdGZvcl9lYWNoX2NsZWFyX2JpdChzYmFfaWR4LCBsZGV2LVxcdTAwM2VzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTYxLVxcdFxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChzYmFfaWR4LCBsZGV2LVxcdTAwM2VzYmFfaWR4X21hc2spKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy02My1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo2NDpcXHRpZiAoc2JhX2lkeCA9PSBESUJTX0xPX01BWF9ETUJTKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNjUtXFx0XFx0cmV0dXJuIC1FTk9TUEM7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTg0LVxcdGRtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciA9IGZvbGlvX2FkZHJlc3MoZm9saW8pO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6ODU6XFx0ZG1iX25vZGUtXFx1MDAzZWRtYV9hZGRyID0gRElCU19ETUFfQUREUl9JTlZBTElEO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtODYtXFx0cmVmY291bnRfc2V0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250LCAxKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTMyPXN0YXRpYyBpbnQgZGlic19sb191bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNTktXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYxLVxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM9MTY4PXN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MDpcXHRyZXR1cm4gRElCU19MT19TVVBQT1JUX05PQ09QWTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3MS19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTIzNT1zdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3My1cXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzQ6XFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXFx1MDAyNlxcdTAwMjYgZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3NS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0xMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjEyOiNpZm5kZWYgX0RJQlNfTE9PUEJBQ0tfSFxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MTM6I2RlZmluZSBfRElCU19MT09QQkFDS19IXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0xNC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjIyOiNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1xcdDEyXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMzojZGVmaW5lIERJQlNfTE9fTUFYX0RNQlNcXHQ1MDAwXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9MzU9c3RydWN0IGRpYnNfbG9fZGV2IHtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzgtXFx0cndsb2NrX3QgZG1iX2h0X2xvY2s7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozOTpcXHRERUNMQVJFX0JJVE1BUChzYmFfaWR4X21hc2ssIERJQlNfTE9fTUFYX0RNQlMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDA6XFx0REVDTEFSRV9IQVNIVEFCTEUoZG1iX2h0LCBESUJTX0xPX0RNQlNfSEFTSF9CSVRTKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQxLVxcdHdhaXRfcXVldWVfaGVhZF90IGxkZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg9NTI9c3RhdGljIGlubGluZSB2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC01Ni1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjU3OiNlbmRpZiAvKiBfRElCU19MT09QQkFDS19IICovXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMi0vKlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozOiAqICBESUJTIC0gRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQtICpcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NTogKiAgSW1wbGVtZW50YXRpb24gb2YgdGhlIERJQlMgY2xhc3MgbW9kdWxlXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTYtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIGRpYnNfY2xhc3MgPSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9NTA9aW50IGRpYnNfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU2LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjU3OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyArK2kpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTgtXFx0XFx0aWYgKCFjbGllbnRzW2ldKSB7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjY5OlxcdGlmIChpIFxcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUykge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTg1PWludCBkaWJzX2Rldl9hZGQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0OlxcdG1lbXNldChkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyLCBOT19ESUJTX0NMSUVOVCwgbWF4X2RtYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MjIyPXZvaWQgZGlic19kZXZfZGVsKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjktXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMwOlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNQVhfRElCU19DTElFTlRTOyArK2kpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2ldID0gTlVMTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuMzAzMjQ1MjIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTE0NDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9NYWtlZmlsZT0xOTc9b2JqLXlcXHRcXHRcXHRcXHQrPSByZXNjdHJsL1xcbmRyaXZlcnMvTWFrZWZpbGUtMTk4LVxcbmRyaXZlcnMvTWFrZWZpbGU6MTk5Om9iai0kKENPTkZJR19ESUJTKVxcdFxcdCs9IGRpYnMvXFxuZHJpdmVycy9NYWtlZmlsZS0yMDAtb2JqLSQoQ09ORklHX1MzOTApXFx0XFx0Kz0gczM5MC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuNDE0MzkzNjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNDExODE4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NDMuNTE3ODE0MDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA5ODY0OTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwtV2lkZSBESUJTIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgYERJQlNgIG9yIGBkaWJzYCBpcyBiZWluZyB1c2VkIHRocm91Z2hvdXQgdGhlIGtlcm5lbC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGdyZXAsIG1pbmQgeW91OyBJJ20gdGhpbmtpbmcgYSB0aG9yb3VnaCBzZWFyY2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQgb2YgdGhlc2UgdGVybXMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBzdWJzeXN0ZW1zLiBJIG5lZWQgdG8gcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgaWRlbnRpZnkgYWxsIHRoZSByZWxldmFudCBjYWxsIHNpdGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgc28gSSBjYW4gYXNzZXNzIGltcGFjdC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBhbnRpY2lwYXRlIGEgZmFpciBiaXQgb2Ygbm9pc2UsIGJ1dCBob3BlZnVsbHksIHRoZSB3aGVhdCB3aWxsIHNlcGFyYXRlIGZyb20gdGhlIGNoYWZmIHF1aWNrbHkuIFRoaXMgaXMgd2hlcmUgdGhlIGZ1biBiZWdpbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo0NS42MTY0NjcyNzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNzkxMDE2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRElCU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTMzPUNPTkZJR19TTUNfRElBRz1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNDpDT05GSUdfRElCUz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEzNTpDT05GSUdfRElCU19MTz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEzNi1DT05GSUdfWERQX1NPQ0tFVFM9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTEyND1DT05GSUdfU01DX0RJQUc9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjU6Q09ORklHX0RJQlM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMjY6Q09ORklHX0RJQlNfTE89eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMjctQ09ORklHX1hEUF9TT0NLRVRTPXlcXG4tLVxcbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XFx0XFx0XFx0XFx0Kz0gcmVzY3RybC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcXHRcXHQrPSBkaWJzL1xcbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVxcdFxcdCs9IHMzOTAvXFxuLS1cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU9Nj1kaWJzLXkgKz0gZGlic19tYWluLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfRElCUykgKz0gZGlicy5vXFxuZHJpdmVycy9kaWJzL01ha2VmaWxlOjg6ZGlicy0kKENPTkZJR19ESUJTX0xPKSArPSBkaWJzX2xvb3BiYWNrLm9cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoyMTojaWYgSVNfRU5BQkxFRChDT05GSUdfRElCU19MTylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTIyLSNkZWZpbmUgRElCU19MT19ETUJTX0hBU0hfQklUU1xcdDEyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTEzNT1DT05GSUdfU01DX0hTX0NUUkxfQlBGPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjEzNjpDT05GSUdfRElCUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzoxMzc6Q09ORklHX0RJQlNfTE89eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWctMTM4LUNPTkZJR19QTV9XQUtFTE9DS1M9eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo0Ny45NTQzODE1NThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODQ2NDUxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlic19cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3NTkgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSArPSBkaWJzX21haW4ub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS03LW9iai0kKENPTkZJR19ESUJTKSArPSBkaWJzLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICs9IGRpYnNfbG9vcGJhY2sub1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcXFwibG9cXFwiO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2xvX2RldiAqbG9fZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ6c3RhdGljIGludCBkaWJzX2xvX3F1ZXJ5X3JnaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cXHRcXHRcXHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5OlxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01My1cXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjI6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTYyLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYzOlxcdFxcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTY4OnN0YXRpYyBpbnQgZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTY5LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTcyLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTczOnN0YXRpYyBpbnQgZGlic19sb19hdHRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzQte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc1OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNzctXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwMy1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNDpzdGF0aWMgaW50IGRpYnNfbG9fZGV0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCB0b2tlbilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwNS17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDY6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA3OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwOC1cXHRib29sIGxhc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQwOlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODE6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODI6XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NTpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODY6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTEtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5MzpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9pbml0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwNi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDgte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzA5OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMxMDpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE3OlxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE4LVxcdGlmICghZGlicykge1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjQtXFx0ZGlicy1cXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1OlxcdGRpYnNfbG9fZGV2X2luaXQobGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjYtXFx0dXVpZF9nZW4oXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XFx0ZGlicy1cXHUwMDNlb3BzID0gXFx1MDAyNmRpYnNfbG9fb3BzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI5LVxcdGRpYnMtXFx1MDAzZWRldi5wYXJlbnQgPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlxcdGRldl9zZXRfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBkaWJzX2xvX2Rldl9uYW1lKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNDAtXFx0cHV0X2RldmljZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ1LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ2OnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X3JlbW92ZSh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlxcdGRpYnNfZGV2X2RlbChsb19kZXYtXFx1MDAzZWRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlxcdGRpYnNfbG9fZGV2X2V4aXQobG9fZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1MzpcXHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1NC1cXHRwdXRfZGV2aWNlKFxcdTAwMjZsb19kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM1OC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1OTppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzYxOlxcdHJldHVybiBkaWJzX2xvX2Rldl9wcm9iZSgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYyLX1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2My1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM2NDp2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY1LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM2NjpcXHRkaWJzX2xvX2Rldl9yZW1vdmUoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2Ny19XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MjU6c3RydWN0IGRpYnNfbG9fZG1iX25vZGUge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMjYtXFx0c3RydWN0IGhsaXN0X25vZGUgbGlzdDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDozNTpzdHJ1Y3QgZGlic19sb19kZXYge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzY6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMzctXFx0YXRvbWljX3QgZG1iX2NudDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDo0NDppbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDU6dm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00Ni0jZWxzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDc6c3RhdGljIGlubGluZSBpbnQgZGlic19sb29wYmFja19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC00OC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NTI6c3RhdGljIGlubGluZSB2b2lkIGRpYnNfbG9vcGJhY2tfZXhpdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNTMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzojaW5jbHVkZSBcXFwiZGlic19sb29wYmFjay5oXFxcIlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMD1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjpzdGF0aWMgY29uc3Qgc3RydWN0IGNsYXNzIGRpYnNfY2xhc3MgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzLVxcdC5uYW1lXFx0XFx0PSBcXFwiZGlic1xcXCIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjYtLyogdXNlIGFuIGFycmF5IHJhdGhlciBhIGxpc3QgZm9yIGZhc3QgbWFwcGluZzogKi9cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50c1tNQVhfRElCU19DTElFTlRTXTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjgtc3RhdGljIHU4IG1heF9jbGllbnQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTI5PXN0YXRpYyBERUZJTkVfTVVURVgoY2xpZW50c19sb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzA6c3RydWN0IGRpYnNfZGV2X2xpc3Qge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zMS1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjM1OnN0YXRpYyBzdHJ1Y3QgZGlic19kZXZfbGlzdCBkaWJzX2Rldl9saXN0ID0ge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNjpcXHQubGlzdCA9IExJU1RfSEVBRF9JTklUKGRpYnNfZGV2X2xpc3QubGlzdCksXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjM3OlxcdC5tdXRleCA9IF9fTVVURVhfSU5JVElBTElaRVIoZGlic19kZXZfbGlzdC5tdXRleCksXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM4LX07XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM5LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MDpzdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQxOlxcdFxcdFxcdFxcdCAgc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy00Mi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MjpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVxcdGludCBpLCByYyA9IC1FTk9TUEM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjcxOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03Mi1cXHRcXHRcXHRkaWJzLVxcdTAwM2Vwcml2W2ldID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzMtXFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VvcHMtXFx1MDAzZWFkZF9kZXYoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc0OlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnQsIGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cXHRcXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Nzc6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3JlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtOTItXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjExNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMTYtXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExOS1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyMDpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjEtXFx0cmV0dXJuIHJjO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjItfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjM6RVhQT1JUX1NZTUJPTF9HUEwoZGlic191bnJlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEyNC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI1OnN0YXRpYyB2b2lkIGRpYnNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyOTpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzAtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzU6c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQyLVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQzOlxcdGRpYnMtXFx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ0OlxcdGRpYnMtXFx1MDAzZWRldi5jbGFzcyA9IFxcdTAwMjZkaWJzX2NsYXNzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDUtXFx0ZGV2aWNlX2luaXRpYWxpemUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNTE9c3RhdGljIHNzaXplX3QgZ2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTQ6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NjpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTYyPXN0YXRpYyBzc2l6ZV90IGZhYnJpY19pZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY1OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY2LVxcdHUxNiBmYWJyaWNfaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY4OlxcdGRpYnMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgZGlic19kZXYsIGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE2OS1cXHRmYWJyaWNfaWQgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoZGlicyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9MTczPXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmYWJyaWNfaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNzQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE3NTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGlic19kZXZfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc2LVxcdFxcdTAwMjZkZXZfYXR0cl9naWQuYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4MTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBkaWJzX2Rldl9hdHRyX2dyb3VwID0ge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODI6XFx0LmF0dHJzID0gZGlic19kZXZfYXR0cnMsXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4My19O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE4NTppbnQgZGlic19kZXZfYWRkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg2LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcXHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNmRpYnMtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcXHRcXHRkZXZfZXJyKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYsIFxcXCJzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMy1cXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwNS1cXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwNjpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA3LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEwLVxcdFxcdFxcdGNsaWVudHNbaV0tXFx1MDAzZW9wcy1cXHUwMDNlYWRkX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTU6XFx0bGlzdF9hZGQoXFx1MDAyNmRpYnMtXFx1MDAzZWxpc3QsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTY6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMDpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hZGQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjc6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRpYnNfZGV2X2F0dHJfZ3JvdXApO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzNS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0MS1cXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjQyOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0My1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDY6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19kZXZfZGVsKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTI6XFx0cmMgPSBjbGFzc19yZWdpc3RlcihcXHUwMDI2ZGlic19jbGFzcyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU1LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XFx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2NTpcXHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNmRpYnNfY2xhc3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oPTIyNz1zdHJ1Y3QgaXNtX2RldiB7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMjgtXFx0c3BpbmxvY2tfdCBjbWRfbG9jazsgLyogc2VyaWFsaXplcyBjbWRzICovXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDoyMjk6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtMjMwLVxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MTc3PXN0YXRpYyB2b2lkIGlzbV9mcmVlX2llcShzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg1LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjE4NjpzdGF0aWMgaW50IGlzbV9yZWFkX2xvY2FsX2dpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMTg3LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTIwNS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyMDY6c3RhdGljIGludCBpc21fcXVlcnlfcmdpZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIGNvbnN0IHV1aWRfdCAqcmdpZCxcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMDctXFx0XFx0XFx0ICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MjIzPXN0YXRpYyBpbnQgaXNtX21heF9kbWJzKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjctXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MjI4OnN0YXRpYyB2b2lkIGlzbV9mcmVlX2RtYihzdHJ1Y3QgaXNtX2RldiAqaXNtLCBzdHJ1Y3QgZGlic19kbWIgKmRtYilcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yMjkte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM1LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjIzNjpzdGF0aWMgaW50IGlzbV9hbGxvY19kbWIoc3RydWN0IGlzbV9kZXYgKmlzbSwgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMjM3LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTI4Mi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzoyODM6c3RhdGljIGludCBpc21fcmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIsXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6Mjg0OlxcdFxcdFxcdCAgICBzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0yODUte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE4LVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxOTpzdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNDQtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MzQ1OnN0YXRpYyBpbnQgaXNtX2FkZF92bGFuX2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHZsYW5faWQpXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzQ2LXtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM1OC1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozNTk6c3RhdGljIGludCBpc21fZGVsX3ZsYW5faWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgdmxhbl9pZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zNjAte1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzcyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjM3MzpzdGF0aWMgaW50IGlzbV9zaWduYWxfaWVxKHN0cnVjdCBkaWJzX2RldiAqZGlicywgY29uc3QgdXVpZF90ICpyZ2lkLFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM3NC1cXHRcXHRcXHQgIHUzMiB0cmlnZ2VyX2lycSwgdTMyIGV2ZW50X2NvZGUsIHU2NCBpbmZvKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9MzkxPXN0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2J5dGVzKHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGxlbixcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5Ni1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozOTc6c3RhdGljIGludCBpc21fbW92ZShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLCB1bnNpZ25lZCBpbnQgaWR4LFxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTM5OC1cXHRcXHQgICAgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyMi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0MjM6c3RhdGljIHUxNiBpc21fZ2V0X2NoaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQyNC17XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00NjE9c3RhdGljIHZvaWQgaXNtX2hhbmRsZV9ldmVudChzdHJ1Y3QgaXNtX2RldiAqaXNtKVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTQ2Mi17XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NDYzOlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicyA9IGlzbS1cXHUwMDNlZGlicztcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo0NjQ6XFx0c3RydWN0IGRpYnNfZXZlbnQgZXZlbnQ7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNDY1LVxcdHN0cnVjdCBpc21fZXZlbnQgKmVudHJ5O1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjQ2NjpcXHRzdHJ1Y3QgZGlic19jbGllbnQgKmNsdDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy00NjctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz00OTk9c3RhdGljIGlycXJldHVybl90IGlzbV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MDItXFx0dW5zaWduZWQgbG9uZyBiaXQsIGVuZDtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1MDM6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUwNC1cXHR1bnNpZ25lZCBsb25nICpidjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTU0Mi1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo1NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgaXNtX29wcyA9IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01NDQtXFx0LmdldF9mYWJyaWNfaWQgPSBpc21fZ2V0X2NoaWQsXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz02MDU9c3RhdGljIGludCBpc21fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02MDYte1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjYwNzpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjA4LVxcdHN0cnVjdCB6cGNpX2RldiAqemRldjtcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTYzNS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2MzY6XFx0ZGlicyA9IGRpYnNfZGV2X2FsbG9jKCk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjM3LVxcdGlmICghZGlicykge1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ2LVxcdC8qIGVuYWJsZSBpc20gZGV2aWNlLCBidXQgYW55IGludGVycnVwdHMgYW5kIGV2ZW50cyB3aWxsIGJlIGlnbm9yZWRcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2NDc6XFx0ICogYmVmb3JlIGRpYnNfZGV2X2FkZCgpIGFkZHMgaXQgdG8gYW55IGNsaWVudHMuXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjQ4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjYyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjY2MzpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02NzEtZXJyX2RpYnM6XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6NjcyOlxcdC8qIHBhaXJzIHdpdGggZGlic19kZXZfYWxsb2MoKSAqL1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY3My1cXHRwdXRfZGV2aWNlKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9Njg1PXN0YXRpYyB2b2lkIGlzbV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy02ODctXFx0c3RydWN0IGlzbV9kZXYgKmlzbSA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2ODg6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzID0gaXNtLVxcdTAwM2VkaWJzO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY4OS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2OTA6XFx0ZGlic19kZXZfZGVsKGRpYnMpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTY5MS1cXHRpc21fZGV2X2V4aXQoaXNtKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzo2OTI6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNjkzLVxcdHB1dF9kZXZpY2UoXFx1MDAyNmRpYnMtXFx1MDAzZWRldik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC00NS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDo0NjpzdHJ1Y3QgZGlic19kbWIge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTQ3LVxcdC8qIHRvayAtIFRva2VuIGZvciB0aGlzIGRtYlxcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtNzQtICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6NzU6ZW51bSBkaWJzX2V2ZW50X3R5cGUge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTc2LVxcdC8qIEJ1ZmZlciBldmVudCwgZS5nLiBhIHJlbW90ZSBkbWIgd2FzIHVucmVnaXN0ZXJlZCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtODUtXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6ODY6ZW51bSBkaWJzX2V2ZW50X3N1YnR5cGUge1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTg3LVxcdERJQlNfQlVGX1VOUkVHSVNURVJFRCxcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTkyLVxcbmluY2x1ZGUvbGludXgvZGlicy5oOjkzOnN0cnVjdCBkaWJzX2V2ZW50IHtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC05NC1cXHR1MzIgdHlwZTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEwNC1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMDU6c3RydWN0IGRpYnNfZGV2O1xcbmluY2x1ZGUvbGludXgvZGlicy5oLTEwNi1cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTExNS0gKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMTY6c3RydWN0IGRpYnNfY2xpZW50X29wcyB7XFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTE3LVxcdC8qKlxcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIwLVxcdCAqXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTIxOlxcdCAqIFdpbGwgYmUgY2FsbGVkIGR1cmluZyBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIGZvciBhbGwgZXhpc3RpbmdcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjItXFx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIG5ldyBkaWJzIGRldmljZSBpcyByZWdpc3RlcmVkLlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEyMzpcXHQgKiBkZXYgaXMgdXNhYmxlIHVudGlsIGRpYnNfY2xpZW50LnJlbW92ZSgpIGlzIGNhbGxlZC5cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjQtXFx0ICogKmRldiBpcyBwcm90ZWN0ZWQgYnkgZGV2aWNlIHJlZmNvdW50aW5nLlxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyNS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMjY6XFx0dm9pZCAoKmFkZF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMjctXFx0LyoqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzEtXFx0ICogV2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBkaWJzIGRldmljZSBpcyByZW1vdmVkLlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEzMjpcXHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic191bnJlZ2lzdGVyX2NsaWVudCgpIGZvciBhbGwgZXhpc3RpbmdcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzMtXFx0ICogZGlicyBkZXZpY2VzIGFuZCB3aGVuZXZlciBhIGRpYnMgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEzNy1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxMzg6XFx0dm9pZCAoKmRlbF9kZXYpKHN0cnVjdCBkaWJzX2RldiAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xMzktXFx0LyoqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTItXFx0ICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTUzOlxcdHZvaWQgKCpoYW5kbGVfaXJxKShzdHJ1Y3QgZGlic19kZXYgKmRldiwgdW5zaWduZWQgaW50IGlkeCxcXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xNTQtXFx0XFx0XFx0ICAgdTE2IGRtYmVtYXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTE2MS1cXHQgKi9cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaDoxNjI6XFx0dm9pZCAoKmhhbmRsZV9ldmVudCkoc3RydWN0IGRpYnNfZGV2ICpkZXYsXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTYzOlxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGRpYnNfZXZlbnQgKmV2ZW50KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTAuMjM5MDM2MDUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNzY5Njk1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERJQlMgQ2xpZW50IFJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hvJ3MgcmVnaXN0ZXJpbmcgYXMgYSBESUJTIGNsaWVudC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYuIFRpbWUgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXTigJlzIGhhcHBlbmluZyBpbiB0aGUgc3lzdGVtLlxuXG5JJ2xsIHN0YXJ0IHdpdGggdGhlIG1vc3Qgb2J2aW91czogd2hlcmUncyB0aGUgZnVuY3Rpb24gb3IgbWV0aG9kIGNhbGwgcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVyaW5nIHRoZXNlIGNsaWVudHM/IEdpdmVuIHRoZSBuYW1pbmcgY29udmVudGlvbiB0aGF0J3MgbGlrZWx5IGBkaWJzX3JlZ2lzdGVyX2NsaWVudGAuIExldCdzIHVzZSBgZ3JlcGAgdG8gcXVpY2tseSBzZWFyY2ggdGhlIGNvZGViYXNlIGFuZCBmaW5kIGFsbCBpbnN0YW5jZXMgb2YgdGhhdCBmdW5jdGlvbiBuYW1lLiBUaGlzIHdpbGwgaW1tZWRpYXRlbHkgc2hvdyBtZSB3aGVyZSB0aGUgcmVnaXN0cmF0aW9uIGxvZ2ljIGlzIGludm9rZWQgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdoaWNoIEkgY2FuIHRoZW4gYW5hbHl6ZS4gRnJvbSB0aGVyZSBJIGNhbiBtb3ZlIGludG8gdGhlIGNvZGUgYW5kIGRldGVybWluZSBhbnkgcmVsZXZhbnQgcGFyYW1ldGVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyNTUsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTIuNDE2MDA4NTY2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjI1OTU4Nzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNfcmVnaXN0ZXJfY2xpZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZGlicy9kaWJzX21haW4uYz00MD1zdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgwLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19yZWdpc3Rlcl9jbGllbnQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04Mi1cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oPTExNj1zdHJ1Y3QgZGlic19jbGllbnRfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oLTEyMC1cXHQgKlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjEyMTpcXHQgKiBXaWxsIGJlIGNhbGxlZCBkdXJpbmcgZGlic19yZWdpc3Rlcl9jbGllbnQoKSBmb3IgYWxsIGV4aXN0aW5nXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTIyLVxcdCAqIGRpYnMgZGV2aWNlcyBhbmQgd2hlbmV2ZXIgYSBuZXcgZGlicyBkZXZpY2UgaXMgcmVnaXN0ZXJlZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvZGlicy5oPTE2Nj1zdHJ1Y3QgZGlic19jbGllbnQge1xcbi0tXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTc2LS8qKlxcbmluY2x1ZGUvbGludXgvZGlicy5oOjE3NzogKiBkaWJzX3JlZ2lzdGVyX2NsaWVudCgpIC0gcmVnaXN0ZXIgYSBjbGllbnQgd2l0aCBkaWJzIGxheWVyXFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTc4LSAqIEBjbGllbnQ6IHRoaXMgY2xpZW50XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2RpYnMuaC0xODItICovXFxuaW5jbHVkZS9saW51eC9kaWJzLmg6MTgzOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudCk7XFxuaW5jbHVkZS9saW51eC9kaWJzLmgtMTg0LS8qKlxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjMwPWludCBzbWNfaXNtX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cXG5uZXQvc21jL3NtY19pc20uYzo2Mzc6XFx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02MzgtXFx0cmV0dXJuIHJjO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1NC42NDE5NzM1NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE2NzQ4Mzk3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFNNQyBDbGllbnQgRGF0YSBNb3ZlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIFNNQyBzdHVmZiwgc3BlY2lmaWNhbGx5IHRoZSBjbGllbnQgc2lkZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggSSdtIHByZXR0eSBzdXJlIHJlc2lkZXMgd2l0aGluIGBuZXQvc21jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQncyBpbnRlcmFjdGluZyB3aXRoIERJQlMgYW5kIHVzaW5nIHRoYXQgYGRpYnNfbG9fbW92ZV9kYXRhYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBkYXRhIHRyYW5zZmVyIHByb2Nlc3MuXG5cbk15IGZpcnN0IHN0ZXAgaXMgZ29pbmcgdG8gYmUgYSBkZWVwIGRpdmUgaW50byB0aGUgYG5ldC9zbWMvYCBkaXJlY3RvcnkgYW5kIGl0cyBjb25maWd1cmF0aW9uIGZpbGVzLiBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgZmlsZXMgZGlyZWN0bHksIGxvb2tpbmcgZm9yIGhvdyBkYXRhIG1vdmVtZW50IGlzIG9yY2hlc3RyYXRlZCB3aXRoaW4gdGhlIFNNQyBjbGllbnQuIFRvIGFjY2VsZXJhdGUgdGhpbmdzLCBJJ20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciB0aGUgdGVybXMgXCJtb3ZlX2RhdGFcIiBhbmQgXCJkaWJzXCIgd2l0aGluIHRoYXQgc3BlY2lmaWMgZGlyZWN0b3J5LiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZm9jdXNlZCBsaXN0IG9mIHJlbGV2YW50IGZpbGVzIGFuZCBzZWN0aW9ucyBvZiBjb2RlIHRvIGV4YW1pbmUgY2xvc2VseS4gVGhhdCBzaG91bGQgcXVpY2tseSBwb2ludCBtZSB0byB0aGUgYXJlYXMgd2hlcmUgdGhlIERJQlMgaW50ZWdyYXRpb24gaXMgbW9zdCByZWxldmFudCB0byB0aGUgZGF0YSB0cmFuc2Zlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMTgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1Ni44MDk0NjAzNDZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDU0MDY1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfY2xjLmM9ODQ2PWludCBzbWNfY2xjX3NlbmRfcHJvcG9zYWwoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19jbGMuYy05MTktXFx0XFx0XFx0c21jZCA9IGluaS1cXHUwMDNlaXNtX2RldlswXTtcXG5uZXQvc21jL3NtY19jbGMuYzo5MjA6XFx0XFx0XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfY2xjLmMtOTIxLVxcdFxcdFxcdHBjbGNfc21jZC1cXHUwMDNlaXNtLmdpZCA9IGh0b25sbChzbWNkX2dpZC5naWQpO1xcbi0tXFxubmV0L3NtYy9zbWNfY2xjLmMtOTY5LVxcdFxcdFxcdFxcdHNtY2QgPSBpbmktXFx1MDAzZWlzbV9kZXZbaV07XFxubmV0L3NtYy9zbWNfY2xjLmM6OTcwOlxcdFxcdFxcdFxcdGNvcHlfdG9fc21jZGdpZChcXHUwMDI2c21jZF9naWQsIFxcdTAwMjZzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VnaWQpO1xcbm5ldC9zbWMvc21jX2NsYy5jLTk3MS1cXHRcXHRcXHRcXHRnaWRjaGlkc1tlbnRyeV0uY2hpZCA9XFxuLS1cXG5uZXQvc21jL3NtY19jbGMuYz0xMDQ3PXNtY2RfY2xjX3ByZXBfY29uZmlybV9hY2NlcHQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbi0tXFxubmV0L3NtYy9zbWNfY2xjLmMtMTA2Mi1cXHQgICAgICAgc2l6ZW9mKFNNQ0RfRVlFQ0FUQ0hFUikpO1xcbm5ldC9zbWMvc21jX2NsYy5jOjEwNjM6XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfY2xjLmMtMTA2NC1cXHRjbGMtXFx1MDAzZWhkci50eXBldjEgPSBTTUNfVFlQRV9EO1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTUzNj1zdGF0aWMgaW50IHNtY19ubF9maWxsX3NtY2RfbGdyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTU1Ny1cXHRcXHRnb3RvIGVycmF0dHI7XFxubmV0L3NtYy9zbWNfY29yZS5jOjU1ODpcXHRjb3B5X3RvX3NtY2RnaWQoXFx1MDAyNnNtY2RfZ2lkLCBcXHUwMDI2c21jZC1cXHUwMDNlZGlicy1cXHUwMDNlZ2lkKTtcXG5uZXQvc21jL3NtY19jb3JlLmMtNTU5LVxcdGlmIChubGFfcHV0X3U2NF82NGJpdChza2IsIFNNQ19OTEFfTEdSX0RfR0lELFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTg4OT1zdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTk0MC1cXHRcXHRzbWNkID0gaW5pLVxcdTAwM2Vpc21fZGV2W2luaS1cXHUwMDNlaXNtX3NlbGVjdGVkXTtcXG5uZXQvc21jL3NtY19jb3JlLmM6OTQxOlxcdFxcdGdldF9kZXZpY2UoXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxubmV0L3NtYy9zbWNfY29yZS5jLTk0Mi1cXHRcXHRsZ3ItXFx1MDAzZXBlZXJfZ2lkLmdpZCA9XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MTQ3NT1zdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ5MS1cXHRcXHRzbWNfaXNtX3B1dF92bGFuKGxnci1cXHUwMDNlc21jZCwgbGdyLVxcdTAwM2V2bGFuX2lkKTtcXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ5MjpcXHRcXHRwdXRfZGV2aWNlKFxcdTAwMjZsZ3ItXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTMtXFx0fVxcbi0tXFxubmV0L3NtYy9zbWNfZGlhZy5jPTcyPXN0YXRpYyBpbnQgX19zbWNfZGlhZ19kdW1wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2RpYWcuYy0xNzctXFx0XFx0ZGluZm8ucGVlcl9naWRfZXh0ID0gY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VwZWVyX2dpZC5naWRfZXh0O1xcbm5ldC9zbWMvc21jX2RpYWcuYzoxNzg6XFx0XFx0Y29weV90b19zbWNkZ2lkKFxcdTAwMjZzbWNkX2dpZCwgXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWdpZCk7XFxubmV0L3NtYy9zbWNfZGlhZy5jLTE3OS1cXHRcXHRkaW5mby5teV9naWQgPSBzbWNkX2dpZC5naWQ7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0xOS0jaW5jbHVkZSBcXFwic21jX25ldGxpbmsuaFxcXCJcXG5uZXQvc21jL3NtY19pc20uYzoyMDojaW5jbHVkZSBcXFwibGludXgvZGlicy5oXFxcIlxcbm5ldC9zbWMvc21jX2lzbS5jLTIxLVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9Mjg9c3RhdGljIHU4IHNtY19pc21fdjJfc3lzdGVtX2VpZFtTTUNfTUFYX0VJRF9MRU5dO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5LVxcbm5ldC9zbWMvc21jX2lzbS5jOjMwOnN0YXRpYyB2b2lkIHNtY2RfcmVnaXN0ZXJfZGV2KHN0cnVjdCBkaWJzX2RldiAqZGlicyk7XFxubmV0L3NtYy9zbWNfaXNtLmM6MzE6c3RhdGljIHZvaWQgc21jZF91bnJlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMyOnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcXG5uZXQvc21jL3NtY19pc20uYzozMzpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjM0OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG5uZXQvc21jL3NtY19pc20uYy0zNS1cXHRcXHRcXHQgICAgdTE2IGRtYmVtYXNrKTtcXG5uZXQvc21jL3NtY19pc20uYy0zNi1cXG5uZXQvc21jL3NtY19pc20uYzozNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50X29wcyBzbWNfY2xpZW50X29wcyA9IHtcXG5uZXQvc21jL3NtY19pc20uYy0zOC1cXHQuYWRkX2RldiA9IHNtY2RfcmVnaXN0ZXJfZGV2LFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDMtXFxubmV0L3NtYy9zbWNfaXNtLmM6NDQ6c3RhdGljIHN0cnVjdCBkaWJzX2NsaWVudCBzbWNfZGlic19jbGllbnQgPSB7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDUtXFx0Lm5hbWUgPSBcXFwiU01DLURcXFwiLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NzE9aW50IHNtY19pc21fY2FudGFsayhzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNzMte1xcbm5ldC9zbWMvc21jX2lzbS5jOjc0OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicyA9IHNtY2QtXFx1MDAzZWRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtNzUtXFx0dXVpZF90IGlzbV9yZ2lkO1xcbm5ldC9zbWMvc21jX2lzbS5jLTc2LVxcbm5ldC9zbWMvc21jX2lzbS5jOjc3OlxcdGNvcHlfdG9fZGlic2dpZChcXHUwMDI2aXNtX3JnaWQsIHBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo3ODpcXHRyZXR1cm4gZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VxdWVyeV9yZW1vdGVfZ2lkKGRpYnMsIFxcdTAwMjZpc21fcmdpZCwgdmxhbl9pZCA/IDEgOiAwLFxcbm5ldC9zbWMvc21jX2lzbS5jLTc5LVxcdFxcdFxcdFxcdFxcdCAgdmxhbl9pZCk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz05MD11MTYgc21jX2lzbV9nZXRfY2hpZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QpXFxubmV0L3NtYy9zbWNfaXNtLmMtOTEte1xcbm5ldC9zbWMvc21jX2lzbS5jOjkyOlxcdHJldHVybiBzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoc21jZC1cXHUwMDNlZGlicyk7XFxubmV0L3NtYy9zbWNfaXNtLmMtOTMtfVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MTMzPWludCBzbWNfaXNtX2dldF92bGFuKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdW5zaWduZWQgc2hvcnQgdmxhbmlkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMTQwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9zbWMvc21jX2lzbS5jOjE0MTpcXHRpZiAoIXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQpXFxubmV0L3NtYy9zbWNfaXNtLmMtMTQyLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTE2My1cXHQgKi9cXG5uZXQvc21jL3NtY19pc20uYzoxNjQ6XFx0aWYgKHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYWRkX3ZsYW5faWQoc21jZC1cXHUwMDNlZGlicywgdmxhbmlkKSkge1xcbm5ldC9zbWMvc21jX2lzbS5jLTE2NS1cXHRcXHRrZnJlZShuZXdfdmxhbik7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0xNzk9aW50IHNtY19pc21fcHV0X3ZsYW4oc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1bnNpZ25lZCBzaG9ydCB2bGFuaWQpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0xODctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubmV0L3NtYy9zbWNfaXNtLmM6MTg4OlxcdGlmICghc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VkZWxfdmxhbl9pZClcXG5uZXQvc21jL3NtY19pc20uYy0xODktXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjA1LVxcdC8qIEZvdW5kIGFuZCB0aGUgbGFzdCByZWZlcmVuY2UganVzdCBnb25lICovXFxubmV0L3NtYy9zbWNfaXNtLmM6MjA2OlxcdGlmIChzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWRlbF92bGFuX2lkKHNtY2QtXFx1MDAzZWRpYnMsIHZsYW5pZCkpXFxubmV0L3NtYy9zbWNfaXNtLmMtMjA3LVxcdFxcdHJjID0gLUVJTztcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTIxNT12b2lkIHNtY19pc21fdW5yZWdpc3Rlcl9kbWIoc3RydWN0IHNtY2RfZGV2ICpzbWNkLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjE3LXtcXG5uZXQvc21jL3NtY19pc20uYzoyMTg6XFx0c3RydWN0IGRpYnNfZG1iIGRtYjtcXG5uZXQvc21jL3NtY19pc20uYy0yMTktXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yMjktXFxubmV0L3NtYy9zbWNfaXNtLmM6MjMwOlxcdHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNldW5yZWdpc3Rlcl9kbWIoc21jZC1cXHUwMDNlZGlicywgXFx1MDAyNmRtYik7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjMxLVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjM1PWludCBzbWNfaXNtX3JlZ2lzdGVyX2RtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGRtYl9sZW4sXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yMzcte1xcbm5ldC9zbWMvc21jX2lzbS5jOjIzODpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmM6MjM5OlxcdHN0cnVjdCBkaWJzX2RtYiBkbWI7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjQwLVxcdGludCByYztcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTI0NS1cXHRkbWIudmxhbl9pZCA9IGxnci1cXHUwMDNldmxhbl9pZDtcXG5uZXQvc21jL3NtY19pc20uYzoyNDY6XFx0Y29weV90b19kaWJzZ2lkKFxcdTAwMjZkbWIucmdpZCwgXFx1MDAyNmxnci1cXHUwMDNlcGVlcl9naWQpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI0Ny1cXG5uZXQvc21jL3NtY19pc20uYzoyNDg6XFx0ZGlicyA9IGxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicztcXG5uZXQvc21jL3NtY19pc20uYzoyNDk6XFx0cmMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZXJlZ2lzdGVyX2RtYihkaWJzLCBcXHUwMDI2ZG1iLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy0yNTAtXFx0aWYgKCFyYykge1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9MjYwPWJvb2wgc21jX2lzbV9zdXBwb3J0X2RtYl9ub2NvcHkoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMjY1LVxcdCAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjI2NjpcXHRyZXR1cm4gKHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc3VwcG9ydF9tbWFwcGVkX3JkbWIgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19pc20uYzoyNjc6XFx0XFx0c21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzdXBwb3J0X21tYXBwZWRfcmRtYihzbWNkLVxcdTAwM2VkaWJzKSk7XFxubmV0L3NtYy9zbWNfaXNtLmMtMjY4LX1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTI3MD1pbnQgc21jX2lzbV9hdHRhY2hfZG1iKHN0cnVjdCBzbWNkX2RldiAqZGV2LCB1NjQgdG9rZW4sXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yNzIte1xcbm5ldC9zbWMvc21jX2lzbS5jOjI3MzpcXHRzdHJ1Y3QgZGlic19kbWIgZG1iO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI3NC1cXHRpbnQgcmMgPSAwO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI3NS1cXG5uZXQvc21jL3NtY19pc20uYzoyNzY6XFx0aWYgKCFkZXYtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYXR0YWNoX2RtYilcXG5uZXQvc21jL3NtY19pc20uYy0yNzctXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy0yODAtXFx0ZG1iLmRtYl90b2sgPSB0b2tlbjtcXG5uZXQvc21jL3NtY19pc20uYzoyODE6XFx0cmMgPSBkZXYtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlYXR0YWNoX2RtYihkZXYtXFx1MDAzZWRpYnMsIFxcdTAwMjZkbWIpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI4Mi1cXHRpZiAoIXJjKSB7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0yOTM9aW50IHNtY19pc21fZGV0YWNoX2RtYihzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgdTY0IHRva2VuKVxcbm5ldC9zbWMvc21jX2lzbS5jLTI5NC17XFxubmV0L3NtYy9zbWNfaXNtLmM6Mjk1OlxcdGlmICghZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWRldGFjaF9kbWIpXFxubmV0L3NtYy9zbWNfaXNtLmMtMjk2LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5Ny1cXG5uZXQvc21jL3NtY19pc20uYzoyOTg6XFx0cmV0dXJuIGRldi1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VkZXRhY2hfZG1iKGRldi1cXHUwMDNlZGlicywgdG9rZW4pO1xcbm5ldC9zbWMvc21jX2lzbS5jLTI5OS19XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0zMDE9c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY2RfZGV2KHN0cnVjdCBzbWNkX2RldiAqc21jZCxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTMwNy1cXHRzdHJ1Y3QgbmxhdHRyICpwb3J0X2F0dHJzO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMwODpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtMzA5LVxcdHN0cnVjdCBubGF0dHIgKmF0dHJzO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzEyLVxcbm5ldC9zbWMvc21jX2lzbS5jOjMxMzpcXHRkaWJzID0gc21jZC1cXHUwMDNlZGlicztcXG5uZXQvc21jL3NtY19pc20uYy0zMTQtXFx0bmxoID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCwgY2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzI3LVxcdG1lbXNldChcXHUwMDI2c21jX3BjaV9kZXYsIDAsIHNpemVvZihzbWNfcGNpX2RldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjMyODpcXHRzbWNfc2V0X3BjaV92YWx1ZXModG9fcGNpX2RldihkaWJzLVxcdTAwM2VkZXYucGFyZW50KSwgXFx1MDAyNnNtY19wY2lfZGV2KTtcXG5uZXQvc21jL3NtY19pc20uYy0zMjktXFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgU01DX05MQV9ERVZfUENJX0ZJRCwgc21jX3BjaV9kZXYucGNpX2ZpZCkpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz0zNjU9c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jZF9kZXYoc3RydWN0IHNtY2RfZGV2X2xpc3QgKmRldl9saXN0LFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtMzc3LVxcdFxcdFxcdGdvdG8gbmV4dDtcXG5uZXQvc21jL3NtY19pc20uYzozNzg6XFx0XFx0aWYgKHNtY19pc21faXNfbG9vcGJhY2soc21jZC1cXHUwMDNlZGlicykpXFxubmV0L3NtYy9zbWNfaXNtLmMtMzc5LVxcdFxcdFxcdGdvdG8gbmV4dDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTM5Nj1zdHJ1Y3Qgc21jX2lzbV9ldmVudF93b3JrIHtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTM5OC1cXHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2Q7XFxubmV0L3NtYy9zbWNfaXNtLmM6Mzk5OlxcdHN0cnVjdCBkaWJzX2V2ZW50IGV2ZW50O1xcbm5ldC9zbWMvc21jX2lzbS5jLTQwMC19O1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NDE3PXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX3N3X2V2ZW50KHN0cnVjdCBzbWNfaXNtX2V2ZW50X3dvcmsgKndyaylcXG5uZXQvc21jL3NtY19pc20uYy00MTgte1xcbm5ldC9zbWMvc21jX2lzbS5jOjQxOTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnMgPSB3cmstXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnM7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDIwLVxcdHVuaW9uIHNtY2Rfc3dfZXZlbnRfaW5mbyBldl9pbmZvO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDMxLVxcdFxcdGlmIChldl9pbmZvLmNvZGUgPT0gSVNNX0VWRU5UX1JFUVVFU1QgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19pc20uYzo0MzI6XFx0XFx0ICAgIGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc2lnbmFsX2V2ZW50KSB7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDMzLVxcdFxcdFxcdGV2X2luZm8uY29kZSA9IElTTV9FVkVOVF9SRVNQT05TRTtcXG5uZXQvc21jL3NtY19pc20uYzo0MzQ6XFx0XFx0XFx0Y29weV90b19kaWJzZ2lkKFxcdTAwMjZpc21fcmdpZCwgXFx1MDAyNnBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo0MzU6XFx0XFx0XFx0ZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzaWduYWxfZXZlbnQoZGlicywgXFx1MDAyNmlzbV9yZ2lkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTQzNi1cXHRcXHRcXHRcXHRcXHQgICAgICAgSVNNX0VWRU5UX1JFUVVFU1RfSVIsXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz00NjY9c3RhdGljIHN0cnVjdCBzbWNkX2RldiAqc21jZF9hbGxvY19kZXYoY29uc3QgY2hhciAqbmFtZSwgaW50IG1heF9kbWJzKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDkwLVxcbm5ldC9zbWMvc21jX2lzbS5jOjQ5MTpzdGF0aWMgdm9pZCBzbWNkX3JlZ2lzdGVyX2RldihzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxubmV0L3NtYy9zbWNfaXNtLmMtNDkyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTQ5NS1cXG5uZXQvc21jL3NtY19pc20uYzo0OTY6XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxubmV0L3NtYy9zbWNfaXNtLmMtNDk3LVxcbm5ldC9zbWMvc21jX2lzbS5jOjQ5ODpcXHRzbWNkID0gc21jZF9hbGxvY19kZXYoZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldiksIG1heF9kbWJzKTtcXG5uZXQvc21jL3NtY19pc20uYy00OTktXFx0aWYgKCFzbWNkKVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTAxLVxcbm5ldC9zbWMvc21jX2lzbS5jOjUwMjpcXHRzbWNkLVxcdTAwM2VkaWJzID0gZGlicztcXG5uZXQvc21jL3NtY19pc20uYzo1MDM6XFx0ZGlic19zZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50LCBzbWNkKTtcXG5uZXQvc21jL3NtY19pc20uYy01MDQtXFxubmV0L3NtYy9zbWNfaXNtLmM6NTA1OlxcdGlmIChzbWNfcG5ldGlkX2J5X2Rldl9wb3J0KGRpYnMtXFx1MDAzZWRldi5wYXJlbnQsIDAsIHNtY2QtXFx1MDAzZXBuZXRpZCkpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTA2LVxcdFxcdHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzbWNkKTtcXG5uZXQvc21jL3NtY19pc20uYy01MDctXFxubmV0L3NtYy9zbWNfaXNtLmM6NTA4OlxcdGlmIChzbWNfaXNtX2lzX2xvb3BiYWNrKGRpYnMpIHx8XFxubmV0L3NtYy9zbWNfaXNtLmM6NTA5OlxcdCAgICAoZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VhZGRfdmxhbl9pZCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zbWMvc21jX2lzbS5jOjUxMDpcXHQgICAgICFkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWFkZF92bGFuX2lkKGRpYnMsIElTTV9SRVNFUlZFRF9WTEFOSUQpKSkge1xcbm5ldC9zbWMvc21jX2lzbS5jLTUxMS1cXHRcXHRzbWNfaXNtX3NldF92Ml9jYXBhYmxlKCk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy01MjEtXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc21jZF9kZXYsIGxpc3QpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjUyMjpcXHRcXHRpZiAoZmVudHJ5IFxcdTAwMjZcXHUwMDI2IHNtY19pc21faXNfbG9vcGJhY2soZmVudHJ5LVxcdTAwM2VkaWJzKSlcXG5uZXQvc21jL3NtY19pc20uYy01MjMtXFx0XFx0XFx0bGlzdF9hZGQoXFx1MDAyNnNtY2QtXFx1MDAzZWxpc3QsIFxcdTAwMjZmZW50cnktXFx1MDAzZWxpc3QpO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTMyLVxcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGggcG5ldGlkICUuMTZzJXNcXFxcblxcXCIsXFxubmV0L3NtYy9zbWNfaXNtLmM6NTMzOlxcdFxcdFxcdFxcdCAgICBkZXZfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KSwgc21jZC1cXHUwMDNlcG5ldGlkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTUzNC1cXHRcXHRcXHRcXHQgICAgc21jZC1cXHUwMDNlcG5ldGlkX2J5X3VzZXIgP1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTM4LVxcdFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogYWRkaW5nIHNtY2QgZGV2aWNlICVzIHdpdGhvdXQgcG5ldGlkXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX2lzbS5jOjUzOTpcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTU0MC1cXHRyZXR1cm47XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy01NDItXFxubmV0L3NtYy9zbWNfaXNtLmM6NTQzOnN0YXRpYyB2b2lkIHNtY2RfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbm5ldC9zbWMvc21jX2lzbS5jLTU0NC17XFxubmV0L3NtYy9zbWNfaXNtLmM6NTQ1OlxcdHN0cnVjdCBzbWNkX2RldiAqc21jZCA9IGRpYnNfZ2V0X3ByaXYoZGlicywgXFx1MDAyNnNtY19kaWJzX2NsaWVudCk7XFxubmV0L3NtYy9zbWNfaXNtLmMtNTQ2LVxcbm5ldC9zbWMvc21jX2lzbS5jLTU0Ny1cXHRwcl93YXJuX3JhdGVsaW1pdGVkKFxcXCJzbWM6IHJlbW92aW5nIHNtY2QgZGV2aWNlICVzXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX2lzbS5jOjU0ODpcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNmRpYnMtXFx1MDAzZWRldikpO1xcbm5ldC9zbWMvc21jX2lzbS5jLTU0OS1cXHRzbWNkLVxcdTAwM2Vnb2luZ19hd2F5ID0gMTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTU2OC0gKi9cXG5uZXQvc21jL3NtY19pc20uYzo1Njk6c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxcbm5ldC9zbWMvc21jX2lzbS5jOjU3MDpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpXFxubmV0L3NtYy9zbWNfaXNtLmMtNTcxLXtcXG5uZXQvc21jL3NtY19pc20uYzo1NzI6XFx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy01NzMtXFx0c3RydWN0IHNtY19pc21fZXZlbnRfd29yayAqd3JrO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTkzLSAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk1LVxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk2LXtcXG5uZXQvc21jL3NtY19pc20uYzo1OTc6XFx0c3RydWN0IHNtY2RfZGV2ICpzbWNkID0gZGlic19nZXRfcHJpdihkaWJzLCBcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy01OTgtXFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gTlVMTDtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTYwOD1pbnQgc21jX2lzbV9zaWduYWxfc2h1dGRvd24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy02MTUtXFx0XFx0cmV0dXJuIDA7XFxubmV0L3NtYy9zbWNfaXNtLmM6NjE2OlxcdGlmICghbGdyLVxcdTAwM2VzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZXNpZ25hbF9ldmVudClcXG5uZXQvc21jL3NtY19pc20uYy02MTctXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYy02MjEtXFx0ZXZfaW5mby5jb2RlID0gSVNNX0VWRU5UX1JFUVVFU1Q7XFxubmV0L3NtYy9zbWNfaXNtLmM6NjIyOlxcdGNvcHlfdG9fZGlic2dpZChcXHUwMDI2aXNtX3JnaWQsIFxcdTAwMjZsZ3ItXFx1MDAzZXBlZXJfZ2lkKTtcXG5uZXQvc21jL3NtY19pc20uYzo2MjM6XFx0cmMgPSBsZ3ItXFx1MDAzZXNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlc2lnbmFsX2V2ZW50KGxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicywgXFx1MDAyNmlzbV9yZ2lkLFxcbm5ldC9zbWMvc21jX2lzbS5jLTYyNC1cXHRcXHRcXHRcXHRcXHQgIElTTV9FVkVOVF9SRVFVRVNUX0lSLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjMwPWludCBzbWNfaXNtX2luaXQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jLTYzNi1cXG5uZXQvc21jL3NtY19pc20uYzo2Mzc6XFx0cmMgPSBkaWJzX3JlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02MzgtXFx0cmV0dXJuIHJjO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmM9NjQxPXZvaWQgc21jX2lzbV9leGl0KHZvaWQpXFxubmV0L3NtYy9zbWNfaXNtLmMtNjQyLXtcXG5uZXQvc21jL3NtY19pc20uYzo2NDM6XFx0ZGlic191bnJlZ2lzdGVyX2NsaWVudChcXHUwMDI2c21jX2RpYnNfY2xpZW50KTtcXG5uZXQvc21jL3NtY19pc20uYy02NDQtfVxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmgtMTQtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L211dGV4LmhcXHUwMDNlXFxubmV0L3NtYy9zbWNfaXNtLmg6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5uZXQvc21jL3NtY19pc20uaC0xNi1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oPTY2PXN0YXRpYyBpbmxpbmUgaW50IHNtY19pc21fd3JpdGUoc3RydWN0IHNtY2RfZGV2ICpzbWNkLCB1NjQgZG1iX3RvayxcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTcxLVxcbm5ldC9zbWMvc21jX2lzbS5oOjcyOlxcdHJjID0gc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2Vtb3ZlX2RhdGEoc21jZC1cXHUwMDNlZGlicywgZG1iX3RvaywgaWR4LCBzZiwgb2Zmc2V0LFxcbm5ldC9zbWMvc21jX2lzbS5oLTczLVxcdFxcdFxcdFxcdCAgICAgICBkYXRhLCBsZW4pO1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmg9ODk9c3RhdGljIGlubGluZSBib29sIHNtY19pc21faXNfZW11bGF0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTkwLXtcXG5uZXQvc21jL3NtY19pc20uaDo5MTpcXHR1MTYgY2hpZCA9IHNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X2ZhYnJpY19pZChzbWNkLVxcdTAwM2VkaWJzKTtcXG5uZXQvc21jL3NtY19pc20uaC05Mi1cXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5oLTk1LVxcbm5ldC9zbWMvc21jX2lzbS5oOjk2OnN0YXRpYyBpbmxpbmUgYm9vbCBzbWNfaXNtX2lzX2xvb3BiYWNrKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5uZXQvc21jL3NtY19pc20uaC05Ny17XFxubmV0L3NtYy9zbWNfaXNtLmg6OTg6XFx0cmV0dXJuIChkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZWdldF9mYWJyaWNfaWQoZGlicykgPT0gRElCU19MT09QQkFDS19GQUJSSUMpO1xcbm5ldC9zbWMvc21jX2lzbS5oLTk5LX1cXG5uZXQvc21jL3NtY19pc20uaC0xMDAtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTAxOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3NtY2RnaWQoc3RydWN0IHNtY2RfZ2lkICpzZ2lkLCB1dWlkX3QgKmRpYnNfZ2lkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTEwMi17XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMDQtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTA1OlxcdG1lbWNweShcXHUwMDI2dGVtcCwgZGlic19naWQsIHNpemVvZihzZ2lkLVxcdTAwM2VnaWQpKTtcXG5uZXQvc21jL3NtY19pc20uaC0xMDYtXFx0c2dpZC1cXHUwMDNlZ2lkID0gbnRvaGxsKHRlbXApO1xcbm5ldC9zbWMvc21jX2lzbS5oOjEwNzpcXHRtZW1jcHkoXFx1MDAyNnRlbXAsICh1aW50OF90ICopZGlic19naWQgKyBzaXplb2Yoc2dpZC1cXHUwMDNlZ2lkKSxcXG5uZXQvc21jL3NtY19pc20uaC0xMDgtXFx0ICAgICAgIHNpemVvZihzZ2lkLVxcdTAwM2VnaWRfZXh0KSk7XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMTEtXFxubmV0L3NtYy9zbWNfaXNtLmg6MTEyOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX2RpYnNnaWQodXVpZF90ICpkaWJzX2dpZCwgc3RydWN0IHNtY2RfZ2lkICpzZ2lkKVxcbm5ldC9zbWMvc21jX2lzbS5oLTExMy17XFxuLS1cXG5uZXQvc21jL3NtY19pc20uaC0xMTYtXFx0dGVtcCA9IGh0b25sbChzZ2lkLVxcdTAwM2VnaWQpO1xcbm5ldC9zbWMvc21jX2lzbS5oOjExNzpcXHRtZW1jcHkoZGlic19naWQsIFxcdTAwMjZ0ZW1wLCBzaXplb2Yoc2dpZC1cXHUwMDNlZ2lkKSk7XFxubmV0L3NtYy9zbWNfaXNtLmgtMTE4LVxcdHRlbXAgPSBodG9ubGwoc2dpZC1cXHUwMDNlZ2lkX2V4dCk7XFxubmV0L3NtYy9zbWNfaXNtLmg6MTE5OlxcdG1lbWNweSgodWludDhfdCAqKWRpYnNfZ2lkICsgc2l6ZW9mKHNnaWQtXFx1MDAzZWdpZCksIFxcdTAwMjZ0ZW1wLFxcbm5ldC9zbWMvc21jX2lzbS5oLTEyMC1cXHQgICAgICAgc2l6ZW9mKHNnaWQtXFx1MDAzZWdpZF9leHQpKTtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz0xMDE9c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgY2hhciAqcG5ldF9uYW1lKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTE3MS1cXHRcXHRcXHRcXHRcXHQgICAgXFxcIiUuMTZzXFxcXG5cXFwiLFxcbm5ldC9zbWMvc21jX3BuZXQuYzoxNzI6XFx0XFx0XFx0XFx0XFx0ICAgIGRldl9uYW1lKFxcdTAwMjZzbWNkLVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYpLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xNzMtXFx0XFx0XFx0XFx0XFx0ICAgIHNtY2QtXFx1MDAzZXBuZXRpZCk7XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9MzM0PXN0YXRpYyBzdHJ1Y3Qgc21jZF9kZXYgKnNtY19wbmV0X2ZpbmRfc21jZChjaGFyICpzbWNkX25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMzM5LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoc21jZF9kZXYsIFxcdTAwMjZzbWNkX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQwOlxcdFxcdGlmICghc3RybmNtcChkZXZfbmFtZShcXHUwMDI2c21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldiksIHNtY2RfbmFtZSxcXG5uZXQvc21jL3NtY19wbmV0LmMtMzQxLVxcdFxcdFxcdCAgICAgSUJfREVWSUNFX05BTUVfTUFYIC0gMSkgfHxcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQyOlxcdFxcdCAgICAoc21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldi5wYXJlbnQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc21jL3NtY19wbmV0LmM6MzQzOlxcdFxcdCAgICAgIXN0cm5jbXAoZGV2X25hbWUoc21jZF9kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldi5wYXJlbnQpLCBzbWNkX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTM0NC1cXHRcXHRcXHQgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVggLSAxKSkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9NDE2PXN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX2liKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy00NDEtXFx0XFx0XFx0cHJfd2Fybl9yYXRlbGltaXRlZChcXFwic21jOiBzbWNkIGRldmljZSAlcyBhcHBsaWVkIHVzZXIgZGVmaW5lZCBwbmV0aWQgJS4xNnNcXFxcblxcXCIsXFxubmV0L3NtYy9zbWNfcG5ldC5jOjQ0MjpcXHRcXHRcXHRcXHRcXHQgICAgZGV2X25hbWUoXFx1MDAyNnNtY2QtXFx1MDAzZWRpYnMtXFx1MDAzZWRldiksXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQ0My1cXHRcXHRcXHRcXHRcXHQgICAgc21jZC1cXHUwMDNlcG5ldGlkKTtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz0xMjAyPWludCBzbWNfcG5ldGlkX2J5X3RhYmxlX3NtY2Qoc3RydWN0IHNtY2RfZGV2ICpzbWNkZGV2KVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMTYtXFx0XFx0ICAgICghc3RybmNtcCh0bXBfcGUtXFx1MDAzZWliX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEyMTc6XFx0XFx0XFx0ICAgICAgIGRldl9uYW1lKFxcdTAwMjZzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYpLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjE4LVxcdFxcdFxcdCAgICAgICBzaXplb2YodG1wX3BlLVxcdTAwM2VpYl9uYW1lKSkgfHxcXG5uZXQvc21jL3NtY19wbmV0LmM6MTIxOTpcXHRcXHQgICAgIChzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYucGFyZW50IFxcdTAwMjZcXHUwMDI2XFxubmV0L3NtYy9zbWNfcG5ldC5jLTEyMjAtXFx0XFx0ICAgICAgIXN0cm5jbXAodG1wX3BlLVxcdTAwM2VpYl9uYW1lLFxcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjIxOlxcdFxcdFxcdCAgICAgICBkZXZfbmFtZShzbWNkZGV2LVxcdTAwM2VkaWJzLVxcdTAwM2VkZXYucGFyZW50KSxcXG5uZXQvc21jL3NtY19wbmV0LmMtMTIyMi1cXHRcXHRcXHQgICAgICAgc2l6ZW9mKHRtcF9wZS1cXHUwMDNlaWJfbmFtZSkpKSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDI6NTYuOTI0MDA3NTM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NzkwOTk4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIFNNQyBXcml0ZSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgdGhpcyBgc21jX2lzbV93cml0ZWAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxsIHN0YWNrLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgKip3aG8qKiBhbmQgdGhlICoqaG93Kiog4oCTIHNwZWNpZmljYWxseSwgKndobyogaXMgY2FsbGluZyB0aGF0IGZ1bmN0aW9uIGFuZCB3aGF0IHRoZSBleGVjdXRpb24gcGF0aCwgdGhlIGNhbGwgKnN0YWNrKiwgbG9va3MgbGlrZSB0aGF0IGxlYWRzIHRvIGl0LiBFc3NlbnRpYWxseSwgSSdtIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhlIGNvZGUncyBleGVjdXRpb24gZmxvdyBsZWFkaW5nIHVwIHRvIHRoZSBwb2ludCBvZiBpbnRlcmVzdC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlOyBieSBleGFtaW5pbmcgdGhlIGNhbGxpbmcgZnVuY3Rpb25zLCBJIGNhbiBvZnRlbiBpbmZlciB0aGUgY29udGV4dCBhbmQgdGhlIHB1cnBvc2Ugb2YgdGhlIHdyaXRlIG9wZXJhdGlvbi4gS25vd2luZyB0aGUgY2FsbCBzdGFjayB3aWxsIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgYmVpbmcgd3JpdHRlbiwgYW5kIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGhlIHdyaXRlLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0IHRoZSBjb2RlIHRlbGxzIHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM5MywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAyOjU4LjgwMzExMDIxNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwMTc5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jX2lzbV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2lzbS5oPTY0PWludCBzbWNkX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTtcXG5uZXQvc21jL3NtY19pc20uaC02NS1cXG5uZXQvc21jL3NtY19pc20uaDo2NjpzdGF0aWMgaW5saW5lIGludCBzbWNfaXNtX3dyaXRlKHN0cnVjdCBzbWNkX2RldiAqc21jZCwgdTY0IGRtYl90b2ssXFxubmV0L3NtYy9zbWNfaXNtLmgtNjctXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9MzAzPWludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTMwNy1cXG5uZXQvc21jL3NtY190eC5jOjMwODpcXHRyYyA9IHNtY19pc21fd3JpdGUoY29ubi1cXHUwMDNlbGdyLVxcdTAwM2VzbWNkLCBjb25uLVxcdTAwM2VwZWVyX3Rva2VuLFxcbm5ldC9zbWMvc21jX3R4LmMtMzA5LVxcdFxcdFxcdCAgIGNvbm4tXFx1MDAzZXBlZXJfcm1iZV9pZHgsIHNpZ25hbCwgY29ubi1cXHUwMDNldHhfb2ZmICsgb2Zmc2V0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMjo1OC44NjUxMzQ5MDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM0MDU1NzM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYHNtY2RfdHhfaXNtX3dyaXRlYCBDYWxsZXJzKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gd29yay4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgc21jZF90eF9pc21fd3JpdGVgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHdoYXRldmVyIEknbSB0cm91Ymxlc2hvb3RpbmcsIG9wdGltaXppbmcsIG9yIHJlc2VhcmNoaW5nLiBUaGlzIGdpdmVzIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBmdW5jdGlvbidzIG92ZXJhbGwgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMC4yMDU2OTQ3MTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDQ4NDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWNkX3R4X2lzbV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2NkYy5jPTIzNz1pbnQgc21jZF9jZGNfbXNnX3NlbmQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxcbi0tXFxubmV0L3NtYy9zbWNfY2RjLmMtMjUzLVxcdGNkYy5jb25zLmNvbm5fc3RhdGVfZmxhZ3MgPSBjb25uLVxcdTAwM2Vsb2NhbF90eF9jdHJsLmNvbm5fc3RhdGVfZmxhZ3M7XFxubmV0L3NtYy9zbWNfY2RjLmM6MjU0OlxcdHJjID0gc21jZF90eF9pc21fd3JpdGUoY29ubiwgXFx1MDAyNmNkYywgc2l6ZW9mKGNkYyksIDAsIDEpO1xcbm5ldC9zbWMvc21jX2NkYy5jLTI1NS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvc21jL3NtY190eC5jPTE4MT1pbnQgc21jX3R4X3NlbmRtc2coc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmMtMzAyLS8qIHNuZGJ1ZiBjb25zdW1lcjogYWN0dWFsIGRhdGEgdHJhbnNmZXIgb2Ygb25lIHRhcmdldCBjaHVuayB3aXRoIElTTSB3cml0ZSAqL1xcbm5ldC9zbWMvc21jX3R4LmM6MzAzOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxubmV0L3NtYy9zbWNfdHguYy0zMDQtXFx0XFx0ICAgICAgdTMyIG9mZnNldCwgaW50IHNpZ25hbClcXG4tLVxcbm5ldC9zbWMvc21jX3R4LmM9NDIxPXN0YXRpYyBpbnQgc21jZF90eF9yZG1hX3dyaXRlcyhzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHNpemVfdCBsZW4sXFxuLS1cXG5uZXQvc21jL3NtY190eC5jLTQzNS1cXG5uZXQvc21jL3NtY190eC5jOjQzNjpcXHRcXHRcXHRyYyA9IHNtY2RfdHhfaXNtX3dyaXRlKGNvbm4sIGRhdGEsIHNyY19sZW4sIGRzdF9vZmYgK1xcbm5ldC9zbWMvc21jX3R4LmMtNDM3LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzaXplb2Yoc3RydWN0IHNtY2RfY2RjX21zZyksIDApO1xcbi0tXFxubmV0L3NtYy9zbWNfdHguaD00MD12b2lkIHNtY190eF9jb25zdW1lcl91cGRhdGUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCBib29sIGZvcmNlKTtcXG5uZXQvc21jL3NtY190eC5oOjQxOmludCBzbWNkX3R4X2lzbV93cml0ZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKmRhdGEsIHNpemVfdCBsZW4sXFxubmV0L3NtYy9zbWNfdHguaC00Mi1cXHRcXHQgICAgICB1MzIgb2Zmc2V0LCBpbnQgc2lnbmFsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDAuMzEwMTgzNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTk4ODY1NTg0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgRElCUyBNZXNzYWdpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSBgc21jX3R4X3NlbmRtc2dgIGFuZCBgc21jZF9jZGNfbXNnX3NlbmRgIGJvdGggdWx0aW1hdGVseSByZWx5IG9uIGBzbWNkX3R4X2lzbV93cml0ZWAuIFRoYXQncyB0aGUga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaGVyZSwgdGhlIGNvbW1vbiBkZW5vbWluYXRvci4gTm93LCBJIHdhbnQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdyB0aHJvdWdoIHRoZSBESUJTIGxvb3BiYWNrIGRldmljZSByZWdpc3RyYXRpb24gYW5kIG92ZXJhbGwgRElCUyBmdW5jdGlvbmFsaXR5LiBTaW5jZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGlzIGFyZWEsIEknbGwgZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHdpdGggYGRyaXZlcnMvZGlicy9kaWJzX21haW4uY2AgYW5kIHRoZW4gZ2V0IGludG8gdGhlIGxvb3BiYWNrIHNwZWNpZmljIGNvZGUgaW4gYGRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBESUJTIG1lY2hhbmljcyBhbmQgcmVnaXN0cmF0aW9uIGRldGFpbHMgaW4gdGhvc2UgZmlsZXMsIHdoaWNoIHdpbGwgY2xhcmlmeSBob3cgdGhhdCBkYXRhIGdldHMgd3JpdHRlbiB2aWEgdGhlIHVuZGVybHlpbmcgSVNNIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MzUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMi4yOTg4NDIyMzlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjM1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG4gMjM2OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGlkeCwgYm9vbCBzZiwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4gMjM3OlxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IHNpemUpXFxuIDIzODpcXHR7XFxuIDIzOTpcXHRcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuIDI0MDpcXHRcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuIDI0MTpcXHRcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiAyNDI6XFx0XFx0dTE2IHNfbWFzaztcXG4gMjQzOlxcdFxcdHU4IGNsaWVudF9pZDtcXG4gMjQ0OlxcdFxcdHUzMiBzYmFfaWR4O1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRsZGV2ID0gZGlicy1cXHUwMDNlZHJ2X3ByaXY7XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdHJlYWRfbG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNDk6XFx0XFx0aGFzaF9mb3JfZWFjaF9wb3NzaWJsZShsZGV2LVxcdTAwM2VkbWJfaHQsIHRtcF9ub2RlLCBsaXN0LCBkbWJfdG9rKSB7XFxuIDI1MDpcXHRcXHRcXHRpZiAodG1wX25vZGUtXFx1MDAzZXRva2VuID09IGRtYl90b2spIHtcXG4gMjUxOlxcdFxcdFxcdFxcdHJtYl9ub2RlID0gdG1wX25vZGU7XFxuIDI1MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gMjUzOlxcdFxcdFxcdH1cXG4gMjU0OlxcdFxcdH1cXG4gMjU1OlxcdFxcdGlmICghcm1iX25vZGUpIHtcXG4gMjU2OlxcdFxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI1NzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjU4OlxcdFxcdH1cXG4gMjU5OlxcdFxcdGlmICgodTY0KW9mZnNldCArIHNpemUgXFx1MDAzZSBybWJfbm9kZS1cXHUwMDNlbGVuKSB7XFxuIDI2MDpcXHRcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNjE6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDI2MjpcXHRcXHR9XFxuIDI2MzpcXHRcXG4gMjY0OlxcdFxcdG1lbWNweSgoY2hhciAqKXJtYl9ub2RlLVxcdTAwM2VjcHVfYWRkciArIG9mZnNldCwgZGF0YSwgc2l6ZSk7XFxuIDI2NTpcXHRcXHRzYmFfaWR4ID0gcm1iX25vZGUtXFx1MDAzZXNiYV9pZHg7XFxuIDI2NjpcXHRcXHRyZWFkX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyNjc6XFx0XFxuIDI2ODpcXHRcXHRpZiAoIXNmKVxcbiAyNjk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDI3MDpcXHRcXG4gMjcxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDI3MjpcXHRcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbiAyNzM6XFx0XFx0c19tYXNrID0gcm9yMTYoMHgxMDAwLCBpZHgpO1xcbiAyNzQ6XFx0XFx0aWYgKGxpa2VseShjbGllbnRfaWQgIT0gTk9fRElCU19DTElFTlQgXFx1MDAyNlxcdTAwMjYgZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdKSlcXG4gMjc1OlxcdFxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuIDI3NjpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDI3NzpcXHRcXG4gMjc4OlxcdFxcdHJldHVybiAwO1xcbiAyNzk6XFx0fVxcbiAyODA6XFx0XFxuIDI4MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGRpYnNfZGV2X29wcyBkaWJzX2xvX29wcyA9IHtcXG4gMjgyOlxcdFxcdC5nZXRfZmFicmljX2lkID0gZGlic19sb19nZXRfZmFicmljX2lkLFxcbiAyODM6XFx0XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuIDI4NDpcXHRcXHQubWF4X2RtYnMgPSBkaWJzX2xvX21heF9kbWJzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowMi4yOTg5NTQzMDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ0NjIyNDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgTG9jayBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLCBJIHNlZSBhIGxvY2sgYWNxdWlzaXRpb24gY2hhbmdlZC4gQmVmb3JlIHRoZSBwYXRjaCwgaXQgd2FzIGEgc2ltcGxlIGBzcGluX2xvY2tgIGFuZCBgc3Bpbl91bmxvY2tgIHNlcXVlbmNlLiBOb3csIGl0J3MgYHNwaW5fbG9ja19pcnFzYXZlYCBhbmQgYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoeSogdGhpcyBjaGFuZ2U/IFdoYXQncyB0aGUgY29udGV4dCB0aGF0IG5lY2Vzc2l0YXRlZCB0aGlzIG1vZGlmaWNhdGlvbj9cblxuVGhlIGRpZmZlcmVuY2UgaXMgc2lnbmlmaWNhbnQ6IGBfaXJxc2F2ZWAgaW1wbGllcyB0aGUgbmVlZCB0byBkaXNhYmxlIGludGVycnVwdHMgKGFuZCBzYXZlIHRoZSBjdXJyZW50IGludGVycnVwdCBzdGF0ZSkgZHVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgZmxhdy4gSXQncyBsaWtlbHkgdGhhdCBhIHJhY2UgY29uZGl0aW9uIG9yIGludGVycnVwdC1yZWxhdGVkIGlzc3VlIHdhcyBkaXNjb3ZlcmVkLiBUaGUgYGRpYnMtXHUwMDNlbG9ja2AgaXMgcHJvYmFibHkgcHJvdGVjdGluZyBzb21ldGhpbmcgdGhhdCBpcyBhbHNvIGFjY2Vzc2VkIGZyb20gaW50ZXJydXB0IGhhbmRsZXJzLCBvciBzb21ldGhpbmcgdGhhdCBpcyBzZW5zaXRpdmUgdG8gaW50ZXJydXB0IGxhdGVuY3kuXG5cblRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLCBJIG5lZWQgdG8gc2VlICpldmVyeXdoZXJlKiB0aGlzIGBkaWJzLVx1MDAzZWxvY2tgIGlzIHVzZWQuIEknbGwgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGBkaWJzLVx1MDAzZWxvY2tgLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgZW50aXJlIHVzYWdlIHBhdHRlcm4uIEkgbmVlZCB0byBrbm93IGhvdyBpdCBpcyBiZWluZyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgc3lzdGVtLiBBcmUgb3RoZXIgZnVuY3Rpb25zIGFsc28gY2hhbmdpbmcgdG8gaW50ZXJydXB0IHNhdmluZyB2ZXJzaW9ucz8gVGhhdCBjb250ZXh0IHdpbGwgaGVscCBtZSBxdWlja2x5IGRldGVybWluZSB0aGUgcm9vdCBjYXVzZSBhbmQgaWYgdGhlIGNoYW5nZSBpcyBhcHByb3ByaWF0ZS4gSWYgdGhlIGV4aXN0aW5nIGNvZGUgYWxyZWFkeSBoYXMgYXBwcm9wcmlhdGUgdXNlcywgdGhlcmUgbWF5IGJlIGFuIGlzc3VlIHdpdGggdGhpcyBjaGFuZ2UuIEl0J3MgdGltZSB0byBkaWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODE0LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDQuNzQ1MTgyOTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzEyMDcyMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlicy1cXHUwMDNlbG9ja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTQ4PXN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMDktXFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cXHUwMDNlaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYz0xMzI9c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1OC1cXHRpZiAobGFzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTU5OlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjAtXFx0XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWJfbm9kZS1cXHUwMDNlc2JhX2lkeF0gPSBOT19ESUJTX0NMSUVOVDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MTpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xNjItXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jPTIzNT1zdGF0aWMgaW50IGRpYnNfbG9fbW92ZV9kYXRhKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IGRtYl90b2ssXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3MC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjcyLVxcdGNsaWVudF9pZCA9IGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3NS1cXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0tXFx1MDAzZW9wcy1cXHUwMDNlaGFuZGxlX2lycShkaWJzLCBzYmFfaWR4LCBzX21hc2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc2OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI3Ny1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz00MD1zdGF0aWMgdm9pZCBkaWJzX3NldHVwX2ZvcndhcmRpbmcoc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ1OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ2LVxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50LVxcdTAwM2VpZF0gPSBjbGllbnQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjQ3OlxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDgtfVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTgzPWludCBkaWJzX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTkxLVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MjpcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy05My1cXHRcXHRtYXhfZG1icyA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlbWF4X2RtYnMoKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDMtXFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tjbGllbnQtXFx1MDAzZWlkXSA9IE5VTEw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwNDpcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwNS1cXHRcXHRjbGllbnRzW2NsaWVudC1cXHUwMDNlaWRdLVxcdTAwM2VvcHMtXFx1MDAzZWRlbF9kZXYoZGlicyk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xMzU9c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0MS1cXHRcXHRyZXR1cm4gZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQyOlxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQzLVxcdGRpYnMtXFx1MDAzZWRldi5yZWxlYXNlID0gZGlic19kZXZfcmVsZWFzZTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0yMjI9dm9pZCBkaWJzX2Rldl9kZWwoc3RydWN0IGRpYnNfZGV2ICpkaWJzKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyOC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjI5OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0RJQlNfQ0xJRU5UUzsgKytpKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzEtXFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tpXSA9IE5VTEw7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzMjpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIzMy1cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTI4Mz1zdGF0aWMgaW50IGlzbV9yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMxMS1cXHRkbWItXFx1MDAzZWRtYl90b2sgPSBjbWQucmVzcG9uc2UuZG1iX3RvaztcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYzozMTI6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0zMTMtXFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltkbWItXFx1MDAzZWlkeCAtIElTTV9ETUJfQklUX09GRlNFVF0gPSBjbGllbnQtXFx1MDAzZWlkO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMxNDpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzE1LW91dDpcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jPTMxOT1zdGF0aWMgaW50IGlzbV91bnJlZ2lzdGVyX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzMxLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzMjpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTMzMy1cXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYi1cXHUwMDNlaWR4IC0gSVNNX0RNQl9CSVRfT0ZGU0VUXSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjMzNDpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtMzM1LVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM9NDk5PXN0YXRpYyBpcnFyZXR1cm5fdCBpc21faGFuZGxlX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTEyLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUxMzpcXHRzcGluX2xvY2soXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jLTUxNC1cXHRpc20tXFx1MDAzZXNiYS1cXHUwMDNlcyA9IDA7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy01MzgtXFx0fVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtX2Rydi5jOjUzOTpcXHRzcGluX3VubG9jayhcXHUwMDI2ZGlicy1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmMtNTQwLVxcdHJldHVybiBJUlFfSEFORExFRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MDcuMTE2Mzk1NzkyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1MzMwNDk3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb2NraW5nIENvbnRleHQgaW4gdGhlIERhdGEgVHJhbnNmZXIgTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgZGlic2Agc3RydWN0dXJlIGFuZCBob3cgaXQgaGFuZGxlcyBpbnRlcnJ1cHRzLCBzcGVjaWZpY2FsbHkgZGF0YSB0cmFuc2ZlcnMuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgZGlicy1cdTAwM2Vsb2NrYCBpcyBiZWluZyBncmFiYmVkIHdpdGhpbiB0aGUgaGFyZGlycSBvciBzb2Z0aXJxIGNvbnRleHQuIFRoZSBgc3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jaylgIGNhbGwgaW4gYGlzbV9oYW5kbGVfaXJxYCwgb3IgcG90ZW50aWFsbHkgZWxzZXdoZXJlIHVzaW5nIGBzcGluX2xvY2tfaXJxc2F2ZWAsIG1ha2VzIHRoaXMgcHJldHR5IGNsZWFyLiBUaGlzIGltcGxpZXMgdGhhdCB3ZSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCBhYm91dCBwb3RlbnRpYWwgY29udGVudGlvbiBhbmQgcHJpb3JpdHkgaXNzdWVzLlxuXG5Ob3csIEkgc2VlIHRoYXQgdGhlIGBkaWJzX2xvX21vdmVfZGF0YWAgZnVuY3Rpb24gY2FsbHMgYGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzaylgICp1bmRlciogdGhlIHByb3RlY3Rpb24gb2YgYGRpYnMtXHUwMDNlbG9ja2AuIFRoaXMgc2VlbXMgbGlrZSB0aGUgY3JpdGljYWwgcGF0aCBmb3IgdGhlIGRhdGEgbW92ZW1lbnQgdHJpZ2dlcmVkIGJ5IGludGVycnVwdHMuIEl0IG1lYW5zIHRoYXQgYW55IG9wZXJhdGlvbiB3aXRoaW4gdGhpcyBgaGFuZGxlX2lycWAgY2FsbCBpcyBpbmhlcmVudGx5IHNlcmlhbGl6ZWQgYnkgdGhhdCBzcGlubG9jay5cblxuVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgaGFuZGxlX2lycWAgZnVuY3Rpb24uIExvb2tzIGxpa2UgaW4gdGhpcyBTTUMgY29udGV4dCwgdGhlIGBoYW5kbGVfaXJxYCBpcyByZXNvbHZlZCB0byBgc21jZF9oYW5kbGVfaXJxYC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24gbm93LiBMZXQncyBzZWUgd2hhdCdzIGhhcHBlbmluZyB0aGVyZSB3aXRoIHJlZ2FyZCB0byB0aGUgbG9ja3MgYW5kIGRhdGEgYWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzowOS42NDk0NTA0NzJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjk5NzE2NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic21jZF9oYW5kbGVfaXJxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvc21jX2lzbS5jPTMyPXN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2V2ZW50KHN0cnVjdCBkaWJzX2RldiAqZGlicyxcXG5uZXQvc21jL3NtY19pc20uYy0zMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGlic19ldmVudCAqZXZlbnQpO1xcbm5ldC9zbWMvc21jX2lzbS5jOjM0OnN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG5uZXQvc21jL3NtY19pc20uYy0zNS1cXHRcXHRcXHQgICAgdTE2IGRtYmVtYXNrKTtcXG4tLVxcbm5ldC9zbWMvc21jX2lzbS5jPTM3PXN0YXRpYyBzdHJ1Y3QgZGlic19jbGllbnRfb3BzIHNtY19jbGllbnRfb3BzID0ge1xcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNDAtXFx0LmhhbmRsZV9ldmVudCA9IHNtY2RfaGFuZGxlX2V2ZW50LFxcbm5ldC9zbWMvc21jX2lzbS5jOjQxOlxcdC5oYW5kbGVfaXJxID0gc21jZF9oYW5kbGVfaXJxLFxcbm5ldC9zbWMvc21jX2lzbS5jLTQyLX07XFxuLS1cXG5uZXQvc21jL3NtY19pc20uYz01Njk9c3RhdGljIHZvaWQgc21jZF9oYW5kbGVfZXZlbnQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLFxcbi0tXFxubmV0L3NtYy9zbWNfaXNtLmMtNTkzLSAqL1xcbm5ldC9zbWMvc21jX2lzbS5jOjU5NDpzdGF0aWMgdm9pZCBzbWNkX2hhbmRsZV9pcnEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1bnNpZ25lZCBpbnQgZG1ibm8sXFxubmV0L3NtYy9zbWNfaXNtLmMtNTk1LVxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjExLjc3OTQzMTYyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzgyMjYxMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHF1aXRlIGZhbWlsaWFyIHdpdGggbmV0d29ya2luZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBgc21jZF9oYW5kbGVfaXJxYCoqXG5cbkFscmlnaHQsIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gdW5kZXJzdGFuZCBob3cgd2UncmUgaGFuZGxpbmcgaW50ZXJydXB0cyB3aXRoaW4gdGhlIFNNQyBwcm90b2NvbCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgc21jZF9oYW5kbGVfaXJxYCBmdW5jdGlvbi4gSSBrbm93IHRoaXMgbGlrZWx5IHJlc2lkZXMgaW4gYG5ldC9zbWMvc21jX2lzbS5jYCwgc28gSSdsbCBwdWxsIHRoYXQgdXAgaW1tZWRpYXRlbHkuIE15IG1lbnRhbCBtb2RlbCBpcyBhbHJlYWR5IHByaW1lZCB3aXRoIHRoZSBrbm93bGVkZ2UgdGhhdCBTTUMsIG9yIFNoYXJlZCBNZW1vcnkgQ29tbXVuaWNhdGlvbnMsIG5lY2Vzc2l0YXRlcyBwcmV0dHkgdGlnaHQgc3luY2hyb25pemF0aW9uLCBlc3BlY2lhbGx5IGF0IHRoZSBoYXJkd2FyZSBpbnRlcnJ1cHQgbGV2ZWwuIFNvLCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBsb2dpYyByZWxhdGVkIHRvIHNoYXJlZCBtZW1vcnkgYWNjZXNzLCBwb3RlbnRpYWxseSBzcGlubG9ja3Mgb3Igb3RoZXIgY29uY3VycmVuY3kgbWVjaGFuaXNtcywgYW5kIGludGVycnVwdCBkaXNhYmxpbmcvZW5hYmxpbmcgYXJvdW5kIGNyaXRpY2FsIHNlY3Rpb25zLiBJJ2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgdGhlIGZvbGxvd2luZzogSG93IGRvZXMgdGhpcyBmdW5jdGlvbiBpZGVudGlmeSB0aGUgc3BlY2lmaWMgU01DIGNvbm5lY3Rpb24gdGhlIGludGVycnVwdCBpcyByZWxhdGVkIHRvPyBXaGF0IHN0ZXBzIGFyZSB0YWtlbiB0byBwcm9jZXNzIHRoZSBpbnRlcnJ1cHQg4oCTIGFyZSB3ZSBkZWFsaW5nIHdpdGggcmVjZWl2ZSBjb21wbGV0aW9ucywgc2VuZCBjb21wbGV0aW9ucywgZXJyb3JzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQ3J1Y2lhbGx5LCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgYWN0dWFsIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgaG93IGRhdGEgaXMgY29waWVkIGZyb20gc2hhcmVkIG1lbW9yeSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLiBBbmQgZmluYWxseSwgSSdsbCBiZSBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgcmFjZSBjb25kaXRpb25zIHdpdGhpbiB0aGlzIGludGVycnVwdCBoYW5kbGVyLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzMyMjgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNC4xNjE2OTc1OFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NtYy9zbWNfaXNtLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTg1LFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTg1OlxcdH1cXG4gNTg2OlxcdFxcbiA1ODc6XFx0LyogU01DRCBEZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuIENhbGxlZCBmcm9tIElTTSBkZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuXFxuIDU4ODpcXHQgKiBQYXJhbWV0ZXJzIGFyZSB0aGUgaXNtIGRldmljZSBwb2ludGVyLCBETUIgbnVtYmVyLCBhbmQgdGhlIERNQkUgYml0bWFzay5cXG4gNTg5OlxcdCAqIEZpbmQgdGhlIGNvbm5lY3Rpb24gYW5kIHNjaGVkdWxlIHRoZSB0YXNrbGV0IGZvciB0aGlzIGNvbm5lY3Rpb24uXFxuIDU5MDpcXHQgKlxcbiA1OTE6XFx0ICogQ29udGV4dDpcXG4gNTkyOlxcdCAqIC0gRnVuY3Rpb24gY2FsbGVkIGluIElSUSBjb250ZXh0IGZyb20gSVNNIGRldmljZSBkcml2ZXIgSVJRIGhhbmRsZXIuXFxuIDU5MzpcXHQgKi9cXG4gNTk0OlxcdHN0YXRpYyB2b2lkIHNtY2RfaGFuZGxlX2lycShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHVuc2lnbmVkIGludCBkbWJubyxcXG4gNTk1OlxcdFxcdFxcdFxcdCAgICB1MTYgZG1iZW1hc2spXFxuIDU5NjpcXHR7XFxuIDU5NzpcXHRcXHRzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QgPSBkaWJzX2dldF9wcml2KGRpYnMsIFxcdTAwMjZzbWNfZGlic19jbGllbnQpO1xcbiA1OTg6XFx0XFx0c3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uID0gTlVMTDtcXG4gNTk5OlxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIDYwMDpcXHRcXG4gNjAxOlxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZzbWNkLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuIDYwMjpcXHRcXHRjb25uID0gc21jZC1cXHUwMDNlY29ubltkbWJub107XFxuIDYwMzpcXHRcXHRpZiAoY29ubiBcXHUwMDI2XFx1MDAyNiAhY29ubi1cXHUwMDNla2lsbGVkKVxcbiA2MDQ6XFx0XFx0XFx0dGFza2xldF9zY2hlZHVsZShcXHUwMDI2Y29ubi1cXHUwMDNlcnhfdHNrbGV0KTtcXG4gNjA1OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNnNtY2QtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gNjA2OlxcdH1cXG4gNjA3OlxcdFxcbiA2MDg6XFx0aW50IHNtY19pc21fc2lnbmFsX3NodXRkb3duKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbiA2MDk6XFx0e1xcbiA2MTA6XFx0XFx0aW50IHJjID0gMDtcXG4gNjExOlxcdFxcdHVuaW9uIHNtY2Rfc3dfZXZlbnRfaW5mbyBldl9pbmZvO1xcbiA2MTI6XFx0XFx0dXVpZF90IGlzbV9yZ2lkO1xcbiA2MTM6XFx0XFxuIDYxNDpcXHRcXHRpZiAobGdyLVxcdTAwM2VwZWVyX3NodXRkb3duKVxcbiA2MTU6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDYxNjpcXHRcXHRpZiAoIWxnci1cXHUwMDNlc21jZC1cXHUwMDNlZGlicy1cXHUwMDNlb3BzLVxcdTAwM2VzaWduYWxfZXZlbnQpXFxuIDYxNzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNjE4OlxcdFxcbiA2MTk6XFx0XFx0bWVtY3B5KGV2X2luZm8udWlkLCBsZ3ItXFx1MDAzZWlkLCBTTUNfTEdSX0lEX1NJWkUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNC4xNjE4MzAyOFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNTU2MDI3MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbiBpbiB0aGUgRElCUyBMb29wYmFjayBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgZGlic19sb29wYmFjay5jYCBjb2RlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgYSBwb3RlbnRpYWwgaXNzdWUgcmVsYXRlZCB0byBsb2NraW5nIGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIGNhbGxlZCBkdXJpbmcgZGF0YSB0cmFuc21pc3Npb24g4oCTIHNwZWNpZmljYWxseSB0aHJvdWdoIHRoZSBgc21jX3R4X3NlbmRtc2dgIGZsb3cuIEl0IHVsdGltYXRlbHkgYm9pbHMgZG93biB0byBgb3BzLVx1MDAzZW1vdmVfZGF0YWAsIHdoaWNoIHJlc29sdmVzIHRvIGBkaWJzX2xvX21vdmVfZGF0YWAuIFRoZSBjb2RlIHVzZXMgYSBwbGFpbiBgc3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jaylgLCBhbmQgdGhhdCdzIHdoZXJlIG15IGV5ZWJyb3dzIGFyZSByYWlzaW5nLlxuXG5UaGUgcHJvYmxlbSwgYXMgSSBzZWUgaXQsIGlzIHRoYXQgYGRpYnMtXHUwMDNlbG9ja2AgaXMgYWxzbyBhY3F1aXJlZCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQgaW4gc29tZSBvdGhlciBwbGFjZXMsIGluY2x1ZGluZyBwb3RlbnRpYWxseSB3aXRoaW4gaW50ZXJydXB0IGhhbmRsZXJzIHRoZW1zZWx2ZXMuIElmIGFuIGludGVycnVwdCB3ZXJlIHRvIG9jY3VyIHdoaWxlIGBkaWJzX2xvX21vdmVfZGF0YWAgaXMgaG9sZGluZyB0aGF0IGxvY2ssIHdl4oCZcmUgc2V0dGluZyBvdXJzZWx2ZXMgdXAgZm9yIGEgbmFzdHkgbG9ja2RlcCB3YXJuaW5nLCBvciB3b3JzZSwgYSBjb21wbGV0ZSBkZWFkbG9jay4gQ2xhc3NpYy5cblxuVGhlIHN1Z2dlc3RlZCBwYXRjaCB0byB1c2UgYHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRpYnMtXHUwMDNlbG9jaywgZmxhZ3MpYCBpcyB0aGUgcmlnaHQgc29sdXRpb24uIFRoYXQncyB0aGUgY29ycmVjdCBsZXZlbCBvZiBwcm90ZWN0aW9uLiBXZSBuZWVkIHRvIHNhdmUgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrIGFuZCB0aGVuIHJlc3RvcmUgaXQuIEl0J3MgdGhlIG1vc3QgY29tbW9uIGFuZCBjb3JyZWN0IGFwcHJvYWNoIGluIHRoZXNlIHNpdHVhdGlvbnMuXG5cbk5vdywgSSdsbCBxdWlja2x5IGNoZWNrIHJlYWNoYWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdGFyZ2V0IGlzIGFtZDY0LiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgRElCUyBhbmQgRElCU19MTyBhcmUgZXZlbiBjb25maWd1cmVkIGFuZCBhdmFpbGFibGUgb24gdGhpcyBhcmNoaXRlY3R1cmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AsIGBuZXQvc21jL0tjb25maWdgLCBhbmQgYW55dGhpbmcgaW4gYGFyY2gveDg2L0tjb25maWdgIHRoYXQgbWlnaHQgY29udHJvbCB0aGVzZSBmZWF0dXJlcy4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlbGV2YW50IHRvIHRoaXMgdGFyZ2V0LiBJJ2xsIG1ha2Ugc3VyZSB0aGVyZSdzIG5vIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHdoaWNoIG1pZ2h0IG1ha2UgdGhpcyBhIG5vbi1pc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxNDIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzoxNy43MTc4NjAzNjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9kaWJzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRjb25maWcgRElCU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgaXMgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0XFxuICAgNzpcXHRcXHQgIHVzZXMgY29tbW9uIHBoeXNpY2FsIChpbnRlcm5hbCkgbWVtb3J5IGZvciBzeW5jaHJvbm91cyBkaXJlY3QgYWNjZXNzXFxuICAgODpcXHRcXHQgIGludG8gYSByZW1vdGUgYnVmZmVyLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuICAxMTpcXHRcXHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cXG4gIDEyOlxcdFxcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBESUJTX0xPXFxuICAxNTpcXHRcXHRib29sIFxcXCJJbnRyYS1PUyBzaG9ydGN1dCB3aXRoIGRpYnMgbG9vcGJhY2tcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIERJQlNcXG4gIDE3OlxcdFxcdGRlZmF1bHQgblxcbiAgMTg6XFx0XFx0aGVscFxcbiAgMTk6XFx0XFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXFxuICAyMDpcXHRcXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG4gIDIxOlxcdFxcdCAgb2NjdXJzIHdpdGhpbiB0aGUgc2FtZSBPUy4gVGhpcyBoZWxwcyBpbiBjb252ZW5pZW50IHRlc3Rpbmcgb2ZcXG4gIDIyOlxcdFxcdCAgZGlicyBjbGllbnRzLCBzaW5jZSBkaWJzIGxvb3BiYWNrIGlzIGluZGVwZW5kZW50IG9mIGFyY2hpdGVjdHVyZSBvclxcbiAgMjM6XFx0XFx0ICBoYXJkd2FyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MTcuNzE3OTI0ODAzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwMjU2MzczNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbnRlcm5hbCBSZXZpZXcgb2YgRElCU19MTyBmb3IgVGVzdGluZyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZSwgd2hhdCdzIHRoaXMgYERJQlNfTE9gIHRoaW5nPyBBaCwgdGhlIGhlbHAgdGV4dCBjbGFyaWZpZXM6IGl0IGNyZWF0ZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBESUJTIGRldmljZSwgYGxvYC4gU28sIGEgbG9vcGJhY2sgZm9yIERJQlMgZGF0YSB0cmFuc2ZlciB3aXRoaW4gYSBzaW5nbGUgT1MuIFRoZSBrZXkgdGFrZWF3YXkgaXMgaW5kZXBlbmRlbmNlIGZyb20gYXJjaGl0ZWN0dXJlIG9yIGhhcmR3YXJlOyBwZXJmZWN0IGZvciBjb252ZW5pZW50IHRlc3Rpbmcgb2YgRElCUyBjbGllbnRzLiBUaGF0J3MgYWN0dWFsbHkgcHJldHR5IGNsZXZlci4gVGhpcyBpcyBleGFjdGx5IHRoZSBzb3J0IG9mIHRoaW5nIHlvdSB3YW50IGZvciBhIHJvYnVzdCB0ZXN0aW5nIGVudmlyb25tZW50LlxuXG5Ob3csIHdoZXJlJ3MgdGhlIG1lYXQgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbj8gTGV0J3MgZGl2ZSBpbnRvIGBuZXQvc21jL0tjb25maWdgLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgdmlydHVhbCBkZXZpY2UgYXJlIGRlZmluZWQuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkndmUgaGFuZGxlZCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLCBhbmQgbWF5YmUgYW55IHBlcmZvcm1hbmNlIGNvbnNpZGVyYXRpb25zLiBJIHdvbmRlciBpZiBpdCBpbmNsdWRlcyBhbnkgaG9va3MgZm9yIGNhcHR1cmluZyBhbmQgYW5hbHl6aW5nIHRoZSBkYXRhIGZsb3cuIEdvdHRhIGdldCBhIGdvb2QgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiB0byBzZWUgaG93IHdlbGwgaXQncyBkZXNpZ25lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxNzksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjE5Ljc0MzU2NTI1MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgaWYgdW5zdXJlLCBzYXkgWS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gU01DIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgQlBGX1NZU0NBTExcXG4gIDI2OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcXG4gIDI5OlxcdFxcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXFxuICAzMDpcXHRcXHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxcbiAgMzE6XFx0XFx0ICB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCBmaWx0cmluZyB0aGUgaGFuZHNoYWtlIHByb2Nlc3MgdmlhIGVCUEYgcHJvZ3JhbXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjE5Ljc0MzY1OTA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjY4NzI1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIGBDT05GSUdfU01DYCBkZXBlbmRzIG9uIGBJTkVUYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLiBUaGF0J3Mgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlbiwgYENPTkZJR19ESUJTX0xPYCByZWxpZXMgb24gYERJQlNgIHdoaWNoIG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBESUJTYCBkZXBlbmRlbmN5IG1vcmUuIEl0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aWVkIHRvIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlLCB3aGljaCB1c3VhbGx5IG1lYW5zIGl0J3MgcHJldHR5IGdlbmVyaWMuIFNpbmNlIGl0J3MgbGlrZWx5IGEgZHJpdmVyLCBJJ2xsIGNoZWNrIGBkcml2ZXJzL0tjb25maWdgIHRvIHNlZSB3aGVyZSBgZHJpdmVycy9kaWJzL0tjb25maWdgIGlzIGluY2x1ZGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBsYXJnZXIgY29udGV4dCBmb3IgYERJQlNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjEuNjEwNTM0ODAxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NzcwMjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRpYnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2ODEgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvTWFrZWZpbGU9MTk3PW9iai15XFx0XFx0XFx0XFx0Kz0gcmVzY3RybC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5OC1cXG5kcml2ZXJzL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRElCUylcXHRcXHQrPSBkaWJzL1xcbmRyaXZlcnMvTWFrZWZpbGUtMjAwLW9iai0kKENPTkZJR19TMzkwKVxcdFxcdCs9IHMzOTAvXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZz0yPWNvbmZpZyBESUJTXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMC1cXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTE6XFx0ICBkaWJzIGRldmljZXMgYW5kIGRpYnMgY2xpZW50cyBsaWtlIHRoZSBTTUMgcHJvdG9jb2wuXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MTI6XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZz0xND1jb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnOjE1OlxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNi1cXHRkZXBlbmRzIG9uIERJQlNcXG4tLVxcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE4LVxcdGhlbHBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxOTpcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMC1cXHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0yMS1cXHQgIG9jY3VycyB3aXRoaW4gdGhlIHNhbWUgT1MuIFRoaXMgaGVscHMgaW4gY29udmVuaWVudCB0ZXN0aW5nIG9mXFxuZHJpdmVycy9kaWJzL0tjb25maWc6MjI6XFx0ICBkaWJzIGNsaWVudHMsIHNpbmNlIGRpYnMgbG9vcGJhY2sgaXMgaW5kZXBlbmRlbnQgb2YgYXJjaGl0ZWN0dXJlIG9yXFxuZHJpdmVycy9kaWJzL0tjb25maWctMjMtXFx0ICBoYXJkd2FyZS5cXG4tLVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo2OmRpYnMteSArPSBkaWJzX21haW4ub1xcbmRyaXZlcnMvZGlicy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ESUJTKSArPSBkaWJzLm9cXG5kcml2ZXJzL2RpYnMvTWFrZWZpbGU6ODpkaWJzLSQoQ09ORklHX0RJQlNfTE8pICs9IGRpYnNfbG9vcGJhY2sub1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yLS8qXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozOiAqICBGdW5jdGlvbnMgZm9yIGRpYnMgbG9vcGJhY2svbG9vcGJhY2staXNtIGRldmljZS5cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTQtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTMtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTQ6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE1LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwOiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNTpzdGF0aWMgY29uc3QgY2hhciBkaWJzX2xvX2Rldl9uYW1lW10gPSBcXFwibG9cXFwiO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjYtLyogZ2xvYmFsIGxvb3BiYWNrIGRldmljZSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc6c3RhdGljIHN0cnVjdCBkaWJzX2xvX2RldiAqbG9fZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTpzdGF0aWMgdTE2IGRpYnNfbG9fZ2V0X2ZhYnJpY19pZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ6c3RhdGljIGludCBkaWJzX2xvX3F1ZXJ5X3JnaWQoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBjb25zdCB1dWlkX3QgKnJnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNS1cXHRcXHRcXHQgICAgICB1MzIgdmlkX3ZhbGlkLCB1MzIgdmlkKVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNy1cXHQvKiByZ2lkIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBsZ2lkICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozODpcXHRpZiAoIXV1aWRfZXF1YWwocmdpZCwgXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCkpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zOS1cXHRcXHRyZXR1cm4gLUVORVRVTlJFQUNIO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQzOnN0YXRpYyBpbnQgZGlic19sb19tYXhfZG1icyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNDQte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy00Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ4OnN0YXRpYyBpbnQgZGlic19sb19yZWdpc3Rlcl9kbWIoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCBzdHJ1Y3QgZGlic19kbWIgKmRtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjQ5OlxcdFxcdFxcdFxcdHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50KVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtNTAte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6NTE6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKmRtYl9ub2RlLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzo1MjpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01My1cXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy01Ni1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjU3OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTU4LVxcdHNiYV9pZHggPSBkbWItXFx1MDAzZWlkeDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTA3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTA4OlxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMDk6XFx0ZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XSA9IGNsaWVudC1cXHUwMDNlaWQ7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMTA6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTExLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjE6c3RhdGljIHZvaWQgZGlic19sb19mcmVlX2RtYihzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXYsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMjI6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMjMte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxMzI6c3RhdGljIGludCBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgc3RydWN0IGRpYnNfZG1iICpkbWIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzMte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM0OlxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpkbWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjEzNTpcXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0xMzYtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTM4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTM5OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTU4LVxcdGlmIChsYXN0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNTk6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MDpcXHRcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW2RtYl9ub2RlLVxcdTAwM2VzYmFfaWR4XSA9IE5PX0RJQlNfQ0xJRU5UO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTYxOlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2MzpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2Ny1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE2ODpzdGF0aWMgaW50IGRpYnNfbG9fc3VwcG9ydF9kbWJfbm9jb3B5KHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE2OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3MzpzdGF0aWMgaW50IGRpYnNfbG9fYXR0YWNoX2RtYihzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHN0cnVjdCBkaWJzX2RtYiAqZG1iKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc0LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjE3NTpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoxNzY6XFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMTc3LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MTc4OlxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTE3OS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjAzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjA0OnN0YXRpYyBpbnQgZGlic19sb19kZXRhY2hfZG1iKHN0cnVjdCBkaWJzX2RldiAqZGlicywgdTY0IHRva2VuKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA1LXtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIwNjpcXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqZG1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMDc6XFx0c3RydWN0IGRpYnNfbG9fZGV2ICpsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjA4LVxcdGJvb2wgbGFzdDtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIwOS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIxMDpcXHRsZGV2ID0gZGlicy1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yMTEtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIyOS1cXHRpZiAobGFzdClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjIzMDpcXHRcXHRkaWJzX2xvX2ZyZWVfZG1iKGxkZXYsIGRtYl9ub2RlKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzMS1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjM1OnN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzNi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBpZHgsIGJvb2wgc2YsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTIzOC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyMzk6XFx0c3RydWN0IGRpYnNfbG9fZG1iX25vZGUgKnJtYl9ub2RlID0gTlVMTCwgKnRtcF9ub2RlO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MjQwOlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI0MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNDUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNDY6XFx0bGRldiA9IGRpYnMtXFx1MDAzZWRydl9wcml2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjQ3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yNzAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzE6XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3MjpcXHRjbGllbnRfaWQgPSBkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyW3NiYV9pZHhdO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjczLVxcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI3NDpcXHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcXHUwMDI2XFx1MDAyNiBkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6Mjc1OlxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbY2xpZW50X2lkXS1cXHUwMDNlb3BzLVxcdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyNzY6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMjc3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yODAtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODE6c3RhdGljIGNvbnN0IHN0cnVjdCBkaWJzX2Rldl9vcHMgZGlic19sb19vcHMgPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODI6XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODM6XFx0LnF1ZXJ5X3JlbW90ZV9naWQgPSBkaWJzX2xvX3F1ZXJ5X3JnaWQsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODQ6XFx0Lm1heF9kbWJzID0gZGlic19sb19tYXhfZG1icyxcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NTpcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODY6XFx0LnVucmVnaXN0ZXJfZG1iID0gZGlic19sb191bnJlZ2lzdGVyX2RtYixcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI4NzpcXHQubW92ZV9kYXRhID0gZGlic19sb19tb3ZlX2RhdGEsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODg6XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyODk6XFx0LmF0dGFjaF9kbWIgPSBkaWJzX2xvX2F0dGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzoyOTA6XFx0LmRldGFjaF9kbWIgPSBkaWJzX2xvX2RldGFjaF9kbWIsXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0yOTEtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5Mi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjI5MzpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9pbml0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwMTpzdGF0aWMgdm9pZCBkaWJzX2xvX2Rldl9leGl0KHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldilcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMwNi1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMwNzpzdGF0aWMgaW50IGRpYnNfbG9fZGV2X3Byb2JlKHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMDgte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzA5OlxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMxMDpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE2LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE3OlxcdGRpYnMgPSBkaWJzX2Rldl9hbGxvYygpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzE4OlxcdGlmICghZGlicykge1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzE5LVxcdFxcdGtmcmVlKGxkZXYpO1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjM6XFx0bGRldi1cXHUwMDNlZGlicyA9IGRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjQ6XFx0ZGlicy1cXHUwMDNlZHJ2X3ByaXYgPSBsZGV2O1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI1OlxcdGRpYnNfbG9fZGV2X2luaXQobGRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjY6XFx0dXVpZF9nZW4oXFx1MDAyNmRpYnMtXFx1MDAzZWdpZCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMjc6XFx0ZGlicy1cXHUwMDNlb3BzID0gXFx1MDAyNmRpYnNfbG9fb3BzO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzI5OlxcdGRpYnMtXFx1MDAzZWRldi5wYXJlbnQgPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzMwOlxcdGRldl9zZXRfbmFtZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2LCBcXFwiJXNcXFwiLCBkaWJzX2xvX2Rldl9uYW1lKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTMzMS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjMzMjpcXHRyZXQgPSBkaWJzX2Rldl9hZGQoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zMzMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzM4LWVycl9yZWc6XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozMzk6XFx0LyogcGFpcnMgd2l0aCBkaWJzX2Rldl9hbGxvYygpICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNDA6XFx0cHV0X2RldmljZShcXHUwMDI2ZGlicy1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM0MS1cXHRrZnJlZShsZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ1LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzQ2OnN0YXRpYyB2b2lkIGRpYnNfbG9fZGV2X3JlbW92ZSh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzQ3LXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUxOlxcdGRpYnNfZGV2X2RlbChsb19kZXYtXFx1MDAzZWRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzUyOlxcdGRpYnNfbG9fZGV2X2V4aXQobG9fZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1MzpcXHQvKiBwYWlycyB3aXRoIGRpYnNfZGV2X2FsbG9jKCkgKi9cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jOjM1NDpcXHRwdXRfZGV2aWNlKFxcdTAwMjZsb19kZXYtXFx1MDAzZWRpYnMtXFx1MDAzZWRldik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNTUtXFx0a2ZyZWUobG9fZGV2KTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzU4LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzU5OmludCBkaWJzX2xvb3BiYWNrX2luaXQodm9pZClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jLTM2MC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYzozNjE6XFx0cmV0dXJuIGRpYnNfbG9fZGV2X3Byb2JlKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjItfVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzYzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY0OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYy0zNjUte1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmM6MzY2OlxcdGRpYnNfbG9fZGV2X3JlbW92ZSgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmMtMzY3LX1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMi0vKlxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzogKiAgZGlicyBsb29wYmFjayAoYWthIGxvb3BiYWNrLWlzbSkgZGV2aWNlIHN0cnVjdHVyZSBkZWZpbml0aW9ucy5cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQtICpcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaDoxNTojaW5jbHVkZSBcXHUwMDNjbGludXgvZGlicy5oXFx1MDAzZVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2hhc2h0YWJsZS5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC0yNC1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjI1OnN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlIHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTI2LVxcdHN0cnVjdCBobGlzdF9ub2RlIGxpc3Q7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6MzU6c3RydWN0IGRpYnNfbG9fZGV2IHtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjM2OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTM3LVxcdGF0b21pY190IGRtYl9jbnQ7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTQzLVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmg6NDQ6aW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ1OnZvaWQgZGlic19sb29wYmFja19leGl0KHZvaWQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDYtI2Vsc2VcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjQ3OnN0YXRpYyBpbmxpbmUgaW50IGRpYnNfbG9vcGJhY2tfaW5pdCh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmgtNDgte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suaC01MS1cXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oOjUyOnN0YXRpYyBpbmxpbmUgdm9pZCBkaWJzX2xvb3BiYWNrX2V4aXQodm9pZClcXG5kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5oLTUzLXtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy04LSAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5OiNkZWZpbmUgcHJfZm10KGZtdCkgXFxcImRpYnM6IFxcXCIgZm10XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RpYnMuaFxcdTAwM2VcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTYtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE3OiNpbmNsdWRlIFxcXCJkaWJzX2xvb3BiYWNrLmhcXFwiXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTIwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xhc3MgZGlic19jbGFzcyA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjM6XFx0Lm5hbWVcXHRcXHQ9IFxcXCJkaWJzXFxcIixcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQtfTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNi0vKiB1c2UgYW4gYXJyYXkgcmF0aGVyIGEgbGlzdCBmb3IgZmFzdCBtYXBwaW5nOiAqL1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNzpzdGF0aWMgc3RydWN0IGRpYnNfY2xpZW50ICpjbGllbnRzW01BWF9ESUJTX0NMSUVOVFNdO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yOC1zdGF0aWMgdTggbWF4X2NsaWVudDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM9Mjk9c3RhdGljIERFRklORV9NVVRFWChjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozMDpzdHJ1Y3QgZGlic19kZXZfbGlzdCB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMxLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzI6XFx0c3RydWN0IG11dGV4IG11dGV4OyAvKiBwcm90ZWN0cyBkaWJzIGRldmljZSBsaXN0ICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTMzLX07XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNTpzdGF0aWMgc3RydWN0IGRpYnNfZGV2X2xpc3QgZGlic19kZXZfbGlzdCA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MzY6XFx0Lmxpc3QgPSBMSVNUX0hFQURfSU5JVChkaWJzX2Rldl9saXN0Lmxpc3QpLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzozNzpcXHQubXV0ZXggPSBfX01VVEVYX0lOSVRJQUxJWkVSKGRpYnNfZGV2X2xpc3QubXV0ZXgpLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOC19O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0zOS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NDA6c3RhdGljIHZvaWQgZGlic19zZXR1cF9mb3J3YXJkaW5nKHN0cnVjdCBkaWJzX2NsaWVudCAqY2xpZW50LFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0MTpcXHRcXHRcXHRcXHQgIHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDIte1xcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NjpcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudC1cXHUwMDNlaWRdID0gY2xpZW50O1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo0NzpcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkaWJzLVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNDktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjUwOmludCBkaWJzX3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTEte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1MjpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTUzLVxcdGludCBpLCByYyA9IC1FTk9TUEM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTU0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo1NTpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNTYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03MC1cXHRcXHQvKiBpbml0aWFsaXplIHdpdGggYWxsIGRldmljZXMgdGhhdCB3ZSBnb3Qgc28gZmFyICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjcxOlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZGlicywgXFx1MDAyNmRpYnNfZGV2X2xpc3QubGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo3MjpcXHRcXHRcXHRkaWJzLVxcdTAwM2Vwcml2W2ldID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6NzM6XFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VvcHMtXFx1MDAzZWFkZF9kZXYoZGlicyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjc0OlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnQsIGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy03NS1cXHRcXHR9XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTc2LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6Nzc6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtNzgtXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODAtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MTpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX3JlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTgyLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4MzppbnQgZGlic191bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgZGlic19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo4NTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTg2LVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtODktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjkwOlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5MTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGRpYnMsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QsIGxpc3QpIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTI6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6OTM6XFx0XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk0LVxcdFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgbWF4X2RtYnM7ICsraSkge1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzo5NTpcXHRcXHRcXHRpZiAoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2FycltpXSA9PSBjbGllbnQtXFx1MDAzZWlkKSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTk2LVxcdFxcdFxcdFxcdFdBUk4oMSwgXFxcIiVzOiBhdHRlbXB0IHRvIHVucmVnaXN0ZXIgJyVzJyB3aXRoIHJlZ2lzdGVyZWQgZG1iKHMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTEwMi1cXHRcXHQvKiBTdG9wIGZvcndhcmRpbmcgSVJRcyBhbmQgZXZlbnRzICovXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEwMzpcXHRcXHRkaWJzLVxcdTAwM2VzdWJzW2NsaWVudC1cXHUwMDNlaWRdID0gTlVMTDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA0OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA1OlxcdFxcdGNsaWVudHNbY2xpZW50LVxcdTAwM2VpZF0tXFx1MDAzZW9wcy1cXHUwMDNlZGVsX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTA2OlxcdFxcdGRpYnMtXFx1MDAzZXByaXZbY2xpZW50LVxcdTAwM2VpZF0gPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMDctXFx0fVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNC1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTE1OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGlic19kZXZfbGlzdC5tdXRleCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTExNi1cXHRyZXR1cm4gcmM7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTE4LWVycl9yZWdfZG1iOlxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMTk6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjA6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIxLVxcdHJldHVybiByYztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTIyLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTIzOkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfdW5yZWdpc3Rlcl9jbGllbnQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMjQtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEyNTpzdGF0aWMgdm9pZCBkaWJzX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTI2LXtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTI3OlxcdHN0cnVjdCBkaWJzX2RldiAqZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTI4LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMjk6XFx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzE6XFx0a2ZyZWUoZGlicy1cXHUwMDNlZG1iX2NsaWVudGlkX2Fycik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzMjpcXHRrZnJlZShkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTMzLX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTM0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzU6c3RydWN0IGRpYnNfZGV2ICpkaWJzX2Rldl9hbGxvYyh2b2lkKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzYte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxMzc6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xMzgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjEzOTpcXHRkaWJzID0ga3phbGxvY19vYmooKmRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDA6XFx0aWYgKCFkaWJzKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNDE6XFx0XFx0cmV0dXJuIGRpYnM7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MjpcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2ZGlicy1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0MzpcXHRkaWJzLVxcdTAwM2VkZXYucmVsZWFzZSA9IGRpYnNfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NDpcXHRkaWJzLVxcdTAwM2VkZXYuY2xhc3MgPSBcXHUwMDI2ZGlic19jbGFzcztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ1OlxcdGRldmljZV9pbml0aWFsaXplKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNDYtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE0NzpcXHRyZXR1cm4gZGlicztcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTQ4LX1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTQ5OkVYUE9SVF9TWU1CT0xfR1BMKGRpYnNfZGV2X2FsbG9jKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTUwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNTE9c3RhdGljIHNzaXplX3QgZ2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTMte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNTQ6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1NjpcXHRkaWJzID0gY29udGFpbmVyX29mKGRldiwgc3RydWN0IGRpYnNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNTctXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE1ODpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlcFViXFxcXG5cXFwiLCBcXHUwMDI2ZGlicy1cXHUwMDNlZ2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTU5LX1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYz0xNjI9c3RhdGljIHNzaXplX3QgZmFicmljX2lkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNjQte1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNjU6XFx0c3RydWN0IGRpYnNfZGV2ICpkaWJzO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xNjYtXFx0dTE2IGZhYnJpY19pZDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTY3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNjg6XFx0ZGlicyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBkaWJzX2RldiwgZGV2KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTY5OlxcdGZhYnJpY19pZCA9IGRpYnMtXFx1MDAzZW9wcy1cXHUwMDNlZ2V0X2ZhYnJpY19pZChkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTcwLVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jPTE3Mz1zdGF0aWMgREVWSUNFX0FUVFJfUk8oZmFicmljX2lkKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTc0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxNzU6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRpYnNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE3Ni1cXHRcXHUwMDI2ZGV2X2F0dHJfZ2lkLmF0dHIsXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTgwLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZGlic19kZXZfYXR0cl9ncm91cCA9IHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTgyOlxcdC5hdHRycyA9IGRpYnNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xODMtfTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg0LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxODU6aW50IGRpYnNfZGV2X2FkZChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE4Ni17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMTg5LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoxOTA6XFx0bWF4X2RtYnMgPSBkaWJzLVxcdTAwM2VvcHMtXFx1MDAzZW1heF9kbWJzKCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MTpcXHRkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyID0ga3phbGxvYyhtYXhfZG1icywgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5MjpcXHRpZiAoIWRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnIpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTE5My1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MTk0OlxcdG1lbXNldChkaWJzLVxcdTAwM2VkbWJfY2xpZW50aWRfYXJyLCBOT19ESUJTX0NMSUVOVCwgbWF4X2RtYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTUtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjE5NjpcXHRyZXQgPSBkZXZpY2VfYWRkKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0xOTktXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMDpcXHRyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoXFx1MDAyNmRpYnMtXFx1MDAzZWRldi5rb2JqLCBcXHUwMDI2ZGlic19kZXZfYXR0cl9ncm91cCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIwMS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMjpcXHRcXHRkZXZfZXJyKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYsIFxcXCJzeXNmc19jcmVhdGVfZ3JvdXAgZmFpbGVkIGZvciBkaWJzX2RldlxcXFxuXFxcIik7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIwMzpcXHRcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDQtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjA1LVxcdH1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjA2OlxcdG11dGV4X2xvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDctXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2xpZW50c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMDktXFx0XFx0aWYgKGNsaWVudHNbaV0pIHtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjEwOlxcdFxcdFxcdGNsaWVudHNbaV0tXFx1MDAzZW9wcy1cXHUwMDNlYWRkX2RldihkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjExOlxcdFxcdFxcdGRpYnNfc2V0dXBfZm9yd2FyZGluZyhjbGllbnRzW2ldLCBkaWJzKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjEyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTU6XFx0bGlzdF9hZGQoXFx1MDAyNmRpYnMtXFx1MDAzZWxpc3QsIFxcdTAwMjZkaWJzX2Rldl9saXN0Lmxpc3QpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMTY6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjE3LVxcbi0tXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIxOS19XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMDpFWFBPUlRfU1lNQk9MX0dQTChkaWJzX2Rldl9hZGQpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjEtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyMjp2b2lkIGRpYnNfZGV2X2RlbChzdHJ1Y3QgZGlic19kZXYgKmRpYnMpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTIyMy17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjI2LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMjc6XFx0c3lzZnNfcmVtb3ZlX2dyb3VwKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYua29iaiwgXFx1MDAyNmRpYnNfZGV2X2F0dHJfZ3JvdXApO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIyOTpcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9ESUJTX0NMSUVOVFM7ICsraSlcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjMxOlxcdFxcdGRpYnMtXFx1MDAzZXN1YnNbaV0gPSBOVUxMO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzI6XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGlicy1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjIzNDpcXHRtdXRleF9sb2NrKFxcdTAwMjZkaWJzX2Rldl9saXN0Lm11dGV4KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM1LVxcdG11dGV4X2xvY2soXFx1MDAyNmNsaWVudHNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjM3LVxcdFxcdGlmIChjbGllbnRzW2ldKVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyMzg6XFx0XFx0XFx0Y2xpZW50c1tpXS1cXHUwMDNlb3BzLVxcdTAwM2VkZWxfZGV2KGRpYnMpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yMzktXFx0fVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjbGllbnRzX2xvY2spO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDE6XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2ZGlicy1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0MjpcXHRtdXRleF91bmxvY2soXFx1MDAyNmRpYnNfZGV2X2xpc3QubXV0ZXgpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDMtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI0NDpcXHRkZXZpY2VfZGVsKFxcdTAwMjZkaWJzLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNDUtfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDY6RVhQT1JUX1NZTUJPTF9HUEwoZGlic19kZXZfZGVsKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjQ3LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNDg6c3RhdGljIGludCBfX2luaXQgZGlic19pbml0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI0OS17XFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjUxLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTI6XFx0cmMgPSBjbGFzc19yZWdpc3RlcihcXHUwMDI2ZGlic19jbGFzcyk7XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI1My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU1LVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYzoyNTY6XFx0cmMgPSBkaWJzX2xvb3BiYWNrX2luaXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmMtMjU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjItXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2MzpzdGF0aWMgdm9pZCBfX2V4aXQgZGlic19leGl0KHZvaWQpXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jLTI2NC17XFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2NTpcXHRkaWJzX2xvb3BiYWNrX2V4aXQoKTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjY2OlxcdGNsYXNzX3VucmVnaXN0ZXIoXFx1MDAyNmRpYnNfY2xhc3MpO1xcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjctfVxcbmRyaXZlcnMvZGlicy9kaWJzX21haW4uYy0yNjgtXFxuZHJpdmVycy9kaWJzL2RpYnNfbWFpbi5jOjI2OTpzdWJzeXNfaW5pdGNhbGwoZGlic19pbml0KTtcXG5kcml2ZXJzL2RpYnMvZGlic19tYWluLmM6MjcwOm1vZHVsZV9leGl0KGRpYnNfZXhpdCk7XFxuLS1cXG5kcml2ZXJzL21kL2JjYWNoZS9iY2FjaGUuaD00MjA9c3RydWN0IGNhY2hlIHtcXG4tLVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTQzNi1cXHQvKlxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oOjQzNzpcXHQgKiBXaGVuIGFsbG9jYXRpbmcgbmV3IGJ1Y2tldHMsIHByaW9fd3JpdGUoKSBnZXRzIGZpcnN0IGRpYnMgLSBzaW5jZSB3ZVxcbmRyaXZlcnMvbWQvYmNhY2hlL2JjYWNoZS5oLTQzOC1cXHQgKiBtYXkgbm90IGJlIGFsbG9jYXRlIGF0IGFsbCB3aXRob3V0IHdyaXRpbmcgcHJpb3JpdGllcyBhbmQgZ2Vucy5cXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmgtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaDo4OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9kaWJzLmhcXHUwMDNlXFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC05LSNpbmNsdWRlIFxcdTAwM2Nhc20vcGNpX2luc24uaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvczM5MC9uZXQvaXNtLmg9MjI3PXN0cnVjdCBpc21fZGV2IHtcXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oLTIyOC1cXHRzcGlubG9ja190IGNtZF9sb2NrOyAvKiBzZXJpYWxpemVzIGNtZHMgKi9cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbS5oOjIyOTpcXHRzdHJ1Y3QgZGlic19kZXYgKmRpYnM7XFxuZHJpdmVycy9zMzkwL25ldC9pc20uaC0yMzAtXFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYz0xNzc9c3RhdGljIHZvaWQgaXNtX2ZyZWVfaWVxKHN0cnVjdCBpc21fZGV2ICppc20pXFxuLS1cXG5kcml2ZXJzL3MzOTAvbmV0L2lzbV9kcnYuYy0xODUtXFxuZHJpdmVycy9zMzkwL25ldC9pc21fZHJ2LmM6MTg2OnN0YXRpYyBpbnQgaXNtX3JlYWRfbG9jYWxfZ2lkKHN0cnVjdCBkaWJzX2RldiAqZGlicylcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjIuNjc4MzE0NDY0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MzczODMxNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBhIERJQlMvU01DIExvb3BiYWNrIEZ1enppbmcgVGFyZ2V0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSdyZSBsb29raW5nIGF0IGBkcml2ZXJzL2RpYnNgLCBzcGVjaWZpY2FsbHkgdGhlIGxvb3BiYWNrIGNvbXBvbmVudCAoYGRpYnNfbG9vcGJhY2suY2ApLiBUaGlzIGlzIGEgdmlydHVhbCBzdWJzeXN0ZW0sIGEgc29mdHdhcmUgZW11bGF0aW9uIG9mIERpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyAoRElCUykgdXNlZCBmb3IgbG9vcGJhY2sgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgZW5hYmxlZCBieSBgQ09ORklHX0RJQlNgIGFuZCBgQ09ORklHX0RJQlNfTE9gLiBDcnVjaWFsbHksIGBDT05GSUdfU01DYCB1dGlsaXplcyBESUJTLCBzcGVjaWZpY2FsbHkgZm9yIGludHJhLU9TIGFuZCBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gdXNpbmcgU01DLUQgb3IgSVNNLlxuXG5XZSBrbm93IGBkaWJzX2xvb3BiYWNrLmluaXRgIGNyZWF0ZXMgdGhpcyBlbXVsYXRlZCBsb29wYmFjayBkZXZpY2UsIG5hbWVkIFwibG9cIi4gTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogV2hlbiBTTUMgY29ubmVjdGlvbnMgYXJlIGVzdGFibGlzaGVkIG92ZXIgdGhpcyBsb29wYmFjaywgb3Igd2UncmUgc2VuZGluZyBkYXRhIHZpYSBTTUMtRCB1c2luZyBsb29wYmFjaywgdGhlIGZ1bmN0aW9uIGBkaWJzX2xvX21vdmVfZGF0YWAgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0IGlzIG91ciB0YXJnZXQuIFdlIGNhbiByZWFjaCB0aGlzIG9uIGFtZDY0IGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgdXNpbmcgU01DIHNvY2tldHMgKEFGX1NNQykgYW5kIHdoZW4gYENPTkZJR19ESUJTX0xPYCBpcyBhbHNvIGVuYWJsZWQuXG5cbk5vdywgbGV0J3MgYXNzZXNzIHRoZSBjcml0ZXJpYSBmb3IgZnV6emluZy4gSXMgaXQgcmVhY2hhYmxlPyBBYnNvbHV0ZWx5LiBXZSd2ZSBnb3QgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBkZXZpY2UgdGhhdCBpcyB0cmlnZ2VyZWQgYnkgU01DLCBzcGVjaWZpY2FsbHkgb24gYW1kNjQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIElzIGl0IHdvcnRoIGZ1enppbmc/IFllcywgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGF0IGNvZGUgdGhhdCAqbW9kaWZpZXMgbG9ja2luZyBtZWNoYW5pc21zKjogc3BlY2lmaWNhbGx5IGNoYW5naW5nIGZyb20gYHNwaW5fbG9ja2AgdG8gYHNwaW5fbG9ja19pcnFzYXZlYCAqd2l0aGluKiBgZGlic19sb19tb3ZlX2RhdGFgLCBhbmQgaXQncyByZWFjaGFibGUgY29kZS4gVGhlIGZ1bmN0aW9uIG5hbWUgc3VnZ2VzdHMgc2hhcmVkIGJ1ZmZlciB1c2FnZSBhbmQgbG9ja2luZyBpcyBzb21ldGhpbmcgdGhhdCdzIGFsd2F5cyBpbnRlcmVzdGluZyBmb3IgZnV6emluZy5cblxuTGV0J3MgbmFpbCBkb3duIG91ciBgRm9jdXNTeW1ib2xzYC4gT2J2aW91c2x5LCBgZGlic19sb19tb3ZlX2RhdGFgIGlzIHRoZSBwcmltYXJ5IHRhcmdldCBiZWNhdXNlIG9mIHRoZSBsb2NrIG1vZGlmaWNhdGlvbi4gSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBvdGhlciwgbGVzcyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2A6IGBkaWJzX2xvX3JlZ2lzdGVyX2RtYmAsIGBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iYCwgYGRpYnNfbG9fYXR0YWNoX2RtYmAsIGBkaWJzX2xvX2RldGFjaF9kbWJgLCBhbmQgcG90ZW50aWFsbHkgYHNtY2RfdHhfaXNtX3dyaXRlYC4gSSB0aGluayB0aGUgYmVzdCBhcHByb2FjaCBpcyB0byBzdGFydCB3aXRoIGEgbGFzZXIgZm9jdXMgb24gYGRpYnNfbG9fbW92ZV9kYXRhYCBhbmQgZXhwYW5kIGFzIG5lZWRlZC5cblxuRmluYWxseSwgdGhlIGBFbmFibGVDb25maWdzYC4gV2UgbmVlZCBgRElCU2AsIGBESUJTX0xPYCwgYW5kIGJlY2F1c2UgYFNNQ2AgdXNlcyBESUJTLCB3ZSBzaG91bGQgaW5jbHVkZSBgU01DYC4gSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgZHJpdmVycy9LY29uZmlnYCB0byBjb25maXJtIHRoZSBpbmNsdWRlIG9mIHRoZSBgZGlicy9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczOTcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MjcuMjE1NzAwMTQxWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTIyNjI4MTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRyaXZlcnMvZGlicy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTkwPXNvdXJjZSBcXFwibmV0L3NtYy9LY29uZmlnXFxcIlxcbm5ldC9LY29uZmlnOjkxOnNvdXJjZSBcXFwiZHJpdmVycy9kaWJzL0tjb25maWdcXFwiXFxubmV0L0tjb25maWctOTItc291cmNlIFxcXCJuZXQveGRwL0tjb25maWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjI5LjMzODMzMjg0OFoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzM3NDM0NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBESUJTIExvb3BiYWNrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyB3aGF0IEknbSBzZWVpbmcuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgbmV0L0tjb25maWdgIGFuZCBpdCBzb3VyY2VzIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuIFRoYXQgdGVsbHMgbWUgdGhlIERJQlMgKERlZGljYXRlZCBJbnRlcnJ1cHQgQmxvY2sgU3lzdGVtKSBsb29wYmFjayBkZXZpY2UgZHJpdmVyIGlzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gV2UndmUgZ290IGBDT05GSUdfRElCU2AgYW5kIGBDT05GSUdfRElCU19MT2AsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGVuIGBDT05GSUdfU01DYCBmb3IgdGhvc2UgU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlciBzb2NrZXRzLiBHb29kLiBOb3csIGxldCdzIG5haWwgZG93biB0aGUgc3BlY2lmaWNzLlxuXG5SaWdodCwgdGhlIG1ldGFkYXRhIGNvbmZpcm1zIHdoYXQgSSBzdXNwZWN0ZWQuIGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBvZnRlbiBpbmRpY2F0ZXMgYSBoaWdoZXItcmlzayBjb21wb25lbnQsIG9uZSB0aGF0IGlzIGludGVyZXN0aW5nIHRvIGZ1enogdGVzdC4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IGNvbmZpcm1zIHRoYXQgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgU01DYCBhcmUgZW5hYmxlZCwgc28gd2UndmUgZ290IHRoZSBmdWxsIHNjb3BlIGZvciBhbmFseXNpcy4gVGhlIGltcG9ydGFudCBiaXQsIHRoZSBgRm9jdXNTeW1ib2xzYCwgaGlnaGxpZ2h0cyBgZGlic19sb19tb3ZlX2RhdGFgLiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjaGFuZ2UgaXMgaGFwcGVuaW5nLiBUaGUgYFJlYXNvbmluZ2AgcHJvdmlkZXMgdGhlIG1lYXQgb2YgaXQuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIHJlcGxhY2luZyBgc3Bpbl9sb2NrYCB3aXRoIGBzcGluX2xvY2tfaXJxc2F2ZWAgaW4gYGRpYnNfbG9fbW92ZV9kYXRhYCB3aXRoaW4gdGhlIERJQlMgbG9vcGJhY2sgZGV2aWNlIGRyaXZlciB0byBwcm9wZXJseSBkaXNhYmxlIGludGVycnVwdHMgd2hpbGUgYWNxdWlyaW5nIGBkaWJzLVx1MDAzZWxvY2tgLiBUaGlzIGlzIGEgY3JpdGljYWwgY2hhbmdlLCBhIGNsYXNzaWMgcmFjZSBjb25kaXRpb24gZml4LCBpc24ndCBpdD8gVGhlIGV4cGxhbmF0aW9uIGFsc28gbm90ZXMgdGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFNNQyBzb2NrZXRzIG92ZXIgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIERJQlMgbG9vcGJhY2sgZGV2aWNlLCBzbyB0aGUgcG90ZW50aWFsIGltcGFjdCBpcyBtdWNoIG1vcmUgd2lkZXNwcmVhZCB0aGFuIGluaXRpYWxseSBzZWVuLiBJdCdzIG5vdCBhIGZyaW5nZSBjYXNlLlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCByZWNvcmQgbXkgY29uY2x1c2lvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NTQyLCJPdXRwdXRUb2tlbnMiOjEzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzozMy4wNzU3NzAyMDhaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ0MzA4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlNNQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpYnNfbG9fbW92ZV9kYXRhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUgaW4gZGlic19sb19tb3ZlX2RhdGEgdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gYWNxdWlyaW5nIGRpYnMtXFx1MDAzZWxvY2sgZnJvbSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRleHRzLiBUaGUgRElCUyBsb29wYmFjayBkcml2ZXIgcHJvdmlkZXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBsb29wYmFjayBtZWNoYW5pc20gZm9yIGludHJhLU9TIFNNQy1EIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIHJlYWNoYWJsZSBvbiBhbWQ2NCB2aWEgQUZfU01DIHNvY2tldHMgd2l0aG91dCByZXF1aXJpbmcgc3BlY2lhbGl6ZWQgcGh5c2ljYWwgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRElCU1wiLFxuICAgIFwiRElCU19MT1wiLFxuICAgIFwiU01DXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlic19sb19tb3ZlX2RhdGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2sgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSBpbiBkaWJzX2xvX21vdmVfZGF0YSB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBhY3F1aXJpbmcgZGlicy1cXHUwMDNlbG9jayBmcm9tIGRpZmZlcmVudCBpbnRlcnJ1cHQgY29udGV4dHMuIFRoZSBESUJTIGxvb3BiYWNrIGRyaXZlciBwcm92aWRlcyBhIHNvZnR3YXJlLWVtdWxhdGVkIGxvb3BiYWNrIG1lY2hhbmlzbSBmb3IgaW50cmEtT1MgU01DLUQgY29tbXVuaWNhdGlvbiwgd2hpY2ggaXMgcmVhY2hhYmxlIG9uIGFtZDY0IHZpYSBBRl9TTUMgc29ja2V0cyB3aXRob3V0IHJlcXVpcmluZyBzcGVjaWFsaXplZCBwaHlzaWNhbCBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzMuMjEwMjA4NjE2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzYxOTU4ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzMuMjEwNjY2MjM2WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6ODc2MTQ5NDc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgc3Bpbl9sb2NrKCkvc3Bpbl91bmxvY2soKSB3aXRoIHNwaW5fbG9ja19pcnFzYXZlKCkvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpIG9uIGRpYnMtXFx1MDAzZWxvY2sgaW4gZGlic19sb19tb3ZlX2RhdGEoKS4gVGhpcyBpcyBwdXJlbHkgYSBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgZGVhZGxvY2tzIHdoZW4gZGlicy1cXHUwMDNlbG9jayBpcyBhY2Nlc3NlZCBmcm9tIElSUSBjb250ZXh0cy4gVGhlIGNoYW5nZSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnksIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBidWZmZXJzLCBhbHRlciBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24sIG9yIGNvcHkgZGF0YSB0byB1c2VyIHNwYWNlLiBMb2NraW5nIGFuZCBjb25jdXJyZW5jeSBpc3N1ZXMgYXJlIG1vbml0b3JlZCBieSBMT0NLREVQIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLCBub3QgS01TQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFlYzA4MmYwZDNmZDBlZmYxMDIxNGQwNTc3Y2EwMDQ2ZjBjMTk3MTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IFNlcCA1IDE5OjAyOjMyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suYyBiL2RyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcbmluZGV4IDY0OWU0ZTM3NWJlMzMuLjQ0YTJlNzRjMmVmY2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG4rKysgYi9kcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jXG5AQCAtMjM4LDYgKzIzOCw3IEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiB7XG4gXHRzdHJ1Y3QgZGlic19sb19kbWJfbm9kZSAqcm1iX25vZGUgPSBOVUxMLCAqdG1wX25vZGU7XG4gXHRzdHJ1Y3QgZGlic19sb19kZXYgKmxkZXY7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTE2IHNfbWFzaztcbiBcdHU4IGNsaWVudF9pZDtcbiBcdHUzMiBzYmFfaWR4O1xuQEAgLTI2NywxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgZGlic19sb19tb3ZlX2RhdGEoc3RydWN0IGRpYnNfZGV2ICpkaWJzLCB1NjQgZG1iX3RvayxcbiBcdGlmICghc2YpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0c3Bpbl9sb2NrKFx1MDAyNmRpYnMtXHUwMDNlbG9jayk7XG4rXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcdGNsaWVudF9pZCA9IGRpYnMtXHUwMDNlZG1iX2NsaWVudGlkX2FycltzYmFfaWR4XTtcbiBcdHNfbWFzayA9IHJvcjE2KDB4MTAwMCwgaWR4KTtcbiBcdGlmIChsaWtlbHkoY2xpZW50X2lkICE9IE5PX0RJQlNfQ0xJRU5UIFx1MDAyNlx1MDAyNiBkaWJzLVx1MDAzZXN1YnNbY2xpZW50X2lkXSkpXG4gXHRcdGRpYnMtXHUwMDNlc3Vic1tjbGllbnRfaWRdLVx1MDAzZW9wcy1cdTAwM2VoYW5kbGVfaXJxKGRpYnMsIHNiYV9pZHgsIHNfbWFzayk7XG4tXHRzcGluX3VubG9jayhcdTAwMjZkaWJzLVx1MDAzZWxvY2spO1xuK1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkaWJzLVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA1VDE5OjAzOjMzLjIxMDY2NzIyNloiLCJTZXEiOjM5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNzE5MzAzOTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRElCcyBMb29wYmFjayBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QgdGhpbmcncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgcGF0Y2guIEknbGwgc3RhcnQgd2l0aCB0aGUgZGlmZiBpdHNlbGYuIEl0IGxvb2tzIGxpa2Ugd2UncmUgaW4gdGhlIGBkcml2ZXJzL2RpYnMvZGlic19sb29wYmFjay5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZGlic19sb19tb3ZlX2RhdGFgIGZ1bmN0aW9uLlxuXG5SaWdodCBhd2F5LCBJIHNlZSB0aGUgY29yZSBjaGFuZ2U6IHRoZSBzcGlubG9jayBpcyBiZWluZyBtb2RpZmllZC4gV2UncmUgbW92aW5nIGZyb20gYSBzaW1wbGUgYHNwaW5fbG9ja2AgYW5kIGBzcGluX3VubG9ja2AgcGFpciB0byBgc3Bpbl9sb2NrX2lycXNhdmVgIGFuZCBgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZWAuIFRoaXMgc2lnbmFscyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGludGVycnVwdCBjb250ZXh0LiBXZSdyZSBub3cgc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIGludGVycnVwdCBzdGF0ZSBiZWZvcmUgYW5kIGFmdGVyIGFjcXVpcmluZyB0aGUgbG9jaywgYW5kIHRoYXQgaW1wbGllcyB3ZSBhcmUgd29ycmllZCBhYm91dCByYWNlIGNvbmRpdGlvbnMgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCBzZWVtcyB3ZSBoYXZlIGEgbG9jayAoYGRpYnMtXHUwMDNlbG9ja2ApIHByb3RlY3RpbmcgYWNjZXNzIHRvIGBjbGllbnRfaWRgLCBgc19tYXNrYCwgYW5kIHRoZSBgZGlicy1cdTAwM2VzdWJzYCBhcnJheS4gVGhlIGNvZGUgY2hlY2tzIGZvciBhIHZhbGlkIGBjbGllbnRfaWRgLCBhbmQgaWYgb25lIGV4aXN0cyBjYWxscyBhIGZ1bmN0aW9uLCBgaGFuZGxlX2lycWAsIHByZXN1bWFibHkgb24gdGhlIHN1YnNjcmliZXIncyBvcGVyYXRpb24gc3RydWN0LiBUaGlzIGZ1bmN0aW9uIGBoYW5kbGVfaXJxYCBtdXN0IGJlIGV4ZWN1dGluZyB1bmRlciBhIGNyaXRpY2FsIHNlY3Rpb24sIGFuZCB0aGlzIHBhdGNoIGlzIG5vdyBtYWtpbmcgc3VyZSB0aGUgaW50ZXJydXB0IGNvbnRleHQgaXMgcHJlc2VydmVkLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbGwgbmVlZCB0byBleHBsb3JlIHRoZSBjb250ZXh0IGFyb3VuZCB0aGlzIGZ1bmN0aW9uIGNhbGwuIEkgbmVlZCB0byBzZWUgd2hhdCBgZGlicy1cdTAwM2Vsb2NrYCBwcm90ZWN0cywgd2hhdCBgaGFuZGxlX2lycWAgYWN0dWFsbHkgKmRvZXMqLCBhbmQgd2hlcmUgYGRpYnNfbG9fbW92ZV9kYXRhYCBpcyBjYWxsZWQgZnJvbS4gSSdsbCBuZWVkIHRvIGNvbnN1bHQgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLiBUaGVyZWZvcmUsIEknbGwgbmVlZCB0byB1c2UgbXkgdG9vbHMgdG8gZXhhbWluZSBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AgaW4gbW9yZSBkZXRhaWwuIEknbSBnb2luZyB0byBsb29rIGZvciBhIGJldHRlciB2aWV3IG9mIHRoZSBjb2RlIGFuZCBhbnkgb3RoZXIgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzYuOTI5OTc0NjQ3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZGlicy9kaWJzX2xvb3BiYWNrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjIwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjIwOlxcdFxcdGlmICghZG1iX25vZGUpIHtcXG4gMjIxOlxcdFxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyMjI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDIyMzpcXHRcXHR9XFxuIDIyNDpcXHRcXHRsYXN0ID0gcmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZkbWJfbm9kZS1cXHUwMDNlcmVmY250KTtcXG4gMjI1OlxcdFxcdGlmIChsYXN0KVxcbiAyMjY6XFx0XFx0XFx0aGFzaF9kZWwoXFx1MDAyNmRtYl9ub2RlLVxcdTAwM2VsaXN0KTtcXG4gMjI3OlxcdFxcdHdyaXRlX3VubG9ja19iaChcXHUwMDI2bGRldi1cXHUwMDNlZG1iX2h0X2xvY2spO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRpZiAobGFzdClcXG4gMjMwOlxcdFxcdFxcdGRpYnNfbG9fZnJlZV9kbWIobGRldiwgZG1iX25vZGUpO1xcbiAyMzE6XFx0XFxuIDIzMjpcXHRcXHRyZXR1cm4gMDtcXG4gMjMzOlxcdH1cXG4gMjM0OlxcdFxcbiAyMzU6XFx0c3RhdGljIGludCBkaWJzX2xvX21vdmVfZGF0YShzdHJ1Y3QgZGlic19kZXYgKmRpYnMsIHU2NCBkbWJfdG9rLFxcbiAyMzY6XFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgaWR4LCBib29sIHNmLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbiAyMzc6XFx0XFx0XFx0XFx0ICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4gMjM4OlxcdHtcXG4gMjM5OlxcdFxcdHN0cnVjdCBkaWJzX2xvX2RtYl9ub2RlICpybWJfbm9kZSA9IE5VTEwsICp0bXBfbm9kZTtcXG4gMjQwOlxcdFxcdHN0cnVjdCBkaWJzX2xvX2RldiAqbGRldjtcXG4gMjQxOlxcdFxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuIDI0MjpcXHRcXHR1MTYgc19tYXNrO1xcbiAyNDM6XFx0XFx0dTggY2xpZW50X2lkO1xcbiAyNDQ6XFx0XFx0dTMyIHNiYV9pZHg7XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdGxkZXYgPSBkaWJzLVxcdTAwM2VkcnZfcHJpdjtcXG4gMjQ3OlxcdFxcbiAyNDg6XFx0XFx0cmVhZF9sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI0OTpcXHRcXHRoYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKGxkZXYtXFx1MDAzZWRtYl9odCwgdG1wX25vZGUsIGxpc3QsIGRtYl90b2spIHtcXG4gMjUwOlxcdFxcdFxcdGlmICh0bXBfbm9kZS1cXHUwMDNldG9rZW4gPT0gZG1iX3Rvaykge1xcbiAyNTE6XFx0XFx0XFx0XFx0cm1iX25vZGUgPSB0bXBfbm9kZTtcXG4gMjUyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAyNTM6XFx0XFx0XFx0fVxcbiAyNTQ6XFx0XFx0fVxcbiAyNTU6XFx0XFx0aWYgKCFybWJfbm9kZSkge1xcbiAyNTY6XFx0XFx0XFx0cmVhZF91bmxvY2tfYmgoXFx1MDAyNmxkZXYtXFx1MDAzZWRtYl9odF9sb2NrKTtcXG4gMjU3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNTg6XFx0XFx0fVxcbiAyNTk6XFx0XFx0aWYgKCh1NjQpb2Zmc2V0ICsgc2l6ZSBcXHUwMDNlIHJtYl9ub2RlLVxcdTAwM2VsZW4pIHtcXG4gMjYwOlxcdFxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI2MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjYyOlxcdFxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0bWVtY3B5KChjaGFyICopcm1iX25vZGUtXFx1MDAzZWNwdV9hZGRyICsgb2Zmc2V0LCBkYXRhLCBzaXplKTtcXG4gMjY1OlxcdFxcdHNiYV9pZHggPSBybWJfbm9kZS1cXHUwMDNlc2JhX2lkeDtcXG4gMjY2OlxcdFxcdHJlYWRfdW5sb2NrX2JoKFxcdTAwMjZsZGV2LVxcdTAwM2VkbWJfaHRfbG9jayk7XFxuIDI2NzpcXHRcXG4gMjY4OlxcdFxcdGlmICghc2YpXFxuIDI2OTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gMjcwOlxcdFxcbiAyNzE6XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjcyOlxcdFxcdGNsaWVudF9pZCA9IGRpYnMtXFx1MDAzZWRtYl9jbGllbnRpZF9hcnJbc2JhX2lkeF07XFxuIDI3MzpcXHRcXHRzX21hc2sgPSByb3IxNigweDEwMDAsIGlkeCk7XFxuIDI3NDpcXHRcXHRpZiAobGlrZWx5KGNsaWVudF9pZCAhPSBOT19ESUJTX0NMSUVOVCBcXHUwMDI2XFx1MDAyNiBkaWJzLVxcdTAwM2VzdWJzW2NsaWVudF9pZF0pKVxcbiAyNzU6XFx0XFx0XFx0ZGlicy1cXHUwMDNlc3Vic1tjbGllbnRfaWRdLVxcdTAwM2VvcHMtXFx1MDAzZWhhbmRsZV9pcnEoZGlicywgc2JhX2lkeCwgc19tYXNrKTtcXG4gMjc2OlxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRpYnMtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gMjc3OlxcdFxcbiAyNzg6XFx0XFx0cmV0dXJuIDA7XFxuIDI3OTpcXHR9XFxuIDI4MDpcXHRcXG4gMjgxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGlic19kZXZfb3BzIGRpYnNfbG9fb3BzID0ge1xcbiAyODI6XFx0XFx0LmdldF9mYWJyaWNfaWQgPSBkaWJzX2xvX2dldF9mYWJyaWNfaWQsXFxuIDI4MzpcXHRcXHQucXVlcnlfcmVtb3RlX2dpZCA9IGRpYnNfbG9fcXVlcnlfcmdpZCxcXG4gMjg0OlxcdFxcdC5tYXhfZG1icyA9IGRpYnNfbG9fbWF4X2RtYnMsXFxuIDI4NTpcXHRcXHQucmVnaXN0ZXJfZG1iID0gZGlic19sb19yZWdpc3Rlcl9kbWIsXFxuIDI4NjpcXHRcXHQudW5yZWdpc3Rlcl9kbWIgPSBkaWJzX2xvX3VucmVnaXN0ZXJfZG1iLFxcbiAyODc6XFx0XFx0Lm1vdmVfZGF0YSA9IGRpYnNfbG9fbW92ZV9kYXRhLFxcbiAyODg6XFx0XFx0LnN1cHBvcnRfbW1hcHBlZF9yZG1iID0gZGlic19sb19zdXBwb3J0X2RtYl9ub2NvcHksXFxuIDI4OTpcXHRcXHQuYXR0YWNoX2RtYiA9IGRpYnNfbG9fYXR0YWNoX2RtYixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDVUMTk6MDM6MzYuOTMwMDY1Mzc3WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNDIwNDg1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogQ29uY3VycmVuY3kgRml4LCBOb3QgVW5pbml0aWFsaXplZCBNZW1vcnkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgbG9jayB1cGdyYWRlOiBgc3Bpbl9sb2NrYCBpcyBiZWluZyByZXBsYWNlZCB3aXRoIGBzcGluX2xvY2tfaXJxc2F2ZWAsIGFuZCBgc3Bpbl91bmxvY2tgIHdpdGggYHNwaW5fdW5sb2NrX2lycXJlc3RvcmVgLiBJdCdzIGhhcHBlbmluZyBpbiBgZHJpdmVycy9kaWJzL2RpYnNfbG9vcGJhY2suY2AsIHdpdGhpbiB0aGUgYGRpYnNfbG9fbW92ZV9kYXRhYCBmdW5jdGlvbi4gVGhlIHByaW1hcnkgZ29hbCBpcyB0byBhZGRyZXNzIGEgcG90ZW50aWFsIGRlYWRsb2NrIHNjZW5hcmlvIHdoZW4gYGRpYnMtXHUwMDNlbG9ja2AgaXMgaGVsZCBpbiBhbiBpbnRlcnJ1cHQgb3Igc29mdGlycS9pcnEgY29udGV4dC4gVGhpcyBpcyBwdXJlbHkgYSBjb25jdXJyZW5jeSBpc3N1ZS5cblxuTm93LCBsZXQncyBydW4gdGhyb3VnaCB0aGUgS01TQU4gY2hlY2tsaXN0LiBEb2VzIHRoaXMgaW50cm9kdWNlIG5ldyBhbGxvY2F0aW9ucywgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSwgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXJzcGFjZSwgb3Igc2NyZXcgd2l0aCBib3VuZHMgY2hlY2tzPyBOb3BlLiBUaGlzIGlzIHB1cmVseSBhYm91dCAqaG93KiB0aGUgc3BpbmxvY2sgaXMgYWNxdWlyZWQsIG5hbWVseSBkaXNhYmxpbmcgaW50ZXJydXB0cyB3aGVuIGhvbGRpbmcgdGhlIGxvY2suIFRoaXMgc2VlbXMgbGlrZSBhIHRleHRib29rIGNhc2UgZm9yIExPQ0tERVAgYW5kIHRoZSBzdGFuZGFyZCBrZXJuZWwgc2FuaXR5IGNoZWNrcy5cblxuSSdtIGRvdWJsZS1jaGVja2luZyBteSB3b3JrIGhlcmUuIE5vIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIHBhc3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb25kaXRpb25hbCBsb2dpYyByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIHJlYWRzIGxhdGVyIG9uLCBhbmQgbm8gYm91bmRzIGNoZWNrcyBhcmUgYmVpbmcgbWVzc2VkIHdpdGguXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIFRoaXMgaXMgYSAqbG9ja2luZyogYnVnIGZpeCwgbm90IGFuICp1bmluaXRpYWxpemVkIG1lbW9yeSogYnVnIGZpeC5cblxuVG8gYmUgZXh0cmEgY2xlYXIgaW4gdGhlIHJlYXNvbmluZywgaXQncyBhIHNpbXBsZSBgc3Bpbl9sb2NrYCB0byBgc3Bpbl9sb2NrX2lycXNhdmVgIHJlcGxhY2VtZW50LCBkZXNpZ25lZCB0byBwcmV2ZW50IGRlYWRsb2NrcyBpbiBpbnRlcnJ1cHQgY29udGV4dHMuIEl0IGRvZXNuJ3QgdG91Y2ggbWVtb3J5IGFsbG9jYXRpb24sIHN0cnVjdCBpbml0aWFsaXphdGlvbiwgZGF0YSBjb3B5aW5nIHRvIHVzZXIgc3BhY2UsIG9yIGJ1ZmZlciBib3VuZGFyaWVzLiBUaGlzIGlzIGNvbmN1cnJlbmN5LCBub3QgS01TQU4ncyByZWFsbS4gTE9DS0RFUCBhbmQgc3RhbmRhcmQgY2hlY2tlcnMgYXJlIHRoZSB0b29scyB0byB1c2UgaGVyZS4gTm8gS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5lY2Vzc2FyeS4gQWxyaWdodCwgbGV0J3MgY2FsbCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMywiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNVQxOTowMzo0MS45NzIxMTg0MDZaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHNwaW5fbG9jaygpL3NwaW5fdW5sb2NrKCkgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZSgpL3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoKSBvbiBkaWJzLVxcdTAwM2Vsb2NrIGluIGRpYnNfbG9fbW92ZV9kYXRhKCkuIFRoaXMgaXMgcHVyZWx5IGEgbG9ja2luZy9zeW5jaHJvbml6YXRpb24gZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIGRlYWRsb2NrcyB3aGVuIGRpYnMtXFx1MDAzZWxvY2sgaXMgYWNjZXNzZWQgZnJvbSBJUlEgY29udGV4dHMuIFRoZSBjaGFuZ2UgZG9lcyBub3QgYWxsb2NhdGUgbWVtb3J5LCBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgYnVmZmVycywgYWx0ZXIgc3RydWN0dXJlIGluaXRpYWxpemF0aW9uLCBvciBjb3B5IGRhdGEgdG8gdXNlciBzcGFjZS4gTG9ja2luZyBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYnkgTE9DS0RFUCBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycywgbm90IEtNU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBzcGluX2xvY2soKS9zcGluX3VubG9jaygpIHdpdGggc3Bpbl9sb2NrX2lycXNhdmUoKS9zcGluX3VubG9ja19pcnFyZXN0b3JlKCkgb24gZGlicy1cXHUwMDNlbG9jayBpbiBkaWJzX2xvX21vdmVfZGF0YSgpLiBUaGlzIGlzIHB1cmVseSBhIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGZpeCB0byBwcmV2ZW50IHBvdGVudGlhbCBkZWFkbG9ja3Mgd2hlbiBkaWJzLVxcdTAwM2Vsb2NrIGlzIGFjY2Vzc2VkIGZyb20gSVJRIGNvbnRleHRzLiBUaGUgY2hhbmdlIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeSwgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIGJ1ZmZlcnMsIGFsdGVyIHN0cnVjdHVyZSBpbml0aWFsaXphdGlvbiwgb3IgY29weSBkYXRhIHRvIHVzZXIgc3BhY2UuIExvY2tpbmcgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGJ5IExPQ0tERVAgYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMsIG5vdCBLTVNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowb7fdp[1] Phase: Succeeded StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 19:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 19:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2] Phase: Succeeded StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 19:04:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-05 19:03:52 +0000 UTC FinishedAt: 2026-09-05 19:03:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowb7fdp/series-workflowb7fdp-convert-artifact-254025498/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-05 19:04:05 +0000 UTC FinishedAt: 2026-09-05 19:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-05 19:04:05 +0000 UTC FinishedAt: 2026-09-05 19:22:21 +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:*66d2c82a-124b-4208-a151-abea02808d90,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-workflowb7fdp/series-workflowb7fdp-convert-artifact-254025498/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": "16031b9a-3752-41ef-b0e0-757a1ac36f64", "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-workflowb7fdp/series-workflowb7fdp-build-action-3288559560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-05 19:04:05 +0000 UTC FinishedAt: 2026-09-05 19:22:11 +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:*66d2c82a-124b-4208-a151-abea02808d90,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-workflowb7fdp/series-workflowb7fdp-convert-artifact-254025498/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": "16031b9a-3752-41ef-b0e0-757a1ac36f64", "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-workflowb7fdp/series-workflowb7fdp-build-action-3288559560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-05 19:22:21 +0000 UTC FinishedAt: 2026-09-05 19:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-05 19:22:21 +0000 UTC FinishedAt: 2026-09-05 19:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-05 19:22:21 +0000 UTC FinishedAt: 2026-09-05 19:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-05 19:22:21 +0000 UTC FinishedAt: 2026-09-05 19:22:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowb7fdp/series-workflowb7fdp-convert-artifact-739105141/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-05 19:22:31 +0000 UTC FinishedAt: 2026-09-05 19:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-05 19:22:31 +0000 UTC FinishedAt: 2026-09-05 19:24:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16031b9a-3752-41ef-b0e0-757a1ac36f64,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-workflowb7fdp/series-workflowb7fdp-build-action-3288559560/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-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-05 19:24:32 +0000 UTC FinishedAt: 2026-09-05 19:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-05 19:24:32 +0000 UTC FinishedAt: 2026-09-05 19:24:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-05 19:24:32 +0000 UTC FinishedAt: 2026-09-05 19:45:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-05 19:24:32 +0000 UTC FinishedAt: 2026-09-05 19:45:44 +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:*66d2c82a-124b-4208-a151-abea02808d90,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-workflowb7fdp/series-workflowb7fdp-convert-artifact-739105141/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": "ef6c85f4-f938-4033-b397-e99552b6c969", "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-workflowb7fdp/series-workflowb7fdp-build-action-3235830657/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-05 19:24:32 +0000 UTC FinishedAt: 2026-09-05 19:45:34 +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:*66d2c82a-124b-4208-a151-abea02808d90,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-workflowb7fdp/series-workflowb7fdp-convert-artifact-739105141/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": "ef6c85f4-f938-4033-b397-e99552b6c969", "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-workflowb7fdp/series-workflowb7fdp-build-action-3235830657/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-05 19:45:44 +0000 UTC FinishedAt: 2026-09-05 19:45:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-05 19:45:44 +0000 UTC FinishedAt: 2026-09-05 19:45:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-05 19:45:44 +0000 UTC FinishedAt: 2026-09-05 19:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-05 19:45:44 +0000 UTC FinishedAt: 2026-09-05 19:47:33 +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:*ef6c85f4-f938-4033-b397-e99552b6c969,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-workflowb7fdp/series-workflowb7fdp-build-action-3235830657/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-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +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":["dibs_lo_move_data"],"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:*16031b9a-3752-41ef-b0e0-757a1ac36f64,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef6c85f4-f938-4033-b397-e99552b6c969,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-workflowb7fdp/series-workflowb7fdp-build-action-3288559560/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-workflowb7fdp/series-workflowb7fdp-build-action-3235830657/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 19:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 19:47:47 +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":["dibs_lo_move_data"],"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-workflowb7fdp/series-workflowb7fdp-convert-artifact-1695253594/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 19:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 19:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-05 19:47:43 +0000 UTC FinishedAt: 2026-09-05 19:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-05 19:47:53 +0000 UTC FinishedAt: 2026-09-05 22:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dibs_lo_move_data"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9eab111e765729e93087ff86a2ec9b2ae42d0fa5","config_name":"upstream-apparmor-kasan.config","enable_configs":["DIBS","DIBS_LO","SMC"],"series_id":"163829c9-8d41-41b8-8023-e31da2596acc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-05 19:47:53 +0000 UTC FinishedAt: 2026-09-05 22:50:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16031b9a-3752-41ef-b0e0-757a1ac36f64,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef6c85f4-f938-4033-b397-e99552b6c969,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-workflowb7fdp/series-workflowb7fdp-build-action-3288559560/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-workflowb7fdp/series-workflowb7fdp-build-action-3235830657/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-workflowb7fdp/series-workflowb7fdp-convert-artifact-1695253594/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,}