Name: series-workflowlmdtd Phase: Succeeded StartedAt: 2026-07-14 01:31:01 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[0] Phase: Succeeded StartedAt: 2026-07-14 01:31:01 +0000 UTC FinishedAt: 2026-07-14 02:00:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 01:31:01 +0000 UTC FinishedAt: 2026-07-14 02:00:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVETH", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_OCELOT_8021Q" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVETH", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_OCELOT_8021Q" ], "series_id": "a007da43-09fe-4f5c-80d4-698b64fd53e2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ibmveth_is_packet_unsupported", "lan937x_xmit", "ocelot_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZFVEgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfeG1pdCYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE3Y2Q4YjM0ZmNkODg5YjQ1YzU1MGFjNDU0ZDZhZjQwNGMzMjkwMzVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMTo1ODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuQEAgLTEyMTgsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpO1xuIFxuIFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoZXRoZXJfaGVhZGVyLVx1MDAzZWhfZGVzdCwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKSkge1xuIFx0XHRuZXRkZXZfZGJnKG5ldGRldiwgXCYjMzQ7dmV0aCBkb2VzbiYjMzk7dCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2tzei5jIGIvbmV0L2RzYS90YWdfa3N6LmNcbmluZGV4IDY3ZmE4OWYxMDJlMDcwLi40Zjc0MzM2YWUzOTY4YSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2tzei5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19rc3ouY1xuQEAgLTQzMCw3ICYjNDM7NDMwLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHR1OCBwcmlvID0gbmV0ZGV2X3R4cV90b190YyhkZXYsIHF1ZXVlX21hcHBpbmcpO1xuIFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcbi1cdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBza2JfZXRoX2hkcihza2IpO1xuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbmluZGV4IGY1MGYxY2Q4M2YxNjFjLi40NTE0MDI2ODk3ZDFhNyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuQEAgLTcxLDcgJiM0Mzs3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHR1OCBwY3AgPSBuZXRkZXZfdHhxX3RvX3RjKG5ldGRldiwgcXVldWVfbWFwcGluZyk7XG4gXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XG4tXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XG4mIzQzO1x0c3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcbiBcbiBcdGlmIChvY2Vsb3RfcHRwX3Jld19vcChza2IpIHx8IGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihoZHItXHUwMDNlaF9kZXN0KSlcbiBcdFx0cmV0dXJuIG9jZWxvdF9kZWZlcl94bWl0KGRwLCBza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZFVEgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfeG1pdCYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTdjZDhiMzRmY2Q4ODliNDVjNTUwYWM0NTRkNmFmNDA0YzMyOTAzNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMKaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMKQEAgLTEyMTgsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IGV0aGhkciAqZXRoZXJfaGVhZGVyOwogCWludCByZXQgPSAwOwogCi0JZXRoZXJfaGVhZGVyID0gZXRoX2hkcihza2IpOwomIzQzOwlldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpOwogCiAJaWYgKGV0aGVyX2FkZHJfZXF1YWwoZXRoZXJfaGVhZGVyLSZndDtoX2Rlc3QsIG5ldGRldi0mZ3Q7ZGV2X2FkZHIpKSB7CiAJCW5ldGRldl9kYmcobmV0ZGV2LCAmIzM0O3ZldGggZG9lc24mIzM5O3Qgc3VwcG9ydCBsb29wYmFjayBwYWNrZXRzLCBkcm9wcGluZyBwYWNrZXQuXG4mIzM0Oyk7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jCmluZGV4IDY3ZmE4OWYxMDJlMDcwLi40Zjc0MzM2YWUzOTY4YSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfa3N6LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmMKQEAgLTQzMCw3ICYjNDM7NDMwLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl1MTYgcXVldWVfbWFwcGluZyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwogCXU4IHByaW8gPSBuZXRkZXZfdHhxX3RvX3RjKGRldiwgcXVldWVfbWFwcGluZyk7CiAJc3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTsKLQljb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7CiYjNDM7CWNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7CiAJX19iZTE2ICp0YWc7CiAJdTE2IHZhbDsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYwppbmRleCBmNTBmMWNkODNmMTYxYy4uNDUxNDAyNjg5N2QxYTcgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCkBAIC03MSw3ICYjNDM7NzEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJdTE2IHF1ZXVlX21hcHBpbmcgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTsKIAl1OCBwY3AgPSBuZXRkZXZfdHhxX3RvX3RjKG5ldGRldiwgcXVldWVfbWFwcGluZyk7CiAJdTE2IHR4X3ZpZCA9IGRzYV90YWdfODAyMXFfc3RhbmRhbG9uZV92aWQoZHApOwotCXN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTsKJiM0MzsJc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTsKIAogCWlmIChvY2Vsb3RfcHRwX3Jld19vcChza2IpIHx8IGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihoZHItJmd0O2hfZGVzdCkpCiAJCXJldHVybiBvY2Vsb3RfZGVmZXJfeG1pdChkcCwgc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lIOKAkyBpdCYjMzk7cyByZXBsYWNpbmcgaW5zdGFuY2VzIG9mIGBldGhfaGRyKHNrYilgIHdpdGggYHNrYl9ldGhfaGRyKHNrYilgIGluIGEgZmV3IHNwZWNpZmljIGRyaXZlciBmaWxlczogYGlibXZldGguY2AsIGB0YWdfa3N6LmNgLCBhbmQgYHRhZ19vY2Vsb3RfODAycS5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGZ1bmN0aW9uYWwgZGlmZmVyZW5jZSBpcywgaWYgYW55LiBJIG1lYW4sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlYWRlciBhY2Nlc3MgaGVyZSwgc28gdGhlcmUmIzM5O3MgYm91bmQgdG8gYmUgYSByZWFzb24uIExldCYjMzk7cyBkZWx2ZSBpbi4KCkZpcnN0LCBJJiMzOTtsbCByZWZyZXNoIG15IG1lbW9yeS4gYGV0aF9oZHJgIGlzIGRlZmluZWQgYXMgc2ltcGx5IGNhc3RpbmcgdGhlIHJlc3VsdCBvZiBgc2tiX21hY19oZWFkZXIoc2tiKWAgdG8gYSBgc3RydWN0IGV0aGhkciAqYC4gVGhhdCYjMzk7cyBiYXNpYyBlbm91Z2guIE5vdywgSSYjMzk7bSBmYWlybHkgY2VydGFpbiBgc2tiX2V0aF9oZHJgIHdpbGwgZG8gc29tZXRoaW5nIHZlcnkgc2ltaWxhciwgcGVyaGFwcyBpbmNvcnBvcmF0aW5nIHNvbWUgYWRkaXRpb25hbCBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBtYXliZSBqdXN0IG9mZmVyaW5nIGEgbW9yZSBzdGFuZGFyZGl6ZWQgYWNjZXNzIG1lY2hhbmlzbSB3aXRoaW4gdGhlIFNLQiBmcmFtZXdvcmsuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBhIGRpcmVjdCBlcXVpdmFsZW50LCBvciBpZiB0aGVyZSYjMzk7cyBzdWJ0bGUgYmVoYXZpb3IgdGhhdCB3YXJyYW50cyB0aGlzIGNoYW5nZS4gVG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBmaXJlIHVwIGEgYGdyZXBgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgdXNhZ2Ugb3IgZGVmaW5pdGlvbiBvZiBgc2tiX2V0aF9oZHJgIGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCBwcm92aWRlIHNvbWUgaW5zaWdodCBpbnRvIHdoeSB0aGV5JiMzOTtyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBtb3JlIGRpcmVjdCBhY2Nlc3Mgd2l0aCBgZXRoX2hkcmAuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSB0dXJuIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NrYl9ldGhfaGRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIxNT1zdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjIxOlx0ZXRoZXJfaGVhZGVyID0gc2tiX2V0aF9oZHIoc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTIyMi1cbi0tXG5kcml2ZXJzL25ldC9nZW5ldmUuYz0xMzI0PXN0YXRpYyBpbnQgZ2VuZXZlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZ2VuZXZlLmMtMTQxNC1cdFx0fSBlbHNlIGlmIChnZW5ldmUtXHUwMDNlY2ZnLmRmID09IEdFTkVWRV9ERl9JTkhFUklUKSB7XG5kcml2ZXJzL25ldC9nZW5ldmUuYzoxNDE1Olx0XHRcdHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xNDE2LVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTYzMD1zdGF0aWMgaW50IGlwdmxhbl94bWl0X21vZGVfbDIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzItXHRjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzM6XHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjM0LVx0c3RydWN0IGlwdmxfYWRkciAqYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9tYWNzZWMuYz01OTc9c3RhdGljIHN0cnVjdCBza19idWZmICptYWNzZWNfZW5jcnlwdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jLTY0OC1cdHVucHJvdGVjdGVkX2xlbiA9IHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC9tYWNzZWMuYzo2NDk6XHRldGggPSBza2JfZXRoX2hkcihza2IpO1xuZHJpdmVycy9uZXQvbWFjc2VjLmMtNjUwLVx0c2NpX3ByZXNlbnQgPSBtYWNzZWNfc2VuZF9zY2koc2VjeSk7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTU0NT1zdGF0aWMgaW50IG1hY3ZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy01NTEtXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9CUklER0UpIHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo1NTI6XHRcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtNTUzLVxuLS1cbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaD0yNT1zdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmgtMzItICovXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmg6MzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9pZl9ldGhlci5oLTM0LXtcbi0tXG5uZXQvZHNhL3RhZ19rc3ouYz0xMjU9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvZHNhL3RhZ19rc3ouYy0xMzYtXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XG5uZXQvZHNhL3RhZ19rc3ouYzoxMzc6XHRoZHIgPSBza2JfZXRoX2hkcihza2IpO1xubmV0L2RzYS90YWdfa3N6LmMtMTM4LVxuLS1cbm5ldC9kc2EvdGFnX2tzei5jPTI4Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTMwNS1cdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1o5NDc3X0lOR1JFU1NfVEFHX0xFTik7XG5uZXQvZHNhL3RhZ19rc3ouYzozMDY6XHRoZHIgPSBza2JfZXRoX2hkcihza2IpO1xubmV0L2RzYS90YWdfa3N6LmMtMzA3LVxuLS1cbm5ldC9kc2EvdGFnX2tzei5jPTM2MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk4OTNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTM3Ny1cdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTtcbm5ldC9kc2EvdGFnX2tzei5jOjM3ODpcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19rc3ouYy0zNzktXG4tLVxubmV0L2RzYS90YWdfa3N6LmM9NDI3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2RzYS90YWdfa3N6LmMtNDMyLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcbm5ldC9kc2EvdGFnX2tzei5jOjQzMzpcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19rc3ouYy00MzQtXHRfX2JlMTYgKnRhZztcbi0tXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYz02Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMtNzMtXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYzo3NDpcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IEhlYWRlciBEZWZpbml0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGVzZSBFdGhlcm5ldCBoZWFkZXJzLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBkZWZpbml0aXZlIGRlZmluaXRpb24uIEkmIzM5O2xsIG9wZW4gdXAgYGluY2x1ZGUvbGludXgvaWZfZXRoZXIuaGAuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGBza2JfZXRoX2hkcmAgaXMgdXNlZCBhbmQgd2hhdCBpdCYjMzk7cyByZWFsbHkgZG9pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgYSBtYWNybyBvciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBFdGhlcm5ldCBoZWFkZXIgd2l0aGluIGEgc29ja2V0IGJ1ZmZlciAoYHNrYmApLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBhY3R1YWwgZGVjbGFyYXRpb24gYW5kIGFzc29jaWF0ZWQgY29tbWVudHMgcmV2ZWFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGluZm9ybWF0aW9uIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaWZfZXRoZXIuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjU6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMjY6XHR7XG4gIDI3Olx0XHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpO1xuICAyODpcdH1cbiAgMjk6XHRcbiAgMzA6XHQvKiBQcmVmZXIgdGhpcyB2ZXJzaW9uIGluIFRYIHBhdGgsIGluc3RlYWQgb2ZcbiAgMzE6XHQgKiBza2JfcmVzZXRfbWFjX2hlYWRlcigpICYjNDM7IGV0aF9oZHIoKVxuICAzMjpcdCAqL1xuICAzMzpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGV0aGhkciAqc2tiX2V0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMzQ6XHR7XG4gIDM1Olx0XHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2ItXHUwMDNlZGF0YTtcbiAgMzY6XHR9XG4gIDM3Olx0XG4gIDM4Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICppbm5lcl9ldGhfaGRyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gIDM5Olx0e1xuICA0MDpcdFx0cmV0dXJuIChzdHJ1Y3QgZXRoaGRyICopc2tiX2lubmVyX21hY19oZWFkZXIoc2tiKTtcbiAgNDE6XHR9XG4gIDQyOlx0XG4gIDQzOlx0aW50IGV0aF9oZWFkZXJfcGFyc2UoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgNDQ6XHRcdFx0ICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aGVybmV0IEhlYWRlciBBY2Nlc3MgaW4gdGhlIE5ldHdvcmsgU3RhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgYWNjZXNzZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBrZXkgZGlmZmVyZW5jZSBJJiMzOTttIHNlZWluZyBpcyBiZXR3ZWVuIGBza2JfZXRoX2hkcihza2IpYCB3aGljaCBkaXJlY3RseSBhY2Nlc3NlcyBgc2tiLSZndDtkYXRhYCwgYW5kIGBldGhfaGRyKHNrYilgIHdoaWNoIHVzZXMgYHNrYl9tYWNfaGVhZGVyKHNrYilgLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpbiB0aGUgVFggcGF0aCwgYHNrYi0mZ3Q7ZGF0YWAgbWlnaHQgYWxyZWFkeSBwb2ludCB0byB0aGUgRXRoZXJuZXQgaGVhZGVyLCBidXQgYHNrYl9tYWNfaGVhZGVyKHNrYilgIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCB5ZXQuIFNvLCB1c2luZyBgZXRoX2hkcihza2IpYCBpcyBwcm9iYWJseSB0aGUgYmV0dGVyIG9wdGlvbiBoZXJlLCBwcmV2ZW50aW5nIGJ1Z3Mgd2hlcmUgYHNrYl9tYWNfaGVhZGVyYCBpcyB1bnNldC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgYXJlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY2AsIGBuZXQvZHNhL3RhZ19rc3ouY2AsIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhlc2UuIGBpYm12ZXRoYCBpcyB0aGUgSUJNIFBvd2VyIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlIGRyaXZlci4gYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYXJlIGJvdGggRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB0YWdnZXJzLCBzcGVjaWZpY2FsbHkgZm9yIE1pY3JlbCBLU1ogc3dpdGNoZXMgYW5kIE9jZWxvdCBzd2l0Y2hlcyByZXNwZWN0aXZlbHkuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgaG93IGVhc2lseSBjYW4gSSB0ZXN0IHRoZXNlIGNoYW5nZXMsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBvciBjb250cm9sbGVkIGVudmlyb25tZW50PyBTaW5jZSBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYCBhcmUgRFNBIHRhZ2dlcnMsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgRFNBIHRlc3RpbmcgdGVjaG5pcXVlcy4gSSBjb3VsZCB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIHZpcnR1YWwgZHJpdmVycy4gQnV0IHdhaXQsIEkgcmVjYWxsIHRoYXQgYGRzYV9sb29wYCB1c2VzIGl0cyBvd24gZGVkaWNhdGVkIHRhZ2dlciwgbm90IGBrc3pgIG9yIGBvY2Vsb3RgLCBzbyB0aGF0JiMzOTtzIG5vdCBkaXJlY3RseSBoZWxwZnVsLiBTdGlsbCwgSSBtaWdodCBiZSBhYmxlIHRvIHRlc3QgdGhlbSBieSBjcmVhdGluZyBhIGR1bW15IERTQSBzd2l0Y2gsIG9yIG1heWJlIGV2ZW4gaW5qZWN0IHBhY2tldHMgdXNpbmcgc3l6a2FsbGVyLgoKQWN0dWFsbHksIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYW5kbGUgRFNBIHRlc3RpbmcgdXNpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGlmIGEgY29ycmVzcG9uZGluZyBkcml2ZXIgaXMgYXZhaWxhYmxlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhIGBzeXpfZHNhX3NldHVwYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLi4uIE5vLCB3YWl0LCBzeXprYWxsZXIgbW9zdGx5IGZvY3VzZXMgb24gZ2VuZXJhbCBuZXR3b3JrIGRldmljZSB0ZXN0aW5nLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW5hYmxlIGBORVRfRFNBX1RBR19LU1pgIGFuZCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGVzZSBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX1RBR19LU1omIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9LY29uZmlnPTExND1jb25maWcgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWFxuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgVGFnKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGNvbnNpZGVyIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBPY2Vsb3Qgc3dpdGNoLiBUaGlzIHRhZyBsaWtlbHkgZGVhbHMgd2l0aCA4MDIuMVEgVkxBTiB0YWdnaW5nLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgd2hhdCBJIG5lZWQgdG8gdW5wYWNrIGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgT2NlbG90IHNwZWNpZmljYWxseTsgdGhlIHRhZyBuYW1lIHN1Z2dlc3RzIGl0IGJ1dCBjb25maXJtYXRpb24gaXMgYWx3YXlzIGNydWNpYWwuCgpNeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgd2lsbCBleHBsb3JlIGhvdyB0aGlzIHRhZyBpcyB1c2VkIHRvIG1hcCA4MDIuMVEgVkxBTiBpbmZvcm1hdGlvbiB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gSXMgdGhpcyBhIHNpbXBsZSB0cmFuc2xhdGlvbiBsYXllciBvciBkb2VzIGl0IGVuY29kZSBtb3JlIGNvbXBsZXggVkxBTiBtYW5pcHVsYXRpb24gcnVsZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgdGFnIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGluZ3MgbGlrZSBWTEFOIElEIGluc2VydGlvbiwgc3RyaXBwaW5nLCBwcmlvcml0eSB0YWdnaW5nLCBvciBwZXJoYXBzIGV2ZW4gbW9yZSBhZHZhbmNlZCBmZWF0dXJlcyB3aXRoaW4gdGhlIE9jZWxvdCBBU0lDLgoKSSYjMzk7bGwgYWxzbyBiZSBjb25zaWRlcmluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBEU0EgdGFncy4gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgRFNBIGZyYW1lIGZvcm1hdCBhbmQgZXhpc3RpbmcgRFNBIG1lY2hhbmlzbXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgdGFncz8gQXJlIHRoZXJlIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBtYWRlIGJ5IHRoZSB0YWc/CgpJZiBJIGNhbiwgSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb2RlOiBkZXZpY2UgZHJpdmVycywgRFNBIGNvcmUgZnVuY3Rpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgaGVhZGVycyBvciBpbmNsdWRlIGZpbGVzIGZvciByZWxhdGVkIHN0cnVjdHVyZXMgb3IgZGF0YSB0eXBlcyB0byBjb25maXJtIG15IHRob3VnaHRzLiBBbHNvIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGlmIGFueSBleGlzdC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgcGllY2UgdG9nZXRoZXIgdGhlIGZsb3cgb2YgaG93IHRoaXMgdGFnIGlzIGFwcGxpZWQgdG8gYSBmcmFtZSBhbmQgaG93IGl0IGFmZmVjdHMgdGhlIHN3aXRjaGluZyBkZWNpc2lvbnMgb2YgdGhlIE9jZWxvdC4gVGhpcyB0YWcmIzM5O3MgcHVycG9zZSBuZWVkcyB0byBiZSBjb21wbGV0ZWx5IGNsZWFyLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGl0IGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBhbmQgaXMgbm90IGluIGNvbmZsaWN0IHdpdGggYW55IG90aGVyIGZlYXR1cmUsIG9yIHRoZSBEU0Egd2lsbCBicmVhay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWc9MTM4PWNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1Rcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjI1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgYW5kIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogVmVyaWZ5aW5nIGBpYm12ZXRoYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBpbXB1bHNlLCBhcyBhbHdheXMgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgZXhhbWluaW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGlzIHRvIHN0YXJ0IHdpdGggdGhlIGVzc2VudGlhbHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGZhY3QgdGhhdCBgaWJtdmV0aGAgaXMgbWVudGlvbmVkIGxpa2VseSBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElCTSB2aXJ0dWFsaXphdGlvbiwgcHJvYmFibHkgc29tZSBmb3JtIG9mIHZpcnR1YWwgRXRoZXJuZXQgY29uZmlndXJhdGlvbi4gQmVmb3JlIGdldHRpbmcgbG9zdCBpbiB0aGUgd2VlZHMgb2Ygc3BlY2lmaWMgY29tbWFuZHMgb3IgZGVlcGVyIGxvZ3MsIG15IGd1dCBpbnN0aW5jdCBpcyB0byBlc3RhYmxpc2ggdGhlIGJhc2ljcy4gTGV0JiMzOTtzIGNoZWNrIGBpYm12ZXRoYC4gVGhpcyBjb3VsZCBtZWFuIHZlcmlmeWluZyBpdHMgcHJlc2VuY2UsIGl0cyBjdXJyZW50IHN0YXR1cyAodXAvZG93biwgY29uZmlndXJlZC91bmNvbmZpZ3VyZWQpLCBvciBtYXliZSBldmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgdmlydHVhbCBuZXR3b3JraW5nIGVsZW1lbnRzLiBFc3NlbnRpYWxseSwgbGV0JiMzOTtzIGVzdGFibGlzaCBhIGJhc2VsaW5lIG9mIHdoYXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIHVzIGFib3V0IHRoaXMgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHRoZW4gd2UgY2FuIGRldGVybWluZSBpZiBzb21ldGhpbmcgbmVlZHMgYXR0ZW50aW9uIG9yIGlmIHRoaXMgY29uZmlndXJhdGlvbiBhbGlnbnMgd2l0aCB3aGF0IGlzIGV4cGVjdGVkLiBUaGlzIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUJNVkVUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0lCTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZzoyMDpjb25maWcgSUJNVkVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtJQk0gTEFOIFZpcnR1YWwgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6MzA6Y29uZmlnIElCTVZFVEhfS1VOSVRfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMzEtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFN5c3RlbSBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYElCTVZFVEhgIGlzIHN1cHBvcnRlZCBvbiB4ODYgb3IgYXJtNjQgYXJjaGl0ZWN0dXJlcy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBldGhlcm5ldCBkcml2ZXIgc3RydWN0dXJlLiBUaGF0IHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZ2AuIExldCYjMzk7cyBuYXZpZ2F0ZSB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IHNob3VsZCBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhhdCBzcGVjaWZpYyBkcml2ZXIgYW5kIGl0JiMzOTtzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbnN3ZXIgd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTg6XHRpZiBORVRfVkVORE9SX0lCTVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBJQk1WRVRIXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJQk0gTEFOIFZpcnR1YWwgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBQUENfUFNFUklFU1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGV0aGVybmV0IGFkYXB0ZXJzIG9uIG5ld2VyIElCTSBpU2VyaWVzXG4gIDI1Olx0XHQgIGFuZCBwU2VyaWVzIHN5c3RlbXMuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxuICAyODpcdFx0ICBiZSBjYWxsZWQgaWJtdmV0aC5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgSUJNVkVUSF9LVU5JVF9URVNUXG4gIDMxOlx0XHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgMzI6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgMzM6XHRcdGRlcGVuZHMgb24gS1VOSVQ9eSBcdTAwMjZcdTAwMjYgSUJNVkVUSD15XG4gIDM0Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBUaGlzIGJ1aWxkcyB1bml0IHRlc3RzIGZvciB0aGUgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IGRyaXZlci5cbiAgMzc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ5NwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBJQk1WRVRIIEZ1enppbmcgQ2hhbGxlbmdlKioKCk9rYXksIHNvIGBJQk1WRVRIYCBpcyBQb3dlclBDLXNwZWNpZmljIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGBQUENfUFNFUklFU2AuIFRoYXQmIzM5O3MgYSBodXJkbGUgYmVjYXVzZSBTeXprYWxsZXIsIHdoaWNoIGlzIG91ciBwcmltYXJ5IGZ1enppbmcgdG9vbCwgdHlwaWNhbGx5IHJ1bnMgb24geDg2XzY0LCBhcm02NCwgYW5kIHJpc2N2NjQgYXJjaGl0ZWN0dXJlcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgd2UgbWlnaHQgYmUgc3R1Y2sgbmVlZGluZyBhY3R1YWwgUG93ZXJQQyBoYXJkd2FyZSwgYnV0IGxldCYjMzk7cyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBIb2xkIG9uLi4udGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNvbWV0aGluZyBhYm91dCAmIzM0O2ltcG9zc2libGUgY29kZSBwYXRocyYjMzQ7IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0JiMzOTtzIGludHJpZ3VpbmcuCgpXYWl0LCBRRU1VICpkb2VzKiBzdXBwb3J0IFBQQzY0IHBzZXJpZXMhIE9rYXksIHNvIHRoZW9yZXRpY2FsbHksIGBJQk1WRVRIYCBzaG91bGQgYmUgcmVhY2hhYmxlIHRocm91Z2ggUUVNVS4gSXQmIzM5O3Mgbm90IGlkZWFsLCBhcyBTeXprYWxsZXIgaXMgeDg2XzY0IGZvY3VzZWQsIGJ1dCBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpOb3csIHdoYXQgYWJvdXQgdGhlIERTQSB0YWdnZXJzPyBUaG9zZSBjYW4gYmUgY29tcGlsZWQgb24gKmFueSogYXJjaGl0ZWN0dXJlLCByaWdodD8gSSBhbSBiZXR0aW5nIHRoYXQgaXMgY29ycmVjdC4gVGhlIG5leHQgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIHJlYWNoIHRoZW0gd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IERTQSB0YWdnZXJzIGFyZSBlc3NlbnRpYWxseSBuZXR3b3JrIHBhY2tldCBtYW5nbGVycy4gSWYgd2UgY2FuIGVtdWxhdGUgYSBEU0Egc3dpdGNoLCBvciB1c2UgYSBzb2Z0d2FyZSBEU0Egc3dpdGNoLCB3ZSYjMzk7cmUgaW4gYnVzaW5lc3MuIEFuZCB0aGUgdGhvdWdodCB0aGVuIGlzLCBjYW4gdGhleSBiZSB1c2VkIGFzIGEgdGVzdCB0YXJnZXQ/CgpBaGEhIGBkc2FfbG9vcGAgaXMgYSBkdW1teSBEU0Egc3dpdGNoISBUaGF0JiMzOTtzIHByb21pc2luZy4gQnV0LCBgZHNhX2xvb3BgIHVzZXMgZWl0aGVyIGBEU0FfVEFHX1BST1RPX0RTQWAgb3IgYERTQV9UQUdfUFJPVE9fRURTQWAuIENhbiB3ZSBjb25maWd1cmUgYGRzYV9sb29wYCB0byB1c2Ugc29tZXRoaW5nIGxpa2UgYEtTWmAgb3IgYE9DRUxPVF84MDIxUWA/IFRoYXQgd291bGQgYmUgYSBnYW1lLWNoYW5nZXIuIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZS4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBEU0EgVGFnZ2VyIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uIEl0IHNlZW1zIHRvIGRlZmF1bHQgdG8gdXNpbmcgYERTQV9UQUdfUFJPVE9fRFNBYCBvciBgRFNBX1RBR19QUk9UT19FRFNBYCwgYnV0IHBlcmhhcHMgd2UgY2FuIHR3ZWFrIHRoYXQgc29tZWhvdz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHRoZSBjb25maWd1cmFiaWxpdHkuIFRoZW4sIEkgc2VlIHRoZSBwYXRjaCByZWZlcmVuY2VzIGNoYW5nZXMgaW4gYG5ldC9kc2EvdGFnX2tzei5jYCBhbmQgYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYC4gQWgsIHRob3NlIGFyZSBEU0EgdGFnZ2Vycy4gTm93IHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuCgpUaGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGZ1enogdGhlc2UgRFNBIHRhZ2dlcnMgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBpcyB0aGUgZ28tdG8gdG9vbCBmb3IgdGhpcyBraW5kIG9mIHdvcmssIGFuZCBJIHZhZ3VlbHkgcmVjYWxsIGl0IGhhdmluZyBzb21lIERTQSBkZXNjcmlwdGlvbnMgYWxyZWFkeS4gU28sIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiB0aG9zZSBkZXNjcmlwdGlvbnMgZXhpc3QgYW5kLCBpZiBzbywgd2hhdCB0aGV5IGNvdmVyLiBUaGF0IHdvdWxkIGJlIHRoZSBjcml0aWNhbCBsaW5rIHRvIHNlZSBpZiB0aGlzIHBhdGNoIG9wZW5zIHVwIG5ldyBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIExldCYjMzk7cyBzZWUgd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgRFNBLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI4NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEU0EgaW4gU3l6a2FsbGVyOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBkc2FgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggU3l6a2FsbGVyLiBUaGUgY29vbCB0aGluZyBpcyBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5IGludG8gKmFueSogbmV0ZGV2LiBOb3csIGlmIGEgbmV0ZGV2IGhhcHBlbnMgdG8gYmUgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLCB0aG9zZSBwYWNrZXRzIHdpbGwsIGJ5IGRlZmluaXRpb24sIHJ1biB0aHJvdWdoIHRoZSB0YWdnZXIuIFRoYXQmIzM5O3MgZ29vZC4KCkJ1dCBoZXJlJiMzOTtzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBBcmUgZnVuY3Rpb25zIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYWN0dWFsbHkgcmVhY2hhYmxlLCBjYW4gSSBoaXQgdGhlbSwgd2l0aG91dCB0aGUgbmVlZCBmb3IgcmVhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCk9rYXksIEkgcmVtZW1iZXIsIHRoZXJlIGFyZSBkdW1teSBkcml2ZXJzIG9yLCBldmVuIGJldHRlciwgbW9jayBkcml2ZXJzLiBMZXQgbWUgc2VlLCBsZXQgbWUgc2VlLiBBaCwgeWVzISBgZHNhX2xvb3BgLi4uIFRoYXQmIzM5O3MgdGhlIG9ubHkgbW9jayBkcml2ZXIgZm9yIERTQSwgcmlnaHQ/IFllcywgdGhhdCYjMzk7cyBpdC4KCkFscmlnaHQsIHRpbWUgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIGNoZWNrIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIGluIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgbW9jayBkcml2ZXIgd29ya3MgYW5kIHdoYXQgSSBjYW4gbGVhcm4gYWJvdXQgcmVhY2hpbmcgdGhvc2Uga2V5IHRhZ2dpbmcgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgbXkgYW5zd2Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI0Olx0XG4gMTI1Olx0c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIDEyNjpcdFx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuIDEyNzpcdFx0XHRcdFx0XHRcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcbiAxMjg6XHR7XG4gMTI5Olx0XHRkZXZfZGJnKGRzLVx1MDAzZWRldiwgXCYjMzQ7JXM6IHBvcnQ6ICVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgcG9ydCk7XG4gMTMwOlx0XG4gMTMxOlx0XHRyZXR1cm4gRFNBX1RBR19QUk9UT19OT05FO1xuIDEzMjpcdH1cbiAxMzM6XHRcbiAxMzQ6XHRzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiAxMzU6XHR7XG4gMTM2Olx0XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuIDEzNzpcdFx0dW5zaWduZWQgaW50IGk7XG4gMTM4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTQ2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBhIERTQSBQcm90b2NvbCBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIGlzIHJldHVybmluZyBgRFNBX1RBR19QUk9UT19OT05FYC4gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuIEZpcnN0LCBJJiMzOTtsbCBnbyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaGlzdG9yeSBvZiBgZHNhX2xvb3BgIGFuZCBvdGhlciBEU0EgbW9jayBkcml2ZXJzLiBTZWUgaWYgdGhleSYjMzk7cmUgcmVsZXZhbnQgYW5kIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBOZXh0LCBJIHNob3VsZCB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBpZiB0aGVyZSYjMzk7cyAqYW5vdGhlciogd2F5IGEgRFNBIHN3aXRjaCBjb3VsZCBldmVuIGJlIGluc3RhbnRpYXRlZCwgYXNpZGUgZnJvbSB3aGF0IEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQuIEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBwYXRod2F5cyB0byBjb25zaWRlcj8gUGVyaGFwcyBzb21ldGhpbmcgcmVsYXRlZCB0byBgbmV0ZGV2c2ltYCBtaWdodCBvZmZlciBhIGNsdWUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkuIE1heWJlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFuc3dlciBsaWVzLiBJJiMzOTtsbCBnbyBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDticGYuYyYjMzQ7LAogICAgJiMzNDtidXMuYyYjMzQ7LAogICAgJiMzNDtkZXYuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZmliLmMmIzM0OywKICAgICYjMzQ7aGVhbHRoLmMmIzM0OywKICAgICYjMzQ7aHdzdGF0cy5jJiMzNDssCiAgICAmIzM0O2lwc2VjLmMmIzM0OywKICAgICYjMzQ7bWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bmV0ZGV2LmMmIzM0OywKICAgICYjMzQ7bmV0ZGV2c2ltLmgmIzM0OywKICAgICYjMzQ7cHNhbXBsZS5jJiMzNDssCiAgICAmIzM0O3BzcC5jJiMzNDssCiAgICAmIzM0O3RjLmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbHMuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQ4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgTmV0ZGV2c2ltIERTQSBJbnF1aXJ5KioKCkhtbSwgbm8gRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdXBwb3J0IGV2aWRlbnQgaW4gdGhlIGBuZXRkZXZzaW1gIGNvZGUuIFRoYXQmIzM5O3MgYSBiaXQgc3VycHJpc2luZywgSSB3YXMgZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgYmFzaWMgZW11bGF0aW9uLiBOb3csIHdoZXJlIHdvdWxkIHRoYXQgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIGhvb2tzIGZvciBpdCwgbGlrZWx5IHJlc2lkZT8gSSBrbm93IHRoZXJlJiMzOTtzIGEgZGlzdGluY3QgZGlyZWN0b3J5IHdpdGhpbiB0aGUga2VybmVsIHNwZWNpZmljYWxseSBmb3IgRFNBIGRyaXZlcnMuLi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBgZHJpdmVycy9uZXQvZHNhL2AgZGlyZWN0b3J5LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGEgcmVsZXZhbnQgbW9kdWxlIHRoZXJlIEkgY2FuIGxldmVyYWdlLCBhZGFwdCwgb3IgYXQgbGVhc3QgdW5kZXJzdGFuZCB0byBpbmZvcm0gbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YmNtX3NmMi5jJiMzNDssCiAgICAmIzM0O2JjbV9zZjIuaCYjMzQ7LAogICAgJiMzNDtiY21fc2YyX2NmcC5jJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfcmVncy5oJiMzNDssCiAgICAmIzM0O2RzYV9sb29wLmMmIzM0OywKICAgICYjMzQ7a3M4OTk1LmMmIzM0OywKICAgICYjMzQ7bGFuOTMwMy1jb3JlLmMmIzM0OywKICAgICYjMzQ7bGFuOTMwMy5oJiMzNDssCiAgICAmIzM0O2xhbjkzMDNfaTJjLmMmIzM0OywKICAgICYjMzQ7bGFuOTMwM19tZGlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLW1kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbW1pby5jJiMzNDssCiAgICAmIzM0O210NzUzMC5jJiMzNDssCiAgICAmIzM0O210NzUzMC5oJiMzNDssCiAgICAmIzM0O212ODhlNjA2MC5jJiMzNDssCiAgICAmIzM0O212ODhlNjA2MC5oJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuYyYjMzQ7LAogICAgJiMzNDtyem4xX2E1cHN3LmgmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LWNvcmUuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtc3BpLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LmgmIzM0OywKICAgICYjMzQ7eXQ5MjF4LmMmIzM0OywKICAgICYjMzQ7eXQ5MjF4LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7YjUzJiMzNDssCiAgICAmIzM0O2hpcnNjaG1hbm4mIzM0OywKICAgICYjMzQ7bGFudGlxJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcCYjMzQ7LAogICAgJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAgICYjMzQ7bXhsODYyeHgmIzM0OywKICAgICYjMzQ7bmV0YyYjMzQ7LAogICAgJiMzNDtvY2Vsb3QmIzM0OywKICAgICYjMzQ7cWNhJiMzNDssCiAgICAmIzM0O3JlYWx0ZWsmIzM0OywKICAgICYjMzQ7c2phMTEwNSYjMzQ7LAogICAgJiMzNDt4cnM3MDB4JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MjcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBEU0EgVGFnIFByb3RvY29sIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBoaXQgYSBzbmFnLiBUaGUgYGRzYV9sb29wYCBmdW5jdGlvbiBpcyByZXR1cm5pbmcgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQmIzM5O3Mgbm90IHdoYXQgSSB3YXMgZXhwZWN0aW5nLiBJdCBtZWFucyB0aGUgcHJvY2VzcyBpc24mIzM5O3QgdXNpbmcgYW55IHNwZWNpZmljIHRhZ2dlciwgYW5kIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmR5bmFtaWNhbGx5KiBjaGFuZ2UgdGhlIHRhZyBwcm90b2NvbCBvZiBhIERTQSBzd2l0Y2g/IEkga25vdyBEU0EgaGFzIHRoZSBmbGV4aWJpbGl0eTsgSSBqdXN0IG5lZWQgdG8gY29uZmlybSB0aGUgaW1wbGVtZW50YXRpb24uCgpBbHJpZ2h0LCBnb29kLCBJJiMzOTt2ZSBnb3QgY29uZmlybWF0aW9uIHRoYXQgRFNBICpkb2VzKiBzdXBwb3J0IGNoYW5naW5nIHRoZSB0YWcgcHJvdG9jb2wgb24gdGhlIGZseS4gTm93IGl0JiMzOTtzIGEgbWF0dGVyIG9mIGZpbmRpbmcgdGhlIHNwZWNpZmljIGhvb2tzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29kZSB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIE15IGZvY3VzIHdpbGwgYmUgb24gYG5ldC9kc2EvZHNhLmNgIGFuZCBgbmV0L2RzYS9zbGF2ZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIGZvciBuZXRsaW5rIG9yIHN5c2ZzIGludGVyYWN0aW9ucywgb3Igd2hlcmUgdGhlIHRhZyBwcm90b2NvbCBpcyBtb2RpZmllZC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byB3b3JrIHRocm91Z2ggdGhlIGltcGxlbWVudGF0aW9uIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgY29tbWFuZHMgYW5kIHN0YXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3RhZ19wcm90b2NvbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9NjA2PVN3aXRjaCBjb25maWd1cmF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTYxNS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDo2MTY6LSBgYGNoYW5nZV90YWdfcHJvdG9jb2xgYDogd2hlbiB0aGUgZGVmYXVsdCB0YWdnaW5nIHByb3RvY29sIGhhcyBjb21wYXRpYmlsaXR5XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtNjE3LSAgcHJvYmxlbXMgd2l0aCB0aGUgY29uZHVpdCBvciBvdGhlciBpc3N1ZXMsIHRoZSBkcml2ZXIgbWF5IHN1cHBvcnQgY2hhbmdpbmcgaXRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjQ2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjU1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY1Ni1cdFx0XHRcdFx0IGVudW0gZHNhX3RhZ19wcm90b2NvbCBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXY4OGU2eHh4X3N3aXRjaF9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTg4LVx0LmdldF90YWdfcHJvdG9jb2xcdD0gbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTg5Olx0LmNoYW5nZV90YWdfcHJvdG9jb2xcdD0gbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTkwLVx0LnNldHVwXHRcdFx0PSBtdjg4ZTZ4eHhfc2V0dXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTczMj1mZWxpeF90YWdfcHJvdG9fc2V0dXBfc2hhcmVkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzUzLSAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjc1NDpzdGF0aWMgaW50IGZlbGl4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTc1NS1cdFx0XHRcdCAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0xNjk2PXN0YXRpYyBpbnQgZmVsaXhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzUxLVx0ICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc1MjpcdGZlbGl4X2NoYW5nZV90YWdfcHJvdG9jb2woZHMsIGZlbGl4LVx1MDAzZXRhZ19wcm90byk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1My1cbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGZlbGl4X3N3aXRjaF9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwNy1cdC5nZXRfdGFnX3Byb3RvY29sXHRcdD0gZmVsaXhfZ2V0X3RhZ19wcm90b2NvbCxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMzA4Olx0LmNoYW5nZV90YWdfcHJvdG9jb2xcdFx0PSBmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzMDktXHQuY29ubmVjdF90YWdfcHJvdG9jb2xcdFx0PSBmZWxpeF9jb25uZWN0X3RhZ19wcm90b2NvbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTIzMDM9c3RhdGljIGludCBydGw4MzY1bWJfY3B1X2NvbmZpZyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MjMzMjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMy1cdFx0XHRcdFx0IGVudW0gZHNhX3RhZ19wcm90b2NvbCBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjY2Ny1cdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2Njg6XHQuY2hhbmdlX3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjY5LVx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxuLS1cbmluY2x1ZGUvbmV0L2RzYS5oPTg2MD1zdHJ1Y3QgZHNhX3N3aXRjaF9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L2RzYS5oLTg2NC1cdCAqIG1hbmRhdG9yeS4gU3dpdGNoZXMgd2hpY2ggY2FuIG9wZXJhdGUgdXNpbmcgbXVsdGlwbGUgdGFnZ2luZ1xuaW5jbHVkZS9uZXQvZHNhLmg6ODY1Olx0ICogcHJvdG9jb2xzIHNob3VsZCBpbXBsZW1lbnQgQGNoYW5nZV90YWdfcHJvdG9jb2wgYW5kIHJlcG9ydCBpblxuaW5jbHVkZS9uZXQvZHNhLmgtODY2LVx0ICogQGdldF90YWdfcHJvdG9jb2wgdGhlIHRhZ2dlciBpbiBjdXJyZW50IHVzZS5cbi0tXG5pbmNsdWRlL25ldC9kc2EuaC04NzAtXHRcdFx0XHRcdFx0ICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXByb3QpO1xuaW5jbHVkZS9uZXQvZHNhLmg6ODcxOlx0aW50XHQoKmNoYW5nZV90YWdfcHJvdG9jb2wpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3Mi1cdFx0XHRcdCAgICAgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pO1xuLS1cbm5ldC9kc2EvZHNhLmM9NTY5PXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNTc4LVx0cnRubF9sb2NrKCk7XG5uZXQvZHNhL2RzYS5jOjU3OTpcdGVyciA9IGRzLVx1MDAzZW9wcy1cdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKGRzLCB0YWdfb3BzLVx1MDAzZXByb3RvKTtcbm5ldC9kc2EvZHNhLmMtNTgwLVx0cnRubF91bmxvY2soKTtcbi0tXG5uZXQvZHNhL2RzYS5jPTExNTQ9c3RhdGljIGludCBkc2FfcG9ydF9wYXJzZV9jcHUoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXG4tLVxubmV0L2RzYS9kc2EuYy0xMTc1LVx0aWYgKHVzZXJfcHJvdG9jb2wpIHtcbm5ldC9kc2EvZHNhLmM6MTE3NjpcdFx0aWYgKCFkcy1cdTAwM2VvcHMtXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbCkge1xubmV0L2RzYS9kc2EuYy0xMTc3LVx0XHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcJiMzNDtUYWcgcHJvdG9jb2wgY2Fubm90IGJlIG1vZGlmaWVkXFxuXCYjMzQ7KTtcbi0tXG5uZXQvZHNhL2RzYS5jLTEyMjktXHQgKiBkc2Ffc3dpdGNoX3NldHVwX3RhZ19wcm90b2NvbCBvbmNlIC5zZXR1cCBoYXMgcnVuIGFuZCB0aGVcbm5ldC9kc2EvZHNhLmM6MTIzMDpcdCAqIGRyaXZlciBpcyByZWFkeSB0byBhY2NlcHQgY2FsbHMgdG8gLmNoYW5nZV90YWdfcHJvdG9jb2wuIElmXG5uZXQvZHNhL2RzYS5jLTEyMzEtXHQgKiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGN1c3RvbSBwcm90b2NvbCBhdCB0aGF0XG4tLVxubmV0L2RzYS9zd2l0Y2guYz04NzM9c3RhdGljIGludCBkc2Ffc3dpdGNoX2NoYW5nZV90YWdfcHJvdG8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbm5ldC9kc2Evc3dpdGNoLmMtODc5LVxubmV0L2RzYS9zd2l0Y2guYzo4ODA6XHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKVxubmV0L2RzYS9zd2l0Y2guYy04ODEtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvZHNhL3N3aXRjaC5jLTg4NC1cbm5ldC9kc2Evc3dpdGNoLmM6ODg1Olx0ZXJyID0gZHMtXHUwMDNlb3BzLVx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2woZHMsIHRhZ19vcHMtXHUwMDNlcHJvdG8pO1xubmV0L2RzYS9zd2l0Y2guYy04ODYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTIzMgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBEU0EgVGFnZ2VyIFRlc3RpbmcgQ29udW5kcnVtKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgc2VlbXMgYGRzYV9sb29wYCBkb2VzbiYjMzk7dCBwbGF5IG5pY2Ugd2l0aCBgY2hhbmdlX3RhZ19wcm90b2NvbGAuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgSSBuZWVkIHRvIHRlc3QgRFNBIHRhZ2dlcnMsIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IHVzZSBwcm90b2NvbHMgbGlrZSBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYC4KClN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sLCBidXQgaXRzIHN0YW5kYXJkIG5ldHdvcmtpbmcgc2V0dXBzIHdpdGggYHR1bmAsIGB0YXBgLCBvciBgdmV0aGAgZG9uJiMzOTt0IGN1dCBpdCBoZXJlLiBUaGVzZSBwcm90b2NvbHMgYXJlIG9ubHkgaW52b2tlZCB3aGVuIGEgbmV0ZGV2IGlzIGRlZmluZWQgYXMgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLiBBbmQsIGFzIGZhciBhcyBJIGtub3csIGBkc2FfbG9vcGAgaXMgdGhlIG9ubHkgZWFzaWx5IGFjY2Vzc2libGUgbW9jayBEU0Egc3dpdGNoLiBBbmQgaWYgaXQgY2FuJiMzOTt0IGNoYW5nZSB0aGUgdGFnIHByb3RvY29sLCBJJiMzOTttIHN0dWNrLCBhbmQgdGhvc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb2YgdGhlc2Ugc3dpdGNoZXMuCgpXYWl0IGEgbWludXRlLCBpc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGluIFN5emthbGxlciBmb3IgRFNBIHNldHVwPyBBaCwgbm8sIEkgd2FzIHRoaW5raW5nIG9mIGBzeXpfZHNhYCwgd2hpY2ggZG9lc24mIzM5O3QgaGVscC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2ssIGJ1dCBJIHRoaW5rIHRoZSBiZXN0IHBhdGggaXMgdG8gbG9vayBmb3Igb3RoZXIgbW9jayBEU0Egc3dpdGNoZXMsIG9yIGlmIGBkc2FfbG9vcGAgaGFzIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSGFuZyBvbi4gYGRzYV9sb29wYCBkZWZhdWx0cyB0byBgRFNBX1RBR19QUk9UT19OT05FYC4gSSBzaG91bGQgY2hlY2sgYGRzYV9sb29wX2dldF9wcm90b2NvbGAuIEhtbSwgaXQgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4gU28gaWYgaXQgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4uLiB0aGF0IG1lYW5zICpubyogdGFnZ2VyIGlzIGluIHVzZS4gQW5kIGBkc2FfbG9vcGAgaXMganVzdCBhIG1vY2sgZHJpdmVyLgoKU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBmdW5jdGlvbnMgbGlrZSBgbGFuOTM3eF94bWl0YCBvciBgb2NlbG90X3htaXRgPyBJIHRoaW5rIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggYG5ldC9kc2EvdGFnX2tzei5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuOTM3eF94bWl0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2tzei5jPTQwMD1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19LU1o5ODkzLCBLU1o5ODkzX05BTUUpO1xuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTQyNi1cbm5ldC9kc2EvdGFnX2tzei5jOjQyNzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzN3hfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2RzYS90YWdfa3N6LmMtNDI4LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2RzYS90YWdfa3N6LmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgbGFuOTM3eF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTQ2Mi1cdC5wcm90b1x0PSBEU0FfVEFHX1BST1RPX0xBTjkzN1gsXG5uZXQvZHNhL3RhZ19rc3ouYzo0NjM6XHQueG1pdFx0PSBsYW45Mzd4X3htaXQsXG5uZXQvZHNhL3RhZ19rc3ouYy00NjQtXHQucmN2XHQ9IGtzejk0NzdfcmN2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI5NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBEU0EgVGFnZ2VycyoqCgpPa2F5LCB0aGVzZSBhcmUgc2hvd2luZyB1cCBhcyBEU0EgdGFnZ2Vycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1hcmsgdGhlbSBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGV5JiMzOTtyZSBub3QgcmVhY2hhYmxlLCB0aGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLiBOb3csIEkgc2VlIGBpYm12ZXRoYC4uLmhtbW0uIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCB0aGF0PyBBaCwgcmlnaHQsIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldC4gSXQmIzM5O3MgcmVsYXRlZCB0byBgUFBDX1BTRVJJRVNgLiBHb29kLiBCdXQgd2FpdCwgU3l6a2FsbGVyIGRvZXMgcnVuIG9uIGBwcGM2NGxlYCB3aGljaCBpcyBQb3dlclBDIDY0LWJpdCBMaXR0bGUgRW5kaWFuLgoKSG9sZCBvbiwgU3l6a2FsbGVyICpoYXMqIGEgYHBwYzY0bGVgIGluc3RhbmNlISBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBMZXQgbWUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgU3l6a2FsbGVyJiMzOTtzIGBwcGM2NGxlYCBpbnN0YW5jZS4gRG9lcyBpdCBlbmFibGUgYElCTVZFVEhgPyBJIGRvbiYjMzk7dCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IGBJQk1WRVRIYCBpcyBhIHZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgcFNlcmllcy4gSGFuZyBvbi4uLlN5emthbGxlciB1c2VzIFFFTVUgZm9yIGBwcGM2NGxlYCwgYW5kIHRoZSBtYWNoaW5lIHR5cGUgaXMgYHBzZXJpZXNgISBUaGF0IG5haWxzIGl0ISBgSUJNVkVUSGAgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB0aGF0IFFFTVUgc2V0dXAuIFJpZ2h0LCBub3cgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTE4Nz1zdGF0aWMgaW50IGlibXZldGhfc2VuZChzdHJ1Y3QgaWJtdmV0aF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTIxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTIxNTpzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTYtXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIzMj1zdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjQxOlx0aWYgKGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHNrYiwgbmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTI0Mi1cdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlibXZldGhgIGRyaXZlci4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBjaGFuZ2luZyBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgbmV0d29yayBkZXZpY2UmIzM5O3MgdHJhbnNtaXQgZnVuY3Rpb24gKGBuZG9fc3RhcnRfeG1pdGApLiBUaGUgY29kZSYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBzaW5jZSBpdCYjMzk7cyB0aGUgdHJhbnNtaXQgcGF0aC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc3dpdGNoaW5nIGZyb20gYGV0aF9oZHIoc2tiKWAgdG8gYHNrYl9ldGhfaGRyKHNrYilgLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U/CgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgZnVuY3Rpb25zLiBgZXRoX2hkcihza2IpYCBpcyBlc3NlbnRpYWxseSBhIG1hY3JvIHRoYXQgcmV0dXJucyBgKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpYCwgd2hlcmVhcyBgc2tiX2V0aF9oZHIoc2tiKWAgcmV0dXJucyBgKHN0cnVjdCBldGhoZHIgKilza2ItJmd0O2RhdGFgLiBJbiB0aGUgY29udGV4dCBvZiBgbmRvX3N0YXJ0X3htaXRgLCBgc2tiLSZndDtkYXRhYCBjbGVhcmx5IHBvaW50cyB0byB0aGUgRXRoZXJuZXQgaGVhZGVyLiBUaGUgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBza2JfbWFjX2hlYWRlcihza2IpYCBtaWdodCBub3QgYWx3YXlzIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBhbGwgcGFja2V0IGdlbmVyYXRvcnMuIFBhY2tldCBzb2NrZXRzLCBCUEYgcHJvZ3JhbXMsIG9yIG1heWJlIGV2ZW4gb3RoZXIgYXJlYXMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgY291bGQgbGVhdmUgaXQgdW5zZXQuIElmIGBza2JfbWFjX2hlYWRlcihza2IpYCBpc24mIzM5O3Qgc2V0LCBgZXRoX2hkcihza2IpYCBjb3VsZCBiZSByZWFkaW5nIGdhcmJhZ2UgbWVtb3J5LCBvciB3b3JzZSwgbGVhZGluZyB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQuCgpTbywgYnkgc3dpdGNoaW5nIHRvIGBza2JfZXRoX2hkcihza2IpYCwgd2UmIzM5O3JlIGd1YXJhbnRlZWluZyB3ZSYjMzk7cmUgYWx3YXlzIGFjY2Vzc2luZyBgc2tiLSZndDtkYXRhYCwgd2hpY2ggY29udGFpbnMgdGhlIEV0aGVybmV0IGhlYWRlciBpbiB0aGlzIGNvbnRleHQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIGBza2JfbWFjX2hlYWRlcmAgaXNuJiMzOTt0IHNldCwgd2hpY2ggY291bGQgcmVzdWx0IGluIGRyb3BwZWQgcGFja2V0cyBvciBldmVuIGNyYXNoZXMuIFRoZXJlZm9yZSwgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpnb29kKiBmdW5jdGlvbmFsIGNoYW5nZS4KCk5vdywgYSBuYWdnaW5nIHRob3VnaHQuIFdoYXQgYWJvdXQgRFNBIHRhZ2dlcnM/IENvdWxkIHRoaXMgcGF0Y2ggYWZmZWN0IHRoZW0/IEFyZSB0aGV5IGV2ZW4gcmVhY2hhYmxlPyBFdmVuIGlmIGBkc2FfbG9vcGAgZG9lc24mIzM5O3QgbGV0IHVzIGNoYW5nZSB0YWcgcHJvdG9jb2xzLCBtYXliZSB0aGVyZSYjMzk7cyBhbm90aGVyIHdheSB0byB0ZXN0IHRoZW0uIENhbiBJIGluc3RhbnRpYXRlIGEgRFNBIHRhZ2dlciBkaXJlY3RseSwgc29tZWhvdz8gTm8sIERTQSB0YWdnZXJzIGFyZSBwYXJ0IG9mIHRoZSBEU0EgY29yZSB0aGF0IGhhbmRsZXMgdHJhbnNtaXQvcmVjZWl2ZSBvbiBEU0EgbWFzdGVyL3NsYXZlIGludGVyZmFjZXMsIGFuZCB0aGV5IGFyZSBjYWxsZWQgZnJvbSB0aGVyZS4gSXMgdGhlcmUgYSBtb2NrIGRyaXZlciB0byB0ZXN0IHdpdGg/IE9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSBhZ2Fpbi4KCk1heWJlIHNvbWV0aGluZyBsaWtlIGBiY21fc2YyYCBvciBgbXY4OGU2eHh4YCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRob3NlIHN3aXRjaGVzLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCwgd2FpdCwgc3l6a2FsbGVyIGhhcyBwYWNrZXQgaW5qZWN0aW9uLiBCdXQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgcHJvYmVkIGZpcnN0IHRvIG1ha2UgY29kZSBwYXRocyByZWFjaGFibGUuIE9rYXksIG1heWJlLi4uIHN5emthbGxlciAqY2FuKiB1c2UgYGRzYV9sb29wYC4gQ2FuIHdlIGNvbmZpZ3VyZSBgZHNhX2xvb3BgIHRvIHVzZSBgS1NaYCBvciBgT0NFTE9UYCB0YWdzPyBObywgaXQgbG9va3MgbGlrZSBgZHNhX2xvb3BgIHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFVnaC4gV2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gTm9wZSwgbm8gRFNBIHN1cHBvcnQgaW4gYG5ldGRldnNpbWAuCgpTbywgdGhlIERTQSB0YWdnZXJzIGFyZSBwcm9iYWJseSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSG93ZXZlciwgYGlibXZldGhgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIG9uIGBwcGM2NGxlYCBRRU1VLiBTaW5jZSBgaWJtdmV0aGAgKmlzKiByZWFjaGFibGUsIHRoZSBwYXRjaCBhcyBhIHdob2xlIGlzIHdvcnRoIGZ1enppbmcgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciByZWdyZXNzaW9ucy4gSSBzaG91bGQgZm9jdXMgb24gZnV6emluZyBgaWJtdmV0aF9zdGFydF94bWl0YCBhbmQgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjE1Olx0c3RhdGljIGludCBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuMTIxNjpcdFx0XHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbjEyMTc6XHR7XG4xMjE4Olx0XHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4xMjE5Olx0XHRpbnQgcmV0ID0gMDtcbjEyMjA6XHRcbjEyMjE6XHRcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XG4xMjIyOlx0XG4xMjIzOlx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXHUwMDNlaF9kZXN0LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpKSB7XG4xMjI0Olx0XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDt2ZXRoIGRvZXNuJiMzOTt0IHN1cHBvcnQgbG9vcGJhY2sgcGFja2V0cywgZHJvcHBpbmcgcGFja2V0LlxcblwmIzM0Oyk7XG4xMjI1Olx0XHRcdG5ldGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbjEyMjY6XHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4xMjI3Olx0XHR9XG4xMjI4Olx0XG4xMjI5Olx0XHRyZXR1cm4gcmV0O1xuMTIzMDpcdH1cbjEyMzE6XHRcbjEyMzI6XHRzdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4xMjMzOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuMTIzNDpcdHtcbjEyMzU6XHRcdHN0cnVjdCBpYm12ZXRoX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMTIzNjpcdFx0dW5zaWduZWQgaW50IGRlc2NfZmxhZ3MsIHRvdGFsX2J5dGVzO1xuMTIzNzpcdFx0dW5pb24gaWJtdmV0aF9idWZfZGVzYyBkZXNjO1xuMTIzODpcdFx0aW50IGksIHF1ZXVlX251bSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuMTIzOTpcdFx0dW5zaWduZWQgbG9uZyBtc3MgPSAwO1xuMTI0MDpcdFxuMTI0MTpcdFx0aWYgKGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHNrYiwgbmV0ZGV2KSlcbjEyNDI6XHRcdFx0Z290byBvdXQ7XG4xMjQzOlx0XHQvKiB2ZXRoIGNhbiYjMzk7dCBjaGVja3N1bSBvZmZsb2FkIFVEUCAqL1xuMTI0NDpcdFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMzYKCQkJCQkJCW91dHB1dDogMjI0CgkJCQkJCQl0aG91Z2h0czogMTI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgaWJtdmV0aGAgYW5kIERTQSBUYWdnZXJzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gYW5hbHl6aW5nIHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGhvdyBiZXN0IHRvIGFwcHJvYWNoIGZ1enppbmcgaXQuIFRoZSBtYWluIGNoYW5nZSBmb2N1c2VzIG9uIHN3aXRjaGluZyBmcm9tIGBldGhfaGRyKHNrYilgIHRvIGBza2JfZXRoX2hkcihza2IpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aCBvZiBgaWJtdmV0aGAgYW5kIGEgY291cGxlIG9mIERTQSB0YWdnZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlcyBvciBsb2dpY2FsIGVycm9ycyB3aXRoIHBvdGVudGlhbGx5IG1hbGZvcm1lZCBwYWNrZXRzLgoKRmlyc3QsIHRoZSBjb3JlIG1vZGlmaWVkIGZ1bmN0aW9uIGluIGBpYm12ZXRoYCBpcyBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICpzZWVtcyogbGlrZSB0aGUgbG9naWNhbCBjaG9pY2UgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGVuIEkgdGhvdWdodCwgd2FpdCwgdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGlzIGFsc28gbW9kaWZpZWQuIEl0JiMzOTtzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB0aGUgZHJpdmVyJiMzOTtzIGhvdC1wYXRoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBpcyAqZHJpdmVyKi1zcGVjaWZpYyB0aG91Z2gsIHNvIGxpc3RpbmcgaXQgKmNvdWxkKiBiZSBva2F5LiBVbHRpbWF0ZWx5LCBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgIGlzIHRoZSBtb3JlIHRhcmdldGVkLCBncmFudWxhciBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBwYWNrZXQgdHJhbnNtaXR0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgY29uY2VudHJhdGluZyB0aGUgZnV6emVyJiMzOTtzIGVmZm9ydHMgb24gdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGgsIGFuZCBpdCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmdXp6ZXIgaGl0cyB0aGlzIGFyZWEgb2YgdGhlIGRyaXZlci4KCk5leHQsIEkgY29uc2lkZXJlZCB3aGV0aGVyIHRoZSBEU0EgdGFnZ2VycyBhcmUgZXZlbiByZWFjaGFibGUuIEkgY2hlY2tlZCB0aGUgS2NvbmZpZyBvcHRpb25zLCBhbmQgYm90aCBgTkVUX0RTQV9UQUdfS1NaYCBhbmQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgYXJlIGF2YWlsYWJsZSB0byBiZSBlbmFibGVkLiBJIHJ1bGVkIG91dCBkaXJlY3QgdXNlciBjcmVhdGlvbiB2aWEgbmV0bGluaywgb3IgYnkgY3JlYXRpbmcgYSBzd2l0Y2ggd2l0aCBzeXprYWxsZXIsIGJ1dCBldmVuIHdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byBjcmVhdGUgdGhlc2UgdGFnZ2VycywgYGlibXZldGhgIGl0c2VsZiBpcyByZWFjaGFibGUuIFNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpJIGNvbmZpcm1lZCB0aGF0IGBJQk1WRVRIYCBkZXBlbmRzIG9uIGBQUENfUFNFUklFU2AuIFNvIEkmIzM5O2xsIGRlZmluaXRlbHkgZW5hYmxlIGBJQk1WRVRIYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEp1c3QgdG8gYmUgc2FmZSBhbmQgZW5zdXJlIHRoZSBtYXhpbXVtIGNvdmVyYWdlLCBJJiMzOTtsbCBhbHNvIGVuYWJsZSBgTkVUX0RTQV9UQUdfS1NaYCBhbmQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAuCgpCYWNrIHRvIHRoZSBjb2RlOiBJIHZlcmlmaWVkIHRoYXQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIGBpYm12ZXRoYCBkcml2ZXIgd2VyZSBvbmx5IGluIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuIFRoZW4sIEkgaWRlbnRpZmllZCBgbGFuOTM3eF94bWl0YCBhbmQgYG9jZWxvdF94bWl0YCBhcyB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIHdpdGhpbiB0aGUgRFNBIHRhZ2dlciBzb3VyY2UgZmlsZXMuIFNpbmNlIHRoZXNlIGFyZSBhbHNvIGhvdC1wYXRoIGZ1bmN0aW9ucyAqZm9yIHRob3NlIHNwZWNpZmljIHRhZ2dlcnMqLCBsaXN0aW5nIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AgaXMganVzdGlmaWVkLgoKU28sIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTtsbCBkbzogSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enplciBvbiB0aGVzZSBrZXkgc3ltYm9sczoKCiogICBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgCiogICBgbGFuOTM3eF94bWl0YAoqICAgYG9jZWxvdF94bWl0YAoKSSByZXZpZXdlZCB0aGUgcGF0Y2ggbG9naWMgYW5kIGNvbmZpcm1lZCB0aGF0IHJlcGxhY2luZyBgZXRoX2hkcihza2IpYCB3aXRoIGBza2JfZXRoX2hkcihza2IpYCBpcyB0aGUgY29yZSBjaGFuZ2UsIHdoaWNoIHNob3VsZCBpbXByb3ZlIHRoZSBzYWZldHkgYW5kIHJvYnVzdG5lc3Mgb2YgcGFja2V0IHRyYW5zbWlzc2lvbi4gSSYjMzk7dmUgYWxzbyB2ZXJpZmllZCB0aGF0IHRoZXNlIHN5bWJvbHMgYXJlIGNvcnJlY3RseSBkZWZpbmVkIGluIHRoZSBpbmNsdWRlcy4KCkkgZG91YmxlLWNoZWNrZWQgdGhlIEtjb25maWcgc3ltYm9scyBhbmQgdGhlIGRyaXZlciBuYW1lLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUJNVkVUSCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19LU1omIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQmIzM0OywKICAgICYjMzQ7bGFuOTM3eF94bWl0JiMzNDssCiAgICAmIzM0O29jZWxvdF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGV0aF9oZHIoc2tiKSB3aXRoIHNrYl9ldGhfaGRyKHNrYikgaW4gdGhlIFRYIHBhdGggb2YgaWJtdmV0aCBhbmQgdHdvIERTQSB0YWdnZXJzLiBldGhfaGRyKHNrYikgcmVsaWVzIG9uIHNrYl9tYWNfaGVhZGVyKHNrYikgYmVpbmcgc2V0IGNvcnJlY3RseSwgd2hpY2ggbWlnaHQgbm90IGJlIHRydWUgZm9yIHBhY2tldHMgaW5qZWN0ZWQgdmlhIHBhY2tldCBzb2NrZXRzIG9yIEJQRi4gc2tiX2V0aF9oZHIoc2tiKSBzYWZlbHkgdXNlcyBza2ItXHUwMDNlZGF0YSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBsb2dpY2FsIGJ1Z3Mgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cy4gVGhlIGlibXZldGggZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiBRRU1VIHBzZXJpZXMgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WRVRIJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0tTWiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1RfODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZCYjMzQ7LAogICAgJiMzNDtsYW45Mzd4X3htaXQmIzM0OywKICAgICYjMzQ7b2NlbG90X3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgZXRoX2hkcihza2IpIHdpdGggc2tiX2V0aF9oZHIoc2tiKSBpbiB0aGUgVFggcGF0aCBvZiBpYm12ZXRoIGFuZCB0d28gRFNBIHRhZ2dlcnMuIGV0aF9oZHIoc2tiKSByZWxpZXMgb24gc2tiX21hY19oZWFkZXIoc2tiKSBiZWluZyBzZXQgY29ycmVjdGx5LCB3aGljaCBtaWdodCBub3QgYmUgdHJ1ZSBmb3IgcGFja2V0cyBpbmplY3RlZCB2aWEgcGFja2V0IHNvY2tldHMgb3IgQlBGLiBza2JfZXRoX2hkcihza2IpIHNhZmVseSB1c2VzIHNrYi1cdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODoxNy41MTc0NjQwODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcxMjYxMDIwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVkVUSFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfS1NaXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZFwiLFxuICAgIFwibGFuOTM3eF94bWl0XCIsXG4gICAgXCJvY2Vsb3RfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGV0aF9oZHIoc2tiKSB3aXRoIHNrYl9ldGhfaGRyKHNrYikgaW4gdGhlIFRYIHBhdGggb2YgaWJtdmV0aCBhbmQgdHdvIERTQSB0YWdnZXJzLiBldGhfaGRyKHNrYikgcmVsaWVzIG9uIHNrYl9tYWNfaGVhZGVyKHNrYikgYmVpbmcgc2V0IGNvcnJlY3RseSwgd2hpY2ggbWlnaHQgbm90IGJlIHRydWUgZm9yIHBhY2tldHMgaW5qZWN0ZWQgdmlhIHBhY2tldCBzb2NrZXRzIG9yIEJQRi4gc2tiX2V0aF9oZHIoc2tiKSBzYWZlbHkgdXNlcyBza2ItXFx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MTcuNTE3NDY5MTc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzIxMjU1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxN2NkOGIzNGZjZDg4OWI0NWM1NTBhYzQ1NGQ2YWY0MDRjMzI5MDM1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jXFxuaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jXFxuQEAgLTEyMTgsNyArMTIxOCw3IEBAIHN0YXRpYyBpbnQgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0c3RydWN0IGV0aGhkciAqZXRoZXJfaGVhZGVyO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0ZXRoZXJfaGVhZGVyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG4gXFxuIFxcdGlmIChldGhlcl9hZGRyX2VxdWFsKGV0aGVyX2hlYWRlci1cXHUwMDNlaF9kZXN0LCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKSkge1xcbiBcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcInZldGggZG9lc24ndCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXFxuaW5kZXggNjdmYTg5ZjEwMmUwNzAuLjRmNzQzMzZhZTM5NjhhIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2tzei5jXFxuKysrIGIvbmV0L2RzYS90YWdfa3N6LmNcXG5AQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHU4IHByaW8gPSBuZXRkZXZfdHhxX3RvX3RjKGRldiwgcXVldWVfbWFwcGluZyk7XFxuIFxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdXNlcl90b19wb3J0KGRldik7XFxuLVxcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0Y29uc3Qgc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG4gXFx0X19iZTE2ICp0YWc7XFxuIFxcdHUxNiB2YWw7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXFxuaW5kZXggZjUwZjFjZDgzZjE2MWMuLjQ1MTQwMjY4OTdkMWE3IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXFxuKysrIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG5AQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHU4IHBjcCA9IG5ldGRldl90eHFfdG9fdGMobmV0ZGV2LCBxdWV1ZV9tYXBwaW5nKTtcXG4gXFx0dTE2IHR4X3ZpZCA9IGRzYV90YWdfODAyMXFfc3RhbmRhbG9uZV92aWQoZHApO1xcbi1cXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XFxuK1xcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxuIFxcbiBcXHRpZiAob2NlbG90X3B0cF9yZXdfb3Aoc2tiKSB8fCBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VoX2Rlc3QpKVxcbiBcXHRcXHRyZXR1cm4gb2NlbG90X2RlZmVyX3htaXQoZHAsIHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU4OjE4LjI5MDYwNjc4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2MzUyOTQ5MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZFVEhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIixcbiAgICBcImxhbjkzN3hfeG1pdFwiLFxuICAgIFwib2NlbG90X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVxcdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTdjZDhiMzRmY2Q4ODliNDVjNTUwYWM0NTRkNmFmNDA0YzMyOTAzNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbmluZGV4IDczZTA1MWQyNmI5ZDg4Li44OGU4YmRmYmNkMTEyOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbkBAIC0xMjE4LDcgKzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcbitcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XG4gXG4gXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXHUwMDNlaF9kZXN0LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpKSB7XG4gXHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcInZldGggZG9lc24ndCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXG5cIik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfa3N6LmMgYi9uZXQvZHNhL3RhZ19rc3ouY1xuaW5kZXggNjdmYTg5ZjEwMmUwNzAuLjRmNzQzMzZhZTM5NjhhIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfa3N6LmNcbisrKyBiL25ldC9kc2EvdGFnX2tzei5jXG5AQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1MTYgcXVldWVfbWFwcGluZyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0dTggcHJpbyA9IG5ldGRldl90eHFfdG9fdGMoZGV2LCBxdWV1ZV9tYXBwaW5nKTtcbiBcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdXNlcl90b19wb3J0KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XG4rXHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBza2JfZXRoX2hkcihza2IpO1xuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbmluZGV4IGY1MGYxY2Q4M2YxNjFjLi40NTE0MDI2ODk3ZDFhNyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG4rKysgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IHF1ZXVlX21hcHBpbmcgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiBcdHU4IHBjcCA9IG5ldGRldl90eHFfdG9fdGMobmV0ZGV2LCBxdWV1ZV9tYXBwaW5nKTtcbiBcdHUxNiB0eF92aWQgPSBkc2FfdGFnXzgwMjFxX3N0YW5kYWxvbmVfdmlkKGRwKTtcbi1cdHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcbitcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG4gXG4gXHRpZiAob2NlbG90X3B0cF9yZXdfb3Aoc2tiKSB8fCBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoaGRyLVx1MDAzZWhfZGVzdCkpXG4gXHRcdHJldHVybiBvY2Vsb3RfZGVmZXJfeG1pdChkcCwgc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU4OjE4LjI5MDYwODk2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NzAxNDQ3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lIOKAkyBpdCdzIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYGV0aF9oZHIoc2tiKWAgd2l0aCBgc2tiX2V0aF9oZHIoc2tiKWAgaW4gYSBmZXcgc3BlY2lmaWMgZHJpdmVyIGZpbGVzOiBgaWJtdmV0aC5jYCwgYHRhZ19rc3ouY2AsIGFuZCBgdGFnX29jZWxvdF84MDJxLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZnVuY3Rpb25hbCBkaWZmZXJlbmNlIGlzLCBpZiBhbnkuIEkgbWVhbiwgd2UncmUgdGFsa2luZyBhYm91dCBoZWFkZXIgYWNjZXNzIGhlcmUsIHNvIHRoZXJlJ3MgYm91bmQgdG8gYmUgYSByZWFzb24uIExldCdzIGRlbHZlIGluLlxuXG5GaXJzdCwgSSdsbCByZWZyZXNoIG15IG1lbW9yeS4gYGV0aF9oZHJgIGlzIGRlZmluZWQgYXMgc2ltcGx5IGNhc3RpbmcgdGhlIHJlc3VsdCBvZiBgc2tiX21hY19oZWFkZXIoc2tiKWAgdG8gYSBgc3RydWN0IGV0aGhkciAqYC4gVGhhdCdzIGJhc2ljIGVub3VnaC4gTm93LCBJJ20gZmFpcmx5IGNlcnRhaW4gYHNrYl9ldGhfaGRyYCB3aWxsIGRvIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIsIHBlcmhhcHMgaW5jb3Jwb3JhdGluZyBzb21lIGFkZGl0aW9uYWwgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gb3IgbWF5YmUganVzdCBvZmZlcmluZyBhIG1vcmUgc3RhbmRhcmRpemVkIGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBTS0IgZnJhbWV3b3JrLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIGEgZGlyZWN0IGVxdWl2YWxlbnQsIG9yIGlmIHRoZXJlJ3Mgc3VidGxlIGJlaGF2aW9yIHRoYXQgd2FycmFudHMgdGhpcyBjaGFuZ2UuIFRvIGJlIHN1cmUsIEknbGwgcXVpY2tseSBmaXJlIHVwIGEgYGdyZXBgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSB1c2FnZSBvciBkZWZpbml0aW9uIG9mIGBza2JfZXRoX2hkcmAgaW4gdGhlIGNvZGViYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2h5IHRoZXkncmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgbW9yZSBkaXJlY3QgYWNjZXNzIHdpdGggYGV0aF9oZHJgLiBMZXQncyBzZWUgd2hhdCB3ZSB0dXJuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MjMuODYwNzU2MTkxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTA3NTc5MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl9ldGhfaGRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIxNT1zdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjIxOlxcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZ2VuZXZlLmM9MTMyND1zdGF0aWMgaW50IGdlbmV2ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZ2VuZXZlLmMtMTQxNC1cXHRcXHR9IGVsc2UgaWYgKGdlbmV2ZS1cXHUwMDNlY2ZnLmRmID09IEdFTkVWRV9ERl9JTkhFUklUKSB7XFxuZHJpdmVycy9uZXQvZ2VuZXZlLmM6MTQxNTpcXHRcXHRcXHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xcbmRyaXZlcnMvbmV0L2dlbmV2ZS5jLTE0MTYtXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz02MzA9c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzItXFx0Y29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjYzMzpcXHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYzNC1cXHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjc2VjLmM9NTk3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFjc2VjX2VuY3J5cHQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3NlYy5jLTY0OC1cXHR1bnByb3RlY3RlZF9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYzo2NDk6XFx0ZXRoID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYy02NTAtXFx0c2NpX3ByZXNlbnQgPSBtYWNzZWNfc2VuZF9zY2koc2VjeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9NTQ1PXN0YXRpYyBpbnQgbWFjdmxhbl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtNTUxLVxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9CUklER0UpIHtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6NTUyOlxcdFxcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTU1My1cXG4tLVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaD0yNT1zdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaC0zMi0gKi9cXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmg6MzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaC0zNC17XFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz0xMjU9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTEzNi1cXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XFxubmV0L2RzYS90YWdfa3N6LmM6MTM3OlxcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxubmV0L2RzYS90YWdfa3N6LmMtMTM4LVxcbi0tXFxubmV0L2RzYS90YWdfa3N6LmM9Mjg3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy0zMDUtXFx0dGFnID0gc2tiX3B1dChza2IsIEtTWjk0NzdfSU5HUkVTU19UQUdfTEVOKTtcXG5uZXQvZHNhL3RhZ19rc3ouYzozMDY6XFx0aGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19rc3ouYy0zMDctXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz0zNjA9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTM3Ny1cXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XFxubmV0L2RzYS90YWdfa3N6LmM6Mzc4OlxcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxubmV0L2RzYS90YWdfa3N6LmMtMzc5LVxcbi0tXFxubmV0L2RzYS90YWdfa3N6LmM9NDI3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy00MzItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcXG5uZXQvZHNhL3RhZ19rc3ouYzo0MzM6XFx0Y29uc3Qgc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19rc3ouYy00MzQtXFx0X19iZTE2ICp0YWc7XFxuLS1cXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYz02Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03My1cXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XFxubmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmM6NzQ6XFx0c3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MzkuMzY4MzQyMDcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NzA3NDE1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjpcblxuKipDaGVja2luZyB0aGUgRXRoZXJuZXQgSGVhZGVyIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGVzZSBFdGhlcm5ldCBoZWFkZXJzLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBkZWZpbml0aXZlIGRlZmluaXRpb24uIEknbGwgb3BlbiB1cCBgaW5jbHVkZS9saW51eC9pZl9ldGhlci5oYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBgc2tiX2V0aF9oZHJgIGlzIHVzZWQgYW5kIHdoYXQgaXQncyByZWFsbHkgZG9pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCBpdCdzIGxpa2VseSBhIG1hY3JvIG9yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIEV0aGVybmV0IGhlYWRlciB3aXRoaW4gYSBzb2NrZXQgYnVmZmVyIChgc2tiYCksIGJ1dCBJIHdhbnQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWNzLiBMZXQncyBzZWUgd2hhdCB0aGUgYWN0dWFsIGRlY2xhcmF0aW9uIGFuZCBhc3NvY2lhdGVkIGNvbW1lbnRzIHJldmVhbC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODo0My4wNDU0MTg0NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpldGhfaGRyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuICAyNjpcXHR7XFxuICAyNzpcXHRcXHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpO1xcbiAgMjg6XFx0fVxcbiAgMjk6XFx0XFxuICAzMDpcXHQvKiBQcmVmZXIgdGhpcyB2ZXJzaW9uIGluIFRYIHBhdGgsIGluc3RlYWQgb2ZcXG4gIDMxOlxcdCAqIHNrYl9yZXNldF9tYWNfaGVhZGVyKCkgKyBldGhfaGRyKClcXG4gIDMyOlxcdCAqL1xcbiAgMzM6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgMzQ6XFx0e1xcbiAgMzU6XFx0XFx0cmV0dXJuIChzdHJ1Y3QgZXRoaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgMzY6XFx0fVxcbiAgMzc6XFx0XFxuICAzODpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmlubmVyX2V0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gIDM5OlxcdHtcXG4gIDQwOlxcdFxcdHJldHVybiAoc3RydWN0IGV0aGhkciAqKXNrYl9pbm5lcl9tYWNfaGVhZGVyKHNrYik7XFxuICA0MTpcXHR9XFxuICA0MjpcXHRcXG4gIDQzOlxcdGludCBldGhfaGVhZGVyX3BhcnNlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICA0NDpcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGNoYXIgKmhhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6NDMuMDQ1NTQ2MzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTM1Mzg1MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXRoZXJuZXQgSGVhZGVyIEFjY2VzcyBpbiB0aGUgTmV0d29yayBTdGFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBkaWZmZXJlbmNlIEknbSBzZWVpbmcgaXMgYmV0d2VlbiBgc2tiX2V0aF9oZHIoc2tiKWAgd2hpY2ggZGlyZWN0bHkgYWNjZXNzZXMgYHNrYi1cdTAwM2VkYXRhYCwgYW5kIGBldGhfaGRyKHNrYilgIHdoaWNoIHVzZXMgYHNrYl9tYWNfaGVhZGVyKHNrYilgLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpbiB0aGUgVFggcGF0aCwgYHNrYi1cdTAwM2VkYXRhYCBtaWdodCBhbHJlYWR5IHBvaW50IHRvIHRoZSBFdGhlcm5ldCBoZWFkZXIsIGJ1dCBgc2tiX21hY19oZWFkZXIoc2tiKWAgbWlnaHQgbm90IGJlIGluaXRpYWxpemVkIHlldC4gU28sIHVzaW5nIGBldGhfaGRyKHNrYilgIGlzIHByb2JhYmx5IHRoZSBiZXR0ZXIgb3B0aW9uIGhlcmUsIHByZXZlbnRpbmcgYnVncyB3aGVyZSBgc2tiX21hY19oZWFkZXJgIGlzIHVuc2V0LlxuXG5Ob3csIGxldCdzIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgYXJlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY2AsIGBuZXQvZHNhL3RhZ19rc3ouY2AsIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBJJ20gZmFtaWxpYXIgd2l0aCB0aGVzZS4gYGlibXZldGhgIGlzIHRoZSBJQk0gUG93ZXIgVmlydHVhbCBFdGhlcm5ldCBkZXZpY2UgZHJpdmVyLiBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYCBhcmUgYm90aCBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHRhZ2dlcnMsIHNwZWNpZmljYWxseSBmb3IgTWljcmVsIEtTWiBzd2l0Y2hlcyBhbmQgT2NlbG90IHN3aXRjaGVzIHJlc3BlY3RpdmVseS5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGhvdyBlYXNpbHkgY2FuIEkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgb3IgY29udHJvbGxlZCBlbnZpcm9ubWVudD8gU2luY2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYXJlIERTQSB0YWdnZXJzLCBJJ20gdGhpbmtpbmcgYWJvdXQgRFNBIHRlc3RpbmcgdGVjaG5pcXVlcy4gSSBjb3VsZCB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIHZpcnR1YWwgZHJpdmVycy4gQnV0IHdhaXQsIEkgcmVjYWxsIHRoYXQgYGRzYV9sb29wYCB1c2VzIGl0cyBvd24gZGVkaWNhdGVkIHRhZ2dlciwgbm90IGBrc3pgIG9yIGBvY2Vsb3RgLCBzbyB0aGF0J3Mgbm90IGRpcmVjdGx5IGhlbHBmdWwuIFN0aWxsLCBJIG1pZ2h0IGJlIGFibGUgdG8gdGVzdCB0aGVtIGJ5IGNyZWF0aW5nIGEgZHVtbXkgRFNBIHN3aXRjaCwgb3IgbWF5YmUgZXZlbiBpbmplY3QgcGFja2V0cyB1c2luZyBzeXprYWxsZXIuXG5cbkFjdHVhbGx5LCBkb2Vzbid0IHN5emthbGxlciBoYW5kbGUgRFNBIHRlc3RpbmcgdXNpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGlmIGEgY29ycmVzcG9uZGluZyBkcml2ZXIgaXMgYXZhaWxhYmxlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhIGBzeXpfZHNhX3NldHVwYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLi4uIE5vLCB3YWl0LCBzeXprYWxsZXIgbW9zdGx5IGZvY3VzZXMgb24gZ2VuZXJhbCBuZXR3b3JrIGRldmljZSB0ZXN0aW5nLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW5hYmxlIGBORVRfRFNBX1RBR19LU1pgIGFuZCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGVzZSBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6NTAuOTgwOTM2NzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTk5MDQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfVEFHX0tTWlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9MTE0PWNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTIxLVxcbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODo1Ni40ODA4NDYwMjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ5NTc2MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgVGFnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgY29udGV4dCBvZiBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgT2NlbG90IHN3aXRjaC4gVGhpcyB0YWcgbGlrZWx5IGRlYWxzIHdpdGggODAyLjFRIFZMQU4gdGFnZ2luZywgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoYXQgSSBuZWVkIHRvIHVucGFjayBoZXJlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdCdzIGludGVuZGVkIGZvciBPY2Vsb3Qgc3BlY2lmaWNhbGx5OyB0aGUgdGFnIG5hbWUgc3VnZ2VzdHMgaXQgYnV0IGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgY3J1Y2lhbC5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIHdpbGwgZXhwbG9yZSBob3cgdGhpcyB0YWcgaXMgdXNlZCB0byBtYXAgODAyLjFRIFZMQU4gaW5mb3JtYXRpb24gdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIElzIHRoaXMgYSBzaW1wbGUgdHJhbnNsYXRpb24gbGF5ZXIgb3IgZG9lcyBpdCBlbmNvZGUgbW9yZSBjb21wbGV4IFZMQU4gbWFuaXB1bGF0aW9uIHJ1bGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHRhZyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhpbmdzIGxpa2UgVkxBTiBJRCBpbnNlcnRpb24sIHN0cmlwcGluZywgcHJpb3JpdHkgdGFnZ2luZywgb3IgcGVyaGFwcyBldmVuIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgd2l0aGluIHRoZSBPY2Vsb3QgQVNJQy5cblxuSSdsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIERTQSB0YWdzLiBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBEU0EgZnJhbWUgZm9ybWF0IGFuZCBleGlzdGluZyBEU0EgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciB0YWdzPyBBcmUgdGhlcmUgYW55IGltcGxpY2l0IGFzc3VtcHRpb25zIG1hZGUgYnkgdGhlIHRhZz9cblxuSWYgSSBjYW4sIEknbGwgcHJvYmFibHkgc3RhcnQgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb2RlOiBkZXZpY2UgZHJpdmVycywgRFNBIGNvcmUgZnVuY3Rpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgaGVhZGVycyBvciBpbmNsdWRlIGZpbGVzIGZvciByZWxhdGVkIHN0cnVjdHVyZXMgb3IgZGF0YSB0eXBlcyB0byBjb25maXJtIG15IHRob3VnaHRzLiBBbHNvIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGlmIGFueSBleGlzdC4gRnJvbSB0aGVyZSwgSSdsbCBwaWVjZSB0b2dldGhlciB0aGUgZmxvdyBvZiBob3cgdGhpcyB0YWcgaXMgYXBwbGllZCB0byBhIGZyYW1lIGFuZCBob3cgaXQgYWZmZWN0cyB0aGUgc3dpdGNoaW5nIGRlY2lzaW9ucyBvZiB0aGUgT2NlbG90LiBUaGlzIHRhZydzIHB1cnBvc2UgbmVlZHMgdG8gYmUgY29tcGxldGVseSBjbGVhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBpdCBpcyBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIGlzIG5vdCBpbiBjb25mbGljdCB3aXRoIGFueSBvdGhlciBmZWF0dXJlLCBvciB0aGUgRFNBIHdpbGwgYnJlYWsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTowMC41MzA0MjUyNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTA5NjUyNjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9MTM4PWNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNDgtXFxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6MDUuNTIxMzk3Mzk3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMyNTI5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFZlcmlmeWluZyBgaWJtdmV0aGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBpbXB1bHNlLCBhcyBhbHdheXMgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgZXhhbWluaW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGlzIHRvIHN0YXJ0IHdpdGggdGhlIGVzc2VudGlhbHMuIExldCdzIHNlZS4uLiB0aGUgZmFjdCB0aGF0IGBpYm12ZXRoYCBpcyBtZW50aW9uZWQgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBJQk0gdmlydHVhbGl6YXRpb24sIHByb2JhYmx5IHNvbWUgZm9ybSBvZiB2aXJ0dWFsIEV0aGVybmV0IGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlIHdlZWRzIG9mIHNwZWNpZmljIGNvbW1hbmRzIG9yIGRlZXBlciBsb2dzLCBteSBndXQgaW5zdGluY3QgaXMgdG8gZXN0YWJsaXNoIHRoZSBiYXNpY3MuIExldCdzIGNoZWNrIGBpYm12ZXRoYC4gVGhpcyBjb3VsZCBtZWFuIHZlcmlmeWluZyBpdHMgcHJlc2VuY2UsIGl0cyBjdXJyZW50IHN0YXR1cyAodXAvZG93biwgY29uZmlndXJlZC91bmNvbmZpZ3VyZWQpLCBvciBtYXliZSBldmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgdmlydHVhbCBuZXR3b3JraW5nIGVsZW1lbnRzLiBFc3NlbnRpYWxseSwgbGV0J3MgZXN0YWJsaXNoIGEgYmFzZWxpbmUgb2Ygd2hhdCB0aGUgc3lzdGVtIGlzIHRlbGxpbmcgdXMgYWJvdXQgdGhpcyBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgdGhlbiB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHNvbWV0aGluZyBuZWVkcyBhdHRlbnRpb24gb3IgaWYgdGhpcyBjb25maWd1cmF0aW9uIGFsaWducyB3aXRoIHdoYXQgaXMgZXhwZWN0ZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjA4LjY5NDY1MzQzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NjM4MzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUJNVkVUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0lCTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnOjIwOmNvbmZpZyBJQk1WRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIklCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6MzA6Y29uZmlnIElCTVZFVEhfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIktVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjE0LjM0MTA0Mjc1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYzNTUyMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIFN5c3RlbSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgSUJNVkVUSGAgaXMgc3VwcG9ydGVkIG9uIHg4NiBvciBhcm02NCBhcmNoaXRlY3R1cmVzLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGV0aGVybmV0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnYC4gTGV0J3MgbmF2aWdhdGUgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJdCBzaG91bGQgaGF2ZSBhbGwgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoYXQgc3BlY2lmaWMgZHJpdmVyIGFuZCBpdCdzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6MTcuMDA0NTk3OTkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIE5FVF9WRU5ET1JfSUJNXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBJQk1WRVRIXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFBQQ19QU0VSSUVTXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZXRoZXJuZXQgYWRhcHRlcnMgb24gbmV3ZXIgSUJNIGlTZXJpZXNcXG4gIDI1OlxcdFxcdCAgYW5kIHBTZXJpZXMgc3lzdGVtcy5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGxcXG4gIDI4OlxcdFxcdCAgYmUgY2FsbGVkIGlibXZldGguXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBJQk1WRVRIX0tVTklUX1RFU1RcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIktVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEtVTklUXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIEtVTklUPXkgXFx1MDAyNlxcdTAwMjYgSUJNVkVUSD15XFxuICAzNDpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBUaGlzIGJ1aWxkcyB1bml0IHRlc3RzIGZvciB0aGUgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IGRyaXZlci5cXG4gIDM3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToxNy4wMDQ2OTEzMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE5MjkwNDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBJQk1WRVRIIEZ1enppbmcgQ2hhbGxlbmdlKipcblxuT2theSwgc28gYElCTVZFVEhgIGlzIFBvd2VyUEMtc3BlY2lmaWMgYmVjYXVzZSBpdCByZWxpZXMgb24gYFBQQ19QU0VSSUVTYC4gVGhhdCdzIGEgaHVyZGxlIGJlY2F1c2UgU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCwgYXJtNjQsIGFuZCByaXNjdjY0IGFyY2hpdGVjdHVyZXMuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMsIHdlIG1pZ2h0IGJlIHN0dWNrIG5lZWRpbmcgYWN0dWFsIFBvd2VyUEMgaGFyZHdhcmUsIGJ1dCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBIb2xkIG9uLi4udGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNvbWV0aGluZyBhYm91dCBcImltcG9zc2libGUgY29kZSBwYXRoc1wiIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0J3MgaW50cmlndWluZy5cblxuV2FpdCwgUUVNVSAqZG9lcyogc3VwcG9ydCBQUEM2NCBwc2VyaWVzISBPa2F5LCBzbyB0aGVvcmV0aWNhbGx5LCBgSUJNVkVUSGAgc2hvdWxkIGJlIHJlYWNoYWJsZSB0aHJvdWdoIFFFTVUuIEl0J3Mgbm90IGlkZWFsLCBhcyBTeXprYWxsZXIgaXMgeDg2XzY0IGZvY3VzZWQsIGJ1dCBpdCdzIGEgcG9zc2liaWxpdHkuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBEU0EgdGFnZ2Vycz8gVGhvc2UgY2FuIGJlIGNvbXBpbGVkIG9uICphbnkqIGFyY2hpdGVjdHVyZSwgcmlnaHQ/IEkgYW0gYmV0dGluZyB0aGF0IGlzIGNvcnJlY3QuIFRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSByZWFjaCB0aGVtIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlPyBEU0EgdGFnZ2VycyBhcmUgZXNzZW50aWFsbHkgbmV0d29yayBwYWNrZXQgbWFuZ2xlcnMuIElmIHdlIGNhbiBlbXVsYXRlIGEgRFNBIHN3aXRjaCwgb3IgdXNlIGEgc29mdHdhcmUgRFNBIHN3aXRjaCwgd2UncmUgaW4gYnVzaW5lc3MuIEFuZCB0aGUgdGhvdWdodCB0aGVuIGlzLCBjYW4gdGhleSBiZSB1c2VkIGFzIGEgdGVzdCB0YXJnZXQ/XG5cbkFoYSEgYGRzYV9sb29wYCBpcyBhIGR1bW15IERTQSBzd2l0Y2ghIFRoYXQncyBwcm9taXNpbmcuIEJ1dCwgYGRzYV9sb29wYCB1c2VzIGVpdGhlciBgRFNBX1RBR19QUk9UT19EU0FgIG9yIGBEU0FfVEFHX1BST1RPX0VEU0FgLiBDYW4gd2UgY29uZmlndXJlIGBkc2FfbG9vcGAgdG8gdXNlIHNvbWV0aGluZyBsaWtlIGBLU1pgIG9yIGBPQ0VMT1RfODAyMVFgPyBUaGF0IHdvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0OTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToyMy4xOTc1OTgzMjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzU3NDk2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToyOC42NzMzNTQ0MzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MjQ0MzU0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIERTQSBUYWdnZXIgRnV6emluZyB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgSSdtIHdvbmRlcmluZyBhYm91dCBpdHMgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgdG8gZGVmYXVsdCB0byB1c2luZyBgRFNBX1RBR19QUk9UT19EU0FgIG9yIGBEU0FfVEFHX1BST1RPX0VEU0FgLCBidXQgcGVyaGFwcyB3ZSBjYW4gdHdlYWsgdGhhdCBzb21laG93PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGNvbmZpZ3VyYWJpbGl0eS4gVGhlbiwgSSBzZWUgdGhlIHBhdGNoIHJlZmVyZW5jZXMgY2hhbmdlcyBpbiBgbmV0L2RzYS90YWdfa3N6LmNgIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBBaCwgdGhvc2UgYXJlIERTQSB0YWdnZXJzLiBOb3cgdGhpbmdzIGdldCBpbnRlcmVzdGluZy5cblxuVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGNhbiB3ZSBmdXp6IHRoZXNlIERTQSB0YWdnZXJzIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgaXMgdGhlIGdvLXRvIHRvb2wgZm9yIHRoaXMga2luZCBvZiB3b3JrLCBhbmQgSSB2YWd1ZWx5IHJlY2FsbCBpdCBoYXZpbmcgc29tZSBEU0EgZGVzY3JpcHRpb25zIGFscmVhZHkuIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgdGhvc2UgZGVzY3JpcHRpb25zIGV4aXN0IGFuZCwgaWYgc28sIHdoYXQgdGhleSBjb3Zlci4gVGhhdCB3b3VsZCBiZSB0aGUgY3JpdGljYWwgbGluayB0byBzZWUgaWYgdGhpcyBwYXRjaCBvcGVucyB1cCBuZXcgZnV6emluZyBvcHBvcnR1bml0aWVzLiBMZXQncyBzZWUgd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgRFNBLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTozMi45MTU4MDA1OTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDc3OTIxNDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjM4LjA2MzYwNTMzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMxODI0MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRTQSBpbiBTeXprYWxsZXI6IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBkc2FgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggU3l6a2FsbGVyLiBUaGUgY29vbCB0aGluZyBpcyBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5IGludG8gKmFueSogbmV0ZGV2LiBOb3csIGlmIGEgbmV0ZGV2IGhhcHBlbnMgdG8gYmUgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLCB0aG9zZSBwYWNrZXRzIHdpbGwsIGJ5IGRlZmluaXRpb24sIHJ1biB0aHJvdWdoIHRoZSB0YWdnZXIuIFRoYXQncyBnb29kLlxuXG5CdXQgaGVyZSdzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBBcmUgZnVuY3Rpb25zIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYWN0dWFsbHkgcmVhY2hhYmxlLCBjYW4gSSBoaXQgdGhlbSwgd2l0aG91dCB0aGUgbmVlZCBmb3IgcmVhbCBoYXJkd2FyZT8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5Pa2F5LCBJIHJlbWVtYmVyLCB0aGVyZSBhcmUgZHVtbXkgZHJpdmVycyBvciwgZXZlbiBiZXR0ZXIsIG1vY2sgZHJpdmVycy4gTGV0IG1lIHNlZSwgbGV0IG1lIHNlZS4gQWgsIHllcyEgYGRzYV9sb29wYC4uLiBUaGF0J3MgdGhlIG9ubHkgbW9jayBkcml2ZXIgZm9yIERTQSwgcmlnaHQ/IFllcywgdGhhdCdzIGl0LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIEkgbmVlZCB0byBjaGVjayBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCBpbiBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgLiBMZXQncyBzZWUgaG93IHRoaXMgbW9jayBkcml2ZXIgd29ya3MgYW5kIHdoYXQgSSBjYW4gbGVhcm4gYWJvdXQgcmVhY2hpbmcgdGhvc2Uga2V5IHRhZ2dpbmcgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBteSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI4NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTo0Mi41OTU0MzMwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI0LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI0OlxcdFxcbiAxMjU6XFx0c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiAxMjY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuIDEyNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXApXFxuIDEyODpcXHR7XFxuIDEyOTpcXHRcXHRkZXZfZGJnKGRzLVxcdTAwM2VkZXYsIFxcXCIlczogcG9ydDogJWRcXFxcblxcXCIsIF9fZnVuY19fLCBwb3J0KTtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0cmV0dXJuIERTQV9UQUdfUFJPVE9fTk9ORTtcXG4gMTMyOlxcdH1cXG4gMTMzOlxcdFxcbiAxMzQ6XFx0c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIDEzNTpcXHR7XFxuIDEzNjpcXHRcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG4gMTM3OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiAxMzg6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQyLjU5NTU0MTY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjM5NDM2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIERTQSBQcm90b2NvbCBJc3N1ZSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCBpcyByZXR1cm5pbmcgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQncyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuIEZpcnN0LCBJJ2xsIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBoaXN0b3J5IG9mIGBkc2FfbG9vcGAgYW5kIG90aGVyIERTQSBtb2NrIGRyaXZlcnMuIFNlZSBpZiB0aGV5J3JlIHJlbGV2YW50IGFuZCBwcm92aWRlIHNvbWUgaW5zaWdodC4gTmV4dCwgSSBzaG91bGQgdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgdGhlcmUncyAqYW5vdGhlciogd2F5IGEgRFNBIHN3aXRjaCBjb3VsZCBldmVuIGJlIGluc3RhbnRpYXRlZCwgYXNpZGUgZnJvbSB3aGF0IEknbSBjdXJyZW50bHkgbG9va2luZyBhdC4gQXJlIHRoZXJlIGFsdGVybmF0aXZlIHBhdGh3YXlzIHRvIGNvbnNpZGVyPyBQZXJoYXBzIHNvbWV0aGluZyByZWxhdGVkIHRvIGBuZXRkZXZzaW1gIG1pZ2h0IG9mZmVyIGEgY2x1ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5LiBNYXliZSB0aGF0J3Mgd2hlcmUgdGhlIGFuc3dlciBsaWVzLiBJJ2xsIGdvIGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTQ2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTo0NS45MTk0ODc5NjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJicGYuY1wiLFxuICAgIFwiYnVzLmNcIixcbiAgICBcImRldi5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZpYi5jXCIsXG4gICAgXCJoZWFsdGguY1wiLFxuICAgIFwiaHdzdGF0cy5jXCIsXG4gICAgXCJpcHNlYy5jXCIsXG4gICAgXCJtYWNzZWMuY1wiLFxuICAgIFwibmV0ZGV2LmNcIixcbiAgICBcIm5ldGRldnNpbS5oXCIsXG4gICAgXCJwc2FtcGxlLmNcIixcbiAgICBcInBzcC5jXCIsXG4gICAgXCJ0Yy5jXCIsXG4gICAgXCJ1ZHBfdHVubmVscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQ1LjkxOTU4ODE3NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzE4ODg0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBOZXRkZXZzaW0gRFNBIElucXVpcnkqKlxuXG5IbW0sIG5vIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3VwcG9ydCBldmlkZW50IGluIHRoZSBgbmV0ZGV2c2ltYCBjb2RlLiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZywgSSB3YXMgZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgYmFzaWMgZW11bGF0aW9uLiBOb3csIHdoZXJlIHdvdWxkIHRoYXQgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIGhvb2tzIGZvciBpdCwgbGlrZWx5IHJlc2lkZT8gSSBrbm93IHRoZXJlJ3MgYSBkaXN0aW5jdCBkaXJlY3Rvcnkgd2l0aGluIHRoZSBrZXJuZWwgc3BlY2lmaWNhbGx5IGZvciBEU0EgZHJpdmVycy4uLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIFBlcmhhcHMgdGhlcmUncyBhbiBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSBvciBhIHJlbGV2YW50IG1vZHVsZSB0aGVyZSBJIGNhbiBsZXZlcmFnZSwgYWRhcHQsIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgdG8gaW5mb3JtIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQ4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQ4LjYzODQ3NTU3NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJiY21fc2YyLmNcIixcbiAgICBcImJjbV9zZjIuaFwiLFxuICAgIFwiYmNtX3NmMl9jZnAuY1wiLFxuICAgIFwiYmNtX3NmMl9yZWdzLmhcIixcbiAgICBcImRzYV9sb29wLmNcIixcbiAgICBcImtzODk5NS5jXCIsXG4gICAgXCJsYW45MzAzLWNvcmUuY1wiLFxuICAgIFwibGFuOTMwMy5oXCIsXG4gICAgXCJsYW45MzAzX2kyYy5jXCIsXG4gICAgXCJsYW45MzAzX21kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1taW8uY1wiLFxuICAgIFwibXQ3NTMwLmNcIixcbiAgICBcIm10NzUzMC5oXCIsXG4gICAgXCJtdjg4ZTYwNjAuY1wiLFxuICAgIFwibXY4OGU2MDYwLmhcIixcbiAgICBcInJ6bjFfYTVwc3cuY1wiLFxuICAgIFwicnpuMV9hNXBzdy5oXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtY29yZS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtcGxhdGZvcm0uY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LXNwaS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHguaFwiLFxuICAgIFwieXQ5MjF4LmNcIixcbiAgICBcInl0OTIxeC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImI1M1wiLFxuICAgIFwiaGlyc2NobWFublwiLFxuICAgIFwibGFudGlxXCIsXG4gICAgXCJtaWNyb2NoaXBcIixcbiAgICBcIm12ODhlNnh4eFwiLFxuICAgIFwibXhsODYyeHhcIixcbiAgICBcIm5ldGNcIixcbiAgICBcIm9jZWxvdFwiLFxuICAgIFwicWNhXCIsXG4gICAgXCJyZWFsdGVrXCIsXG4gICAgXCJzamExMTA1XCIsXG4gICAgXCJ4cnM3MDB4XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6NDguNjM4NjY4NTE2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDIyNzIzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBEU0EgVGFnIFByb3RvY29sIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgc25hZy4gVGhlIGBkc2FfbG9vcGAgZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGBEU0FfVEFHX1BST1RPX05PTkVgLiBUaGF0J3Mgbm90IHdoYXQgSSB3YXMgZXhwZWN0aW5nLiBJdCBtZWFucyB0aGUgcHJvY2VzcyBpc24ndCB1c2luZyBhbnkgc3BlY2lmaWMgdGFnZ2VyLCBhbmQgdGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlICpkeW5hbWljYWxseSogY2hhbmdlIHRoZSB0YWcgcHJvdG9jb2wgb2YgYSBEU0Egc3dpdGNoPyBJIGtub3cgRFNBIGhhcyB0aGUgZmxleGliaWxpdHk7IEkganVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlIGltcGxlbWVudGF0aW9uLlxuXG5BbHJpZ2h0LCBnb29kLCBJJ3ZlIGdvdCBjb25maXJtYXRpb24gdGhhdCBEU0EgKmRvZXMqIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHRhZyBwcm90b2NvbCBvbiB0aGUgZmx5LiBOb3cgaXQncyBhIG1hdHRlciBvZiBmaW5kaW5nIHRoZSBzcGVjaWZpYyBob29rcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29kZSB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIE15IGZvY3VzIHdpbGwgYmUgb24gYG5ldC9kc2EvZHNhLmNgIGFuZCBgbmV0L2RzYS9zbGF2ZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIGZvciBuZXRsaW5rIG9yIHN5c2ZzIGludGVyYWN0aW9ucywgb3Igd2hlcmUgdGhlIHRhZyBwcm90b2NvbCBpcyBtb2RpZmllZC4gRnJvbSB0aGVyZSwgSSdsbCBiZSBhYmxlIHRvIHdvcmsgdGhyb3VnaCB0aGUgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHRoZSBwb3NzaWJsZSBjb21tYW5kcyBhbmQgc3RhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6NTIuMTgwOTQzNjQ1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE4NDA5OTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYW5nZV90YWdfcHJvdG9jb2xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTYwNj1Td2l0Y2ggY29uZmlndXJhdGlvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTYxNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6NjE2Oi0gYGBjaGFuZ2VfdGFnX3Byb3RvY29sYGA6IHdoZW4gdGhlIGRlZmF1bHQgdGFnZ2luZyBwcm90b2NvbCBoYXMgY29tcGF0aWJpbGl0eVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC02MTctICBwcm9ibGVtcyB3aXRoIHRoZSBjb25kdWl0IG9yIG90aGVyIGlzc3VlcywgdGhlIGRyaXZlciBtYXkgc3VwcG9ydCBjaGFuZ2luZyBpdFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjY0Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIG12ODhlNnh4eF9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY1NTpzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjU2LVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXY4OGU2eHh4X3N3aXRjaF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4OC1cXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzE4OTpcXHQuY2hhbmdlX3RhZ19wcm90b2NvbFxcdD0gbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5MC1cXHQuc2V0dXBcXHRcXHRcXHQ9IG12ODhlNnh4eF9zZXR1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz03MzI9ZmVsaXhfdGFnX3Byb3RvX3NldHVwX3NoYXJlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzo3NTQ6c3RhdGljIGludCBmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzU1LVxcdFxcdFxcdFxcdCAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc1MjpcXHRmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sKGRzLCBmZWxpeC1cXHUwMDNldGFnX3Byb3RvKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0yMzA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZmVsaXhfc3dpdGNoX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwNy1cXHQuZ2V0X3RhZ19wcm90b2NvbFxcdFxcdD0gZmVsaXhfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjMwODpcXHQuY2hhbmdlX3RhZ19wcm90b2NvbFxcdFxcdD0gZmVsaXhfY2hhbmdlX3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwOS1cXHQuY29ubmVjdF90YWdfcHJvdG9jb2xcXHRcXHQ9IGZlbGl4X2Nvbm5lY3RfdGFnX3Byb3RvY29sLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0yMzAzPXN0YXRpYyBpbnQgcnRsODM2NW1iX2NwdV9jb25maWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjIzMzI6c3RhdGljIGludCBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yMzMzLVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2NjctXFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2Njg6XFx0LmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2NjktXFx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmg9ODYwPXN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaC04NjQtXFx0ICogbWFuZGF0b3J5LiBTd2l0Y2hlcyB3aGljaCBjYW4gb3BlcmF0ZSB1c2luZyBtdWx0aXBsZSB0YWdnaW5nXFxuaW5jbHVkZS9uZXQvZHNhLmg6ODY1OlxcdCAqIHByb3RvY29scyBzaG91bGQgaW1wbGVtZW50IEBjaGFuZ2VfdGFnX3Byb3RvY29sIGFuZCByZXBvcnQgaW5cXG5pbmNsdWRlL25ldC9kc2EuaC04NjYtXFx0ICogQGdldF90YWdfcHJvdG9jb2wgdGhlIHRhZ2dlciBpbiBjdXJyZW50IHVzZS5cXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3MC1cXHRcXHRcXHRcXHRcXHRcXHQgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcHJvdCk7XFxuaW5jbHVkZS9uZXQvZHNhLmg6ODcxOlxcdGludFxcdCgqY2hhbmdlX3RhZ19wcm90b2NvbCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3Mi1cXHRcXHRcXHRcXHQgICAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKTtcXG4tLVxcbm5ldC9kc2EvZHNhLmM9NTY5PXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy01NzgtXFx0cnRubF9sb2NrKCk7XFxubmV0L2RzYS9kc2EuYzo1Nzk6XFx0ZXJyID0gZHMtXFx1MDAzZW9wcy1cXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbChkcywgdGFnX29wcy1cXHUwMDNlcHJvdG8pO1xcbm5ldC9kc2EvZHNhLmMtNTgwLVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvZHNhL2RzYS5jPTExNTQ9c3RhdGljIGludCBkc2FfcG9ydF9wYXJzZV9jcHUoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTExNzUtXFx0aWYgKHVzZXJfcHJvdG9jb2wpIHtcXG5uZXQvZHNhL2RzYS5jOjExNzY6XFx0XFx0aWYgKCFkcy1cXHUwMDNlb3BzLVxcdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKSB7XFxubmV0L2RzYS9kc2EuYy0xMTc3LVxcdFxcdFxcdGRldl9lcnIoZHMtXFx1MDAzZWRldiwgXFxcIlRhZyBwcm90b2NvbCBjYW5ub3QgYmUgbW9kaWZpZWRcXFxcblxcXCIpO1xcbi0tXFxubmV0L2RzYS9kc2EuYy0xMjI5LVxcdCAqIGRzYV9zd2l0Y2hfc2V0dXBfdGFnX3Byb3RvY29sIG9uY2UgLnNldHVwIGhhcyBydW4gYW5kIHRoZVxcbm5ldC9kc2EvZHNhLmM6MTIzMDpcXHQgKiBkcml2ZXIgaXMgcmVhZHkgdG8gYWNjZXB0IGNhbGxzIHRvIC5jaGFuZ2VfdGFnX3Byb3RvY29sLiBJZlxcbm5ldC9kc2EvZHNhLmMtMTIzMS1cXHQgKiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGN1c3RvbSBwcm90b2NvbCBhdCB0aGF0XFxuLS1cXG5uZXQvZHNhL3N3aXRjaC5jPTg3Mz1zdGF0aWMgaW50IGRzYV9zd2l0Y2hfY2hhbmdlX3RhZ19wcm90byhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5uZXQvZHNhL3N3aXRjaC5jLTg3OS1cXG5uZXQvZHNhL3N3aXRjaC5jOjg4MDpcXHRpZiAoIWRzLVxcdTAwM2VvcHMtXFx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2wpXFxubmV0L2RzYS9zd2l0Y2guYy04ODEtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2RzYS9zd2l0Y2guYy04ODQtXFxubmV0L2RzYS9zd2l0Y2guYzo4ODU6XFx0ZXJyID0gZHMtXFx1MDAzZW9wcy1cXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbChkcywgdGFnX29wcy1cXHUwMDNlcHJvdG8pO1xcbm5ldC9kc2Evc3dpdGNoLmMtODg2LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjU3LjQ5OTM1OTUxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzUxODU3MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IERTQSBUYWdnZXIgVGVzdGluZyBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgc2VlbXMgYGRzYV9sb29wYCBkb2Vzbid0IHBsYXkgbmljZSB3aXRoIGBjaGFuZ2VfdGFnX3Byb3RvY29sYC4gVGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIEkgbmVlZCB0byB0ZXN0IERTQSB0YWdnZXJzLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCB1c2UgcHJvdG9jb2xzIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAuXG5cblN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sLCBidXQgaXRzIHN0YW5kYXJkIG5ldHdvcmtpbmcgc2V0dXBzIHdpdGggYHR1bmAsIGB0YXBgLCBvciBgdmV0aGAgZG9uJ3QgY3V0IGl0IGhlcmUuIFRoZXNlIHByb3RvY29scyBhcmUgb25seSBpbnZva2VkIHdoZW4gYSBuZXRkZXYgaXMgZGVmaW5lZCBhcyBhIERTQSBtYXN0ZXIgb3Igc2xhdmUuIEFuZCwgYXMgZmFyIGFzIEkga25vdywgYGRzYV9sb29wYCBpcyB0aGUgb25seSBlYXNpbHkgYWNjZXNzaWJsZSBtb2NrIERTQSBzd2l0Y2guIEFuZCBpZiBpdCBjYW4ndCBjaGFuZ2UgdGhlIHRhZyBwcm90b2NvbCwgSSdtIHN0dWNrLCBhbmQgdGhvc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb2YgdGhlc2Ugc3dpdGNoZXMuXG5cbldhaXQgYSBtaW51dGUsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBpbiBTeXprYWxsZXIgZm9yIERTQSBzZXR1cD8gQWgsIG5vLCBJIHdhcyB0aGlua2luZyBvZiBgc3l6X2RzYWAsIHdoaWNoIGRvZXNuJ3QgaGVscC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjaywgYnV0IEkgdGhpbmsgdGhlIGJlc3QgcGF0aCBpcyB0byBsb29rIGZvciBvdGhlciBtb2NrIERTQSBzd2l0Y2hlcywgb3IgaWYgYGRzYV9sb29wYCBoYXMgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkhhbmcgb24uIGBkc2FfbG9vcGAgZGVmYXVsdHMgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIEkgc2hvdWxkIGNoZWNrIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgLiBIbW0sIGl0IHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFNvIGlmIGl0IHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuLi4gdGhhdCBtZWFucyAqbm8qIHRhZ2dlciBpcyBpbiB1c2UuIEFuZCBgZHNhX2xvb3BgIGlzIGp1c3QgYSBtb2NrIGRyaXZlci5cblxuU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBmdW5jdGlvbnMgbGlrZSBgbGFuOTM3eF94bWl0YCBvciBgb2NlbG90X3htaXRgPyBJIHRoaW5rIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggYG5ldC9kc2EvdGFnX2tzei5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMzIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MDQuMjUxMjIwMjY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyNDcxMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjkzN3hfeG1pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL3RhZ19rc3ouYz00MDA9TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fS1NaOTg5MywgS1NaOTg5M19OQU1FKTtcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTQyNi1cXG5uZXQvZHNhL3RhZ19rc3ouYzo0Mjc6c3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvZHNhL3RhZ19rc3ouYy00MjgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz00NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBsYW45Mzd4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy00NjItXFx0LnByb3RvXFx0PSBEU0FfVEFHX1BST1RPX0xBTjkzN1gsXFxubmV0L2RzYS90YWdfa3N6LmM6NDYzOlxcdC54bWl0XFx0PSBsYW45Mzd4X3htaXQsXFxubmV0L2RzYS90YWdfa3N6LmMtNDY0LVxcdC5yY3ZcXHQ9IGtzejk0NzdfcmN2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjowMDowOC45ODM2OTgxNTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxMzI3MTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBEU0EgVGFnZ2VycyoqXG5cbk9rYXksIHRoZXNlIGFyZSBzaG93aW5nIHVwIGFzIERTQSB0YWdnZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFyayB0aGVtIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkncmUgbm90IHJlYWNoYWJsZSwgdGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLiBOb3csIEkgc2VlIGBpYm12ZXRoYC4uLmhtbW0uIFdoYXQncyB0aGUgZGVhbCB3aXRoIHRoYXQ/IEFoLCByaWdodCwgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0LiBJdCdzIHJlbGF0ZWQgdG8gYFBQQ19QU0VSSUVTYC4gR29vZC4gQnV0IHdhaXQsIFN5emthbGxlciBkb2VzIHJ1biBvbiBgcHBjNjRsZWAgd2hpY2ggaXMgUG93ZXJQQyA2NC1iaXQgTGl0dGxlIEVuZGlhbi5cblxuSG9sZCBvbiwgU3l6a2FsbGVyICpoYXMqIGEgYHBwYzY0bGVgIGluc3RhbmNlISBOb3cgd2UncmUgZ2V0dGluZyBzb21ld2hlcmUuIExldCBtZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBTeXprYWxsZXIncyBgcHBjNjRsZWAgaW5zdGFuY2UuIERvZXMgaXQgZW5hYmxlIGBJQk1WRVRIYD8gSSBkb24ndCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IGBJQk1WRVRIYCBpcyBhIHZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgcFNlcmllcy4gSGFuZyBvbi4uLlN5emthbGxlciB1c2VzIFFFTVUgZm9yIGBwcGM2NGxlYCwgYW5kIHRoZSBtYWNoaW5lIHR5cGUgaXMgYHBzZXJpZXNgISBUaGF0IG5haWxzIGl0ISBgSUJNVkVUSGAgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB0aGF0IFFFTVUgc2V0dXAuIFJpZ2h0LCBub3cgbGV0J3MgZGl2ZSBpbnRvIHRoYXQgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MTMuNTk2OTczMTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDYwMDM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYz0xMTg3PXN0YXRpYyBpbnQgaWJtdmV0aF9zZW5kKHN0cnVjdCBpYm12ZXRoX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjE1OnN0YXRpYyBpbnQgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTYtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jPTEyMzI9c3RhdGljIG5ldGRldl90eF90IGlibXZldGhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTI0MTpcXHRpZiAoaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc2tiLCBuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTI0Mi1cXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MTkuNDAyOTgzNjIyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjYxNjAwMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBpYm12ZXRoYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgaXQncyBjaGFuZ2luZyBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgbmV0d29yayBkZXZpY2UncyB0cmFuc21pdCBmdW5jdGlvbiAoYG5kb19zdGFydF94bWl0YCkuIFRoZSBjb2RlJ3MgZGVmaW5pdGVseSByZWFjaGFibGUgc2luY2UgaXQncyB0aGUgdHJhbnNtaXQgcGF0aC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc3dpdGNoaW5nIGZyb20gYGV0aF9oZHIoc2tiKWAgdG8gYHNrYl9ldGhfaGRyKHNrYilgLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U/XG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGZ1bmN0aW9ucy4gYGV0aF9oZHIoc2tiKWAgaXMgZXNzZW50aWFsbHkgYSBtYWNybyB0aGF0IHJldHVybnMgYChzdHJ1Y3QgZXRoaGRyICopc2tiX21hY19oZWFkZXIoc2tiKWAsIHdoZXJlYXMgYHNrYl9ldGhfaGRyKHNrYilgIHJldHVybnMgYChzdHJ1Y3QgZXRoaGRyICopc2tiLVx1MDAzZWRhdGFgLiBJbiB0aGUgY29udGV4dCBvZiBgbmRvX3N0YXJ0X3htaXRgLCBgc2tiLVx1MDAzZWRhdGFgIGNsZWFybHkgcG9pbnRzIHRvIHRoZSBFdGhlcm5ldCBoZWFkZXIuIFRoZSBwcm9ibGVtIEkgc2VlIGlzIHRoYXQgYHNrYl9tYWNfaGVhZGVyKHNrYilgIG1pZ2h0IG5vdCBhbHdheXMgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IGFsbCBwYWNrZXQgZ2VuZXJhdG9ycy4gUGFja2V0IHNvY2tldHMsIEJQRiBwcm9ncmFtcywgb3IgbWF5YmUgZXZlbiBvdGhlciBhcmVhcyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBjb3VsZCBsZWF2ZSBpdCB1bnNldC4gSWYgYHNrYl9tYWNfaGVhZGVyKHNrYilgIGlzbid0IHNldCwgYGV0aF9oZHIoc2tiKWAgY291bGQgYmUgcmVhZGluZyBnYXJiYWdlIG1lbW9yeSwgb3Igd29yc2UsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLlxuXG5TbywgYnkgc3dpdGNoaW5nIHRvIGBza2JfZXRoX2hkcihza2IpYCwgd2UncmUgZ3VhcmFudGVlaW5nIHdlJ3JlIGFsd2F5cyBhY2Nlc3NpbmcgYHNrYi1cdTAwM2VkYXRhYCwgd2hpY2ggY29udGFpbnMgdGhlIEV0aGVybmV0IGhlYWRlciBpbiB0aGlzIGNvbnRleHQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIGBza2JfbWFjX2hlYWRlcmAgaXNuJ3Qgc2V0LCB3aGljaCBjb3VsZCByZXN1bHQgaW4gZHJvcHBlZCBwYWNrZXRzIG9yIGV2ZW4gY3Jhc2hlcy4gVGhlcmVmb3JlLCBpdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSAqZ29vZCogZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbk5vdywgYSBuYWdnaW5nIHRob3VnaHQuIFdoYXQgYWJvdXQgRFNBIHRhZ2dlcnM/IENvdWxkIHRoaXMgcGF0Y2ggYWZmZWN0IHRoZW0/IEFyZSB0aGV5IGV2ZW4gcmVhY2hhYmxlPyBFdmVuIGlmIGBkc2FfbG9vcGAgZG9lc24ndCBsZXQgdXMgY2hhbmdlIHRhZyBwcm90b2NvbHMsIG1heWJlIHRoZXJlJ3MgYW5vdGhlciB3YXkgdG8gdGVzdCB0aGVtLiBDYW4gSSBpbnN0YW50aWF0ZSBhIERTQSB0YWdnZXIgZGlyZWN0bHksIHNvbWVob3c/IE5vLCBEU0EgdGFnZ2VycyBhcmUgcGFydCBvZiB0aGUgRFNBIGNvcmUgdGhhdCBoYW5kbGVzIHRyYW5zbWl0L3JlY2VpdmUgb24gRFNBIG1hc3Rlci9zbGF2ZSBpbnRlcmZhY2VzLCBhbmQgdGhleSBhcmUgY2FsbGVkIGZyb20gdGhlcmUuIElzIHRoZXJlIGEgbW9jayBkcml2ZXIgdG8gdGVzdCB3aXRoPyBPa2F5LCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkgYWdhaW4uXG5cbk1heWJlIHNvbWV0aGluZyBsaWtlIGBiY21fc2YyYCBvciBgbXY4OGU2eHh4YCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhvc2Ugc3dpdGNoZXMsIHdoaWNoIGlzIGEgcHJvYmxlbS4gQnV0LCB3YWl0LCBzeXprYWxsZXIgaGFzIHBhY2tldCBpbmplY3Rpb24uIEJ1dCwgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBwcm9iZWQgZmlyc3QgdG8gbWFrZSBjb2RlIHBhdGhzIHJlYWNoYWJsZS4gT2theSwgbWF5YmUuLi4gc3l6a2FsbGVyICpjYW4qIHVzZSBgZHNhX2xvb3BgLiBDYW4gd2UgY29uZmlndXJlIGBkc2FfbG9vcGAgdG8gdXNlIGBLU1pgIG9yIGBPQ0VMT1RgIHRhZ3M/IE5vLCBpdCBsb29rcyBsaWtlIGBkc2FfbG9vcGAgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4gVWdoLiBXaGF0IGFib3V0IGBuZXRkZXZzaW1gPyBOb3BlLCBubyBEU0Egc3VwcG9ydCBpbiBgbmV0ZGV2c2ltYC5cblxuU28sIHRoZSBEU0EgdGFnZ2VycyBhcmUgcHJvYmFibHkgdW5yZWFjaGFibGUgaW4gbXkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEhvd2V2ZXIsIGBpYm12ZXRoYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBvbiBgcHBjNjRsZWAgUUVNVS4gU2luY2UgYGlibXZldGhgICppcyogcmVhY2hhYmxlLCB0aGUgcGF0Y2ggYXMgYSB3aG9sZSBpcyB3b3J0aCBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMuIEkgc2hvdWxkIGZvY3VzIG9uIGZ1enppbmcgYGlibXZldGhfc3RhcnRfeG1pdGAgYW5kIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDkyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjAwOjI5LjY2NDU4Nzg4N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY2OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIxNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTIxNTpcXHRzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXFxuMTIxNjpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4xMjE3OlxcdHtcXG4xMjE4OlxcdFxcdHN0cnVjdCBldGhoZHIgKmV0aGVyX2hlYWRlcjtcXG4xMjE5OlxcdFxcdGludCByZXQgPSAwO1xcbjEyMjA6XFx0XFxuMTIyMTpcXHRcXHRldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpO1xcbjEyMjI6XFx0XFxuMTIyMzpcXHRcXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXFx1MDAzZWhfZGVzdCwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcikpIHtcXG4xMjI0OlxcdFxcdFxcdG5ldGRldl9kYmcobmV0ZGV2LCBcXFwidmV0aCBkb2Vzbid0IHN1cHBvcnQgbG9vcGJhY2sgcGFja2V0cywgZHJvcHBpbmcgcGFja2V0LlxcXFxuXFxcIik7XFxuMTIyNTpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcXG4xMjI2OlxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbjEyMjc6XFx0XFx0fVxcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRyZXR1cm4gcmV0O1xcbjEyMzA6XFx0fVxcbjEyMzE6XFx0XFxuMTIzMjpcXHRzdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuMTIzMzpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbjEyMzQ6XFx0e1xcbjEyMzU6XFx0XFx0c3RydWN0IGlibXZldGhfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMTIzNjpcXHRcXHR1bnNpZ25lZCBpbnQgZGVzY19mbGFncywgdG90YWxfYnl0ZXM7XFxuMTIzNzpcXHRcXHR1bmlvbiBpYm12ZXRoX2J1Zl9kZXNjIGRlc2M7XFxuMTIzODpcXHRcXHRpbnQgaSwgcXVldWVfbnVtID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuMTIzOTpcXHRcXHR1bnNpZ25lZCBsb25nIG1zcyA9IDA7XFxuMTI0MDpcXHRcXG4xMjQxOlxcdFxcdGlmIChpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZChza2IsIG5ldGRldikpXFxuMTI0MjpcXHRcXHRcXHRnb3RvIG91dDtcXG4xMjQzOlxcdFxcdC8qIHZldGggY2FuJ3QgY2hlY2tzdW0gb2ZmbG9hZCBVRFAgKi9cXG4xMjQ0OlxcdFxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjAwOjI5LjY2NjU2MDcwN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDg5NDE1Mjc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgaWJtdmV0aGAgYW5kIERTQSBUYWdnZXJzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGFuYWx5emluZyB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIGl0LiBUaGUgbWFpbiBjaGFuZ2UgZm9jdXNlcyBvbiBzd2l0Y2hpbmcgZnJvbSBgZXRoX2hkcihza2IpYCB0byBgc2tiX2V0aF9oZHIoc2tiKWAgaW4gdGhlIHRyYW5zbWl0IHBhdGggb2YgYGlibXZldGhgIGFuZCBhIGNvdXBsZSBvZiBEU0EgdGFnZ2Vycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMgb3IgbG9naWNhbCBlcnJvcnMgd2l0aCBwb3RlbnRpYWxseSBtYWxmb3JtZWQgcGFja2V0cy5cblxuRmlyc3QsIHRoZSBjb3JlIG1vZGlmaWVkIGZ1bmN0aW9uIGluIGBpYm12ZXRoYCBpcyBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgLiBJdCdzIHN0YXRpYywgc28gaXQgKnNlZW1zKiBsaWtlIHRoZSBsb2dpY2FsIGNob2ljZSBmb3IgYEZvY3VzU3ltYm9sc2AuIFRoZW4gSSB0aG91Z2h0LCB3YWl0LCB0aGUgYGlibXZldGhfc3RhcnRfeG1pdGAgZnVuY3Rpb24gaXMgYWxzbyBtb2RpZmllZC4gSXQncyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiwgdGhlIGRyaXZlcidzIGhvdC1wYXRoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBpcyAqZHJpdmVyKi1zcGVjaWZpYyB0aG91Z2gsIHNvIGxpc3RpbmcgaXQgKmNvdWxkKiBiZSBva2F5LiBVbHRpbWF0ZWx5LCBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgIGlzIHRoZSBtb3JlIHRhcmdldGVkLCBncmFudWxhciBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBwYWNrZXQgdHJhbnNtaXR0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgY29uY2VudHJhdGluZyB0aGUgZnV6emVyJ3MgZWZmb3J0cyBvbiB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCwgYW5kIGl0IHdpbGwgZW5zdXJlIHRoYXQgdGhlIGZ1enplciBoaXRzIHRoaXMgYXJlYSBvZiB0aGUgZHJpdmVyLlxuXG5OZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGUgRFNBIHRhZ2dlcnMgYXJlIGV2ZW4gcmVhY2hhYmxlLiBJIGNoZWNrZWQgdGhlIEtjb25maWcgb3B0aW9ucywgYW5kIGJvdGggYE5FVF9EU0FfVEFHX0tTWmAgYW5kIGBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFgIGFyZSBhdmFpbGFibGUgdG8gYmUgZW5hYmxlZC4gSSBydWxlZCBvdXQgZGlyZWN0IHVzZXIgY3JlYXRpb24gdmlhIG5ldGxpbmssIG9yIGJ5IGNyZWF0aW5nIGEgc3dpdGNoIHdpdGggc3l6a2FsbGVyLCBidXQgZXZlbiB3aXRob3V0IGRpcmVjdCBhY2Nlc3MgdG8gY3JlYXRlIHRoZXNlIHRhZ2dlcnMsIGBpYm12ZXRoYCBpdHNlbGYgaXMgcmVhY2hhYmxlLiBTbyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBJQk1WRVRIYCBkZXBlbmRzIG9uIGBQUENfUFNFUklFU2AuIFNvIEknbGwgZGVmaW5pdGVseSBlbmFibGUgYElCTVZFVEhgIGluIGBFbmFibGVDb25maWdzYC4gSnVzdCB0byBiZSBzYWZlIGFuZCBlbnN1cmUgdGhlIG1heGltdW0gY292ZXJhZ2UsIEknbGwgYWxzbyBlbmFibGUgYE5FVF9EU0FfVEFHX0tTWmAgYW5kIGBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFgLlxuXG5CYWNrIHRvIHRoZSBjb2RlOiBJIHZlcmlmaWVkIHRoYXQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIGBpYm12ZXRoYCBkcml2ZXIgd2VyZSBvbmx5IGluIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuIFRoZW4sIEkgaWRlbnRpZmllZCBgbGFuOTM3eF94bWl0YCBhbmQgYG9jZWxvdF94bWl0YCBhcyB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIHdpdGhpbiB0aGUgRFNBIHRhZ2dlciBzb3VyY2UgZmlsZXMuIFNpbmNlIHRoZXNlIGFyZSBhbHNvIGhvdC1wYXRoIGZ1bmN0aW9ucyAqZm9yIHRob3NlIHNwZWNpZmljIHRhZ2dlcnMqLCBsaXN0aW5nIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AgaXMganVzdGlmaWVkLlxuXG5TbywgaGVyZSdzIHdoYXQgSSdsbCBkbzogSSdsbCBmb2N1cyB0aGUgZnV6emVyIG9uIHRoZXNlIGtleSBzeW1ib2xzOlxuXG4qICAgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYFxuKiAgIGBsYW45Mzd4X3htaXRgXG4qICAgYG9jZWxvdF94bWl0YFxuXG5JIHJldmlld2VkIHRoZSBwYXRjaCBsb2dpYyBhbmQgY29uZmlybWVkIHRoYXQgcmVwbGFjaW5nIGBldGhfaGRyKHNrYilgIHdpdGggYHNrYl9ldGhfaGRyKHNrYilgIGlzIHRoZSBjb3JlIGNoYW5nZSwgd2hpY2ggc2hvdWxkIGltcHJvdmUgdGhlIHNhZmV0eSBhbmQgcm9idXN0bmVzcyBvZiBwYWNrZXQgdHJhbnNtaXNzaW9uLiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSBjb3JyZWN0bHkgZGVmaW5lZCBpbiB0aGUgaW5jbHVkZXMuXG5cbkkgZG91YmxlLWNoZWNrZWQgdGhlIEtjb25maWcgc3ltYm9scyBhbmQgdGhlIGRyaXZlciBuYW1lLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAzNiwiT3V0cHV0VG9rZW5zIjoyMjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6NDQuNTYwNzE2N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODMzNjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJQk1WRVRIXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkXCIsXG4gICAgXCJsYW45Mzd4X3htaXRcIixcbiAgICBcIm9jZWxvdF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgZXRoX2hkcihza2IpIHdpdGggc2tiX2V0aF9oZHIoc2tiKSBpbiB0aGUgVFggcGF0aCBvZiBpYm12ZXRoIGFuZCB0d28gRFNBIHRhZ2dlcnMuIGV0aF9oZHIoc2tiKSByZWxpZXMgb24gc2tiX21hY19oZWFkZXIoc2tiKSBiZWluZyBzZXQgY29ycmVjdGx5LCB3aGljaCBtaWdodCBub3QgYmUgdHJ1ZSBmb3IgcGFja2V0cyBpbmplY3RlZCB2aWEgcGFja2V0IHNvY2tldHMgb3IgQlBGLiBza2JfZXRoX2hkcihza2IpIHNhZmVseSB1c2VzIHNrYi1cXHUwMDNlZGF0YSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBsb2dpY2FsIGJ1Z3Mgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cy4gVGhlIGlibXZldGggZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiBRRU1VIHBzZXJpZXMgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZFVEhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIixcbiAgICBcImxhbjkzN3hfeG1pdFwiLFxuICAgIFwib2NlbG90X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVxcdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 01:31:01 +0000 UTC FinishedAt: 2026-07-14 02:00:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVETH", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_OCELOT_8021Q" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IBMVETH", "NET_DSA_TAG_KSZ", "NET_DSA_TAG_OCELOT_8021Q" ], "series_id": "a007da43-09fe-4f5c-80d4-698b64fd53e2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ibmveth_is_packet_unsupported", "lan937x_xmit", "ocelot_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZFVEgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfeG1pdCYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE3Y2Q4YjM0ZmNkODg5YjQ1YzU1MGFjNDU0ZDZhZjQwNGMzMjkwMzVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwMTo1ODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY1xuQEAgLTEyMTgsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpO1xuIFxuIFx0aWYgKGV0aGVyX2FkZHJfZXF1YWwoZXRoZXJfaGVhZGVyLVx1MDAzZWhfZGVzdCwgbmV0ZGV2LVx1MDAzZWRldl9hZGRyKSkge1xuIFx0XHRuZXRkZXZfZGJnKG5ldGRldiwgXCYjMzQ7dmV0aCBkb2VzbiYjMzk7dCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXG5cJiMzNDspO1xuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX2tzei5jIGIvbmV0L2RzYS90YWdfa3N6LmNcbmluZGV4IDY3ZmE4OWYxMDJlMDcwLi40Zjc0MzM2YWUzOTY4YSAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX2tzei5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19rc3ouY1xuQEAgLTQzMCw3ICYjNDM7NDMwLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHR1OCBwcmlvID0gbmV0ZGV2X3R4cV90b190YyhkZXYsIHF1ZXVlX21hcHBpbmcpO1xuIFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcbi1cdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBza2JfZXRoX2hkcihza2IpO1xuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbmluZGV4IGY1MGYxY2Q4M2YxNjFjLi40NTE0MDI2ODk3ZDFhNyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuQEAgLTcxLDcgJiM0Mzs3MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqb2NlbG90X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XG4gXHR1OCBwY3AgPSBuZXRkZXZfdHhxX3RvX3RjKG5ldGRldiwgcXVldWVfbWFwcGluZyk7XG4gXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XG4tXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XG4mIzQzO1x0c3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcbiBcbiBcdGlmIChvY2Vsb3RfcHRwX3Jld19vcChza2IpIHx8IGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihoZHItXHUwMDNlaF9kZXN0KSlcbiBcdFx0cmV0dXJuIG9jZWxvdF9kZWZlcl94bWl0KGRwLCBza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lCTVZFVEgmIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfS1NaJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDssCiAgICAmIzM0O2xhbjkzN3hfeG1pdCYjMzQ7LAogICAgJiMzNDtvY2Vsb3RfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTdjZDhiMzRmY2Q4ODliNDVjNTUwYWM0NTRkNmFmNDA0YzMyOTAzNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMKaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMKQEAgLTEyMTgsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsCiAJc3RydWN0IGV0aGhkciAqZXRoZXJfaGVhZGVyOwogCWludCByZXQgPSAwOwogCi0JZXRoZXJfaGVhZGVyID0gZXRoX2hkcihza2IpOwomIzQzOwlldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpOwogCiAJaWYgKGV0aGVyX2FkZHJfZXF1YWwoZXRoZXJfaGVhZGVyLSZndDtoX2Rlc3QsIG5ldGRldi0mZ3Q7ZGV2X2FkZHIpKSB7CiAJCW5ldGRldl9kYmcobmV0ZGV2LCAmIzM0O3ZldGggZG9lc24mIzM5O3Qgc3VwcG9ydCBsb29wYmFjayBwYWNrZXRzLCBkcm9wcGluZyBwYWNrZXQuXG4mIzM0Oyk7CmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jCmluZGV4IDY3ZmE4OWYxMDJlMDcwLi40Zjc0MzM2YWUzOTY4YSAxMDA2NDQKLS0tIGEvbmV0L2RzYS90YWdfa3N6LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2RzYS90YWdfa3N6LmMKQEAgLTQzMCw3ICYjNDM7NDMwLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl1MTYgcXVldWVfbWFwcGluZyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpOwogCXU4IHByaW8gPSBuZXRkZXZfdHhxX3RvX3RjKGRldiwgcXVldWVfbWFwcGluZyk7CiAJc3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTsKLQljb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7CiYjNDM7CWNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7CiAJX19iZTE2ICp0YWc7CiAJdTE2IHZhbDsKIApkaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYwppbmRleCBmNTBmMWNkODNmMTYxYy4uNDUxNDAyNjg5N2QxYTcgMTAwNjQ0Ci0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jCkBAIC03MSw3ICYjNDM7NzEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJdTE2IHF1ZXVlX21hcHBpbmcgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTsKIAl1OCBwY3AgPSBuZXRkZXZfdHhxX3RvX3RjKG5ldGRldiwgcXVldWVfbWFwcGluZyk7CiAJdTE2IHR4X3ZpZCA9IGRzYV90YWdfODAyMXFfc3RhbmRhbG9uZV92aWQoZHApOwotCXN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTsKJiM0MzsJc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTsKIAogCWlmIChvY2Vsb3RfcHRwX3Jld19vcChza2IpIHx8IGlzX2xpbmtfbG9jYWxfZXRoZXJfYWRkcihoZHItJmd0O2hfZGVzdCkpCiAJCXJldHVybiBvY2Vsb3RfZGVmZXJfeG1pdChkcCwgc2tiKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ1OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lIOKAkyBpdCYjMzk7cyByZXBsYWNpbmcgaW5zdGFuY2VzIG9mIGBldGhfaGRyKHNrYilgIHdpdGggYHNrYl9ldGhfaGRyKHNrYilgIGluIGEgZmV3IHNwZWNpZmljIGRyaXZlciBmaWxlczogYGlibXZldGguY2AsIGB0YWdfa3N6LmNgLCBhbmQgYHRhZ19vY2Vsb3RfODAycS5jYC4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGZ1bmN0aW9uYWwgZGlmZmVyZW5jZSBpcywgaWYgYW55LiBJIG1lYW4sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhlYWRlciBhY2Nlc3MgaGVyZSwgc28gdGhlcmUmIzM5O3MgYm91bmQgdG8gYmUgYSByZWFzb24uIExldCYjMzk7cyBkZWx2ZSBpbi4KCkZpcnN0LCBJJiMzOTtsbCByZWZyZXNoIG15IG1lbW9yeS4gYGV0aF9oZHJgIGlzIGRlZmluZWQgYXMgc2ltcGx5IGNhc3RpbmcgdGhlIHJlc3VsdCBvZiBgc2tiX21hY19oZWFkZXIoc2tiKWAgdG8gYSBgc3RydWN0IGV0aGhkciAqYC4gVGhhdCYjMzk7cyBiYXNpYyBlbm91Z2guIE5vdywgSSYjMzk7bSBmYWlybHkgY2VydGFpbiBgc2tiX2V0aF9oZHJgIHdpbGwgZG8gc29tZXRoaW5nIHZlcnkgc2ltaWxhciwgcGVyaGFwcyBpbmNvcnBvcmF0aW5nIHNvbWUgYWRkaXRpb25hbCBsYXllciBvZiBhYnN0cmFjdGlvbiBvciBtYXliZSBqdXN0IG9mZmVyaW5nIGEgbW9yZSBzdGFuZGFyZGl6ZWQgYWNjZXNzIG1lY2hhbmlzbSB3aXRoaW4gdGhlIFNLQiBmcmFtZXdvcmsuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyBhIGRpcmVjdCBlcXVpdmFsZW50LCBvciBpZiB0aGVyZSYjMzk7cyBzdWJ0bGUgYmVoYXZpb3IgdGhhdCB3YXJyYW50cyB0aGlzIGNoYW5nZS4gVG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBmaXJlIHVwIGEgYGdyZXBgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgdXNhZ2Ugb3IgZGVmaW5pdGlvbiBvZiBgc2tiX2V0aF9oZHJgIGluIHRoZSBjb2RlYmFzZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBpbnRlbmRlZCBwdXJwb3NlIGFuZCBwcm92aWRlIHNvbWUgaW5zaWdodCBpbnRvIHdoeSB0aGV5JiMzOTtyZSBtb3ZpbmcgYXdheSBmcm9tIHRoZSBtb3JlIGRpcmVjdCBhY2Nlc3Mgd2l0aCBgZXRoX2hkcmAuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSB0dXJuIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NrYl9ldGhfaGRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIxNT1zdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjIxOlx0ZXRoZXJfaGVhZGVyID0gc2tiX2V0aF9oZHIoc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTIyMi1cbi0tXG5kcml2ZXJzL25ldC9nZW5ldmUuYz0xMzI0PXN0YXRpYyBpbnQgZ2VuZXZlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZ2VuZXZlLmMtMTQxNC1cdFx0fSBlbHNlIGlmIChnZW5ldmUtXHUwMDNlY2ZnLmRmID09IEdFTkVWRV9ERl9JTkhFUklUKSB7XG5kcml2ZXJzL25ldC9nZW5ldmUuYzoxNDE1Olx0XHRcdHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XG5kcml2ZXJzL25ldC9nZW5ldmUuYy0xNDE2LVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTYzMD1zdGF0aWMgaW50IGlwdmxhbl94bWl0X21vZGVfbDIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzItXHRjb25zdCBzdHJ1Y3QgaXB2bF9kZXYgKmlwdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzo2MzM6XHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtNjM0LVx0c3RydWN0IGlwdmxfYWRkciAqYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9tYWNzZWMuYz01OTc9c3RhdGljIHN0cnVjdCBza19idWZmICptYWNzZWNfZW5jcnlwdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L21hY3NlYy5jLTY0OC1cdHVucHJvdGVjdGVkX2xlbiA9IHNrYi1cdTAwM2VsZW47XG5kcml2ZXJzL25ldC9tYWNzZWMuYzo2NDk6XHRldGggPSBza2JfZXRoX2hkcihza2IpO1xuZHJpdmVycy9uZXQvbWFjc2VjLmMtNjUwLVx0c2NpX3ByZXNlbnQgPSBtYWNzZWNfc2VuZF9zY2koc2VjeSk7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTU0NT1zdGF0aWMgaW50IG1hY3ZsYW5fcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy01NTEtXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9CUklER0UpIHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo1NTI6XHRcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtNTUzLVxuLS1cbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaD0yNT1zdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmgtMzItICovXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmg6MzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9saW51eC9pZl9ldGhlci5oLTM0LXtcbi0tXG5uZXQvZHNhL3RhZ19rc3ouYz0xMjU9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvZHNhL3RhZ19rc3ouYy0xMzYtXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XG5uZXQvZHNhL3RhZ19rc3ouYzoxMzc6XHRoZHIgPSBza2JfZXRoX2hkcihza2IpO1xubmV0L2RzYS90YWdfa3N6LmMtMTM4LVxuLS1cbm5ldC9kc2EvdGFnX2tzei5jPTI4Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk0NzdfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTMwNS1cdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1o5NDc3X0lOR1JFU1NfVEFHX0xFTik7XG5uZXQvZHNhL3RhZ19rc3ouYzozMDY6XHRoZHIgPSBza2JfZXRoX2hkcihza2IpO1xubmV0L2RzYS90YWdfa3N6LmMtMzA3LVxuLS1cbm5ldC9kc2EvdGFnX2tzei5jPTM2MD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmtzejk4OTNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTM3Ny1cdHRhZyA9IHNrYl9wdXQoc2tiLCBLU1pfSU5HUkVTU19UQUdfTEVOKTtcbm5ldC9kc2EvdGFnX2tzei5jOjM3ODpcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19rc3ouYy0zNzktXG4tLVxubmV0L2RzYS90YWdfa3N6LmM9NDI3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2RzYS90YWdfa3N6LmMtNDMyLVx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcbm5ldC9kc2EvdGFnX2tzei5jOjQzMzpcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19rc3ouYy00MzQtXHRfX2JlMTYgKnRhZztcbi0tXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYz02Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmMtNzMtXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYzo3NDpcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjoKCioqQ2hlY2tpbmcgdGhlIEV0aGVybmV0IEhlYWRlciBEZWZpbml0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCB0aGVzZSBFdGhlcm5ldCBoZWFkZXJzLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBkZWZpbml0aXZlIGRlZmluaXRpb24uIEkmIzM5O2xsIG9wZW4gdXAgYGluY2x1ZGUvbGludXgvaWZfZXRoZXIuaGAuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGBza2JfZXRoX2hkcmAgaXMgdXNlZCBhbmQgd2hhdCBpdCYjMzk7cyByZWFsbHkgZG9pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgYSBtYWNybyBvciBmdW5jdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBFdGhlcm5ldCBoZWFkZXIgd2l0aGluIGEgc29ja2V0IGJ1ZmZlciAoYHNrYmApLCBidXQgSSB3YW50IHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBhY3R1YWwgZGVjbGFyYXRpb24gYW5kIGFzc29jaWF0ZWQgY29tbWVudHMgcmV2ZWFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb3JlIGluZm9ybWF0aW9uIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvaWZfZXRoZXIuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjU6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMjY6XHR7XG4gIDI3Olx0XHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpO1xuICAyODpcdH1cbiAgMjk6XHRcbiAgMzA6XHQvKiBQcmVmZXIgdGhpcyB2ZXJzaW9uIGluIFRYIHBhdGgsIGluc3RlYWQgb2ZcbiAgMzE6XHQgKiBza2JfcmVzZXRfbWFjX2hlYWRlcigpICYjNDM7IGV0aF9oZHIoKVxuICAzMjpcdCAqL1xuICAzMzpcdHN0YXRpYyBpbmxpbmUgc3RydWN0IGV0aGhkciAqc2tiX2V0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgMzQ6XHR7XG4gIDM1Olx0XHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2ItXHUwMDNlZGF0YTtcbiAgMzY6XHR9XG4gIDM3Olx0XG4gIDM4Olx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICppbm5lcl9ldGhfaGRyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4gIDM5Olx0e1xuICA0MDpcdFx0cmV0dXJuIChzdHJ1Y3QgZXRoaGRyICopc2tiX2lubmVyX21hY19oZWFkZXIoc2tiKTtcbiAgNDE6XHR9XG4gIDQyOlx0XG4gIDQzOlx0aW50IGV0aF9oZWFkZXJfcGFyc2UoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAgNDQ6XHRcdFx0ICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyOAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV0aGVybmV0IEhlYWRlciBBY2Nlc3MgaW4gdGhlIE5ldHdvcmsgU3RhY2sqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSYjMzk7cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIHJlbGF0ZWQgdG8gaG93IHRoZSBFdGhlcm5ldCBoZWFkZXIgaXMgYWNjZXNzZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBrZXkgZGlmZmVyZW5jZSBJJiMzOTttIHNlZWluZyBpcyBiZXR3ZWVuIGBza2JfZXRoX2hkcihza2IpYCB3aGljaCBkaXJlY3RseSBhY2Nlc3NlcyBgc2tiLSZndDtkYXRhYCwgYW5kIGBldGhfaGRyKHNrYilgIHdoaWNoIHVzZXMgYHNrYl9tYWNfaGVhZGVyKHNrYilgLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpbiB0aGUgVFggcGF0aCwgYHNrYi0mZ3Q7ZGF0YWAgbWlnaHQgYWxyZWFkeSBwb2ludCB0byB0aGUgRXRoZXJuZXQgaGVhZGVyLCBidXQgYHNrYl9tYWNfaGVhZGVyKHNrYilgIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZCB5ZXQuIFNvLCB1c2luZyBgZXRoX2hkcihza2IpYCBpcyBwcm9iYWJseSB0aGUgYmV0dGVyIG9wdGlvbiBoZXJlLCBwcmV2ZW50aW5nIGJ1Z3Mgd2hlcmUgYHNrYl9tYWNfaGVhZGVyYCBpcyB1bnNldC4KCk5vdywgbGV0JiMzOTtzIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgYXJlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY2AsIGBuZXQvZHNhL3RhZ19rc3ouY2AsIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBJJiMzOTttIGZhbWlsaWFyIHdpdGggdGhlc2UuIGBpYm12ZXRoYCBpcyB0aGUgSUJNIFBvd2VyIFZpcnR1YWwgRXRoZXJuZXQgZGV2aWNlIGRyaXZlci4gYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYXJlIGJvdGggRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB0YWdnZXJzLCBzcGVjaWZpY2FsbHkgZm9yIE1pY3JlbCBLU1ogc3dpdGNoZXMgYW5kIE9jZWxvdCBzd2l0Y2hlcyByZXNwZWN0aXZlbHkuCgpUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgaG93IGVhc2lseSBjYW4gSSB0ZXN0IHRoZXNlIGNoYW5nZXMsIGVzcGVjaWFsbHkgaW4gYSB2aXJ0dWFsaXplZCBvciBjb250cm9sbGVkIGVudmlyb25tZW50PyBTaW5jZSBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYCBhcmUgRFNBIHRhZ2dlcnMsIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgRFNBIHRlc3RpbmcgdGVjaG5pcXVlcy4gSSBjb3VsZCB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIHZpcnR1YWwgZHJpdmVycy4gQnV0IHdhaXQsIEkgcmVjYWxsIHRoYXQgYGRzYV9sb29wYCB1c2VzIGl0cyBvd24gZGVkaWNhdGVkIHRhZ2dlciwgbm90IGBrc3pgIG9yIGBvY2Vsb3RgLCBzbyB0aGF0JiMzOTtzIG5vdCBkaXJlY3RseSBoZWxwZnVsLiBTdGlsbCwgSSBtaWdodCBiZSBhYmxlIHRvIHRlc3QgdGhlbSBieSBjcmVhdGluZyBhIGR1bW15IERTQSBzd2l0Y2gsIG9yIG1heWJlIGV2ZW4gaW5qZWN0IHBhY2tldHMgdXNpbmcgc3l6a2FsbGVyLgoKQWN0dWFsbHksIGRvZXNuJiMzOTt0IHN5emthbGxlciBoYW5kbGUgRFNBIHRlc3RpbmcgdXNpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGlmIGEgY29ycmVzcG9uZGluZyBkcml2ZXIgaXMgYXZhaWxhYmxlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhIGBzeXpfZHNhX3NldHVwYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLi4uIE5vLCB3YWl0LCBzeXprYWxsZXIgbW9zdGx5IGZvY3VzZXMgb24gZ2VuZXJhbCBuZXR3b3JrIGRldmljZSB0ZXN0aW5nLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW5hYmxlIGBORVRfRFNBX1RBR19LU1pgIGFuZCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGVzZSBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX1RBR19LU1omIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2RzYS9LY29uZmlnPTExND1jb25maWcgTkVUX0RTQV9UQUdfTVhMX0dTVzFYWFxuLS1cbm5ldC9kc2EvS2NvbmZpZy0xMjEtXG5uZXQvZHNhL0tjb25maWc6MTIyOmNvbmZpZyBORVRfRFNBX1RBR19LU1pcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXHR0cmlzdGF0ZSBcJiMzNDtUYWcgZHJpdmVyIGZvciBNaWNyb2NoaXAgODc5NS85Mzd4Lzk0NzcvOTg5MyBmYW1pbGllcyBvZiBzd2l0Y2hlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgVGFnKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGNvbnNpZGVyIGl0cyBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBPY2Vsb3Qgc3dpdGNoLiBUaGlzIHRhZyBsaWtlbHkgZGVhbHMgd2l0aCA4MDIuMVEgVkxBTiB0YWdnaW5nLCBidXQgdGhlIHNwZWNpZmljcyBhcmUgd2hhdCBJIG5lZWQgdG8gdW5wYWNrIGhlcmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdCYjMzk7cyBpbnRlbmRlZCBmb3IgT2NlbG90IHNwZWNpZmljYWxseTsgdGhlIHRhZyBuYW1lIHN1Z2dlc3RzIGl0IGJ1dCBjb25maXJtYXRpb24gaXMgYWx3YXlzIGNydWNpYWwuCgpNeSBuZXh0IGxpbmUgb2YgdGhpbmtpbmcgd2lsbCBleHBsb3JlIGhvdyB0aGlzIHRhZyBpcyB1c2VkIHRvIG1hcCA4MDIuMVEgVkxBTiBpbmZvcm1hdGlvbiB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gSXMgdGhpcyBhIHNpbXBsZSB0cmFuc2xhdGlvbiBsYXllciBvciBkb2VzIGl0IGVuY29kZSBtb3JlIGNvbXBsZXggVkxBTiBtYW5pcHVsYXRpb24gcnVsZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgdGFnIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGluZ3MgbGlrZSBWTEFOIElEIGluc2VydGlvbiwgc3RyaXBwaW5nLCBwcmlvcml0eSB0YWdnaW5nLCBvciBwZXJoYXBzIGV2ZW4gbW9yZSBhZHZhbmNlZCBmZWF0dXJlcyB3aXRoaW4gdGhlIE9jZWxvdCBBU0lDLgoKSSYjMzk7bGwgYWxzbyBiZSBjb25zaWRlcmluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBEU0EgdGFncy4gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCB0aGUgRFNBIGZyYW1lIGZvcm1hdCBhbmQgZXhpc3RpbmcgRFNBIG1lY2hhbmlzbXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgdGFncz8gQXJlIHRoZXJlIGFueSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBtYWRlIGJ5IHRoZSB0YWc/CgpJZiBJIGNhbiwgSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb2RlOiBkZXZpY2UgZHJpdmVycywgRFNBIGNvcmUgZnVuY3Rpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgaGVhZGVycyBvciBpbmNsdWRlIGZpbGVzIGZvciByZWxhdGVkIHN0cnVjdHVyZXMgb3IgZGF0YSB0eXBlcyB0byBjb25maXJtIG15IHRob3VnaHRzLiBBbHNvIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGlmIGFueSBleGlzdC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgcGllY2UgdG9nZXRoZXIgdGhlIGZsb3cgb2YgaG93IHRoaXMgdGFnIGlzIGFwcGxpZWQgdG8gYSBmcmFtZSBhbmQgaG93IGl0IGFmZmVjdHMgdGhlIHN3aXRjaGluZyBkZWNpc2lvbnMgb2YgdGhlIE9jZWxvdC4gVGhpcyB0YWcmIzM5O3MgcHVycG9zZSBuZWVkcyB0byBiZSBjb21wbGV0ZWx5IGNsZWFyLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGl0IGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LCBhbmQgaXMgbm90IGluIGNvbmZsaWN0IHdpdGggYW55IG90aGVyIGZlYXR1cmUsIG9yIHRoZSBEU0Egd2lsbCBicmVhay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvZHNhL0tjb25maWc9MTM4PWNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1Rcbi0tXG5uZXQvZHNhL0tjb25maWctMTQ4LVxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXG5uZXQvZHNhL0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7VGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjI1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgYW5kIHJlbmRlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogVmVyaWZ5aW5nIGBpYm12ZXRoYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBpbXB1bHNlLCBhcyBhbHdheXMgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgZXhhbWluaW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGlzIHRvIHN0YXJ0IHdpdGggdGhlIGVzc2VudGlhbHMuIExldCYjMzk7cyBzZWUuLi4gdGhlIGZhY3QgdGhhdCBgaWJtdmV0aGAgaXMgbWVudGlvbmVkIGxpa2VseSBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElCTSB2aXJ0dWFsaXphdGlvbiwgcHJvYmFibHkgc29tZSBmb3JtIG9mIHZpcnR1YWwgRXRoZXJuZXQgY29uZmlndXJhdGlvbi4gQmVmb3JlIGdldHRpbmcgbG9zdCBpbiB0aGUgd2VlZHMgb2Ygc3BlY2lmaWMgY29tbWFuZHMgb3IgZGVlcGVyIGxvZ3MsIG15IGd1dCBpbnN0aW5jdCBpcyB0byBlc3RhYmxpc2ggdGhlIGJhc2ljcy4gTGV0JiMzOTtzIGNoZWNrIGBpYm12ZXRoYC4gVGhpcyBjb3VsZCBtZWFuIHZlcmlmeWluZyBpdHMgcHJlc2VuY2UsIGl0cyBjdXJyZW50IHN0YXR1cyAodXAvZG93biwgY29uZmlndXJlZC91bmNvbmZpZ3VyZWQpLCBvciBtYXliZSBldmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgdmlydHVhbCBuZXR3b3JraW5nIGVsZW1lbnRzLiBFc3NlbnRpYWxseSwgbGV0JiMzOTtzIGVzdGFibGlzaCBhIGJhc2VsaW5lIG9mIHdoYXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIHVzIGFib3V0IHRoaXMgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIHRoZW4gd2UgY2FuIGRldGVybWluZSBpZiBzb21ldGhpbmcgbmVlZHMgYXR0ZW50aW9uIG9yIGlmIHRoaXMgY29uZmlndXJhdGlvbiBhbGlnbnMgd2l0aCB3aGF0IGlzIGV4cGVjdGVkLiBUaGlzIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSUJNVkVUSCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0lCTVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZzoyMDpjb25maWcgSUJNVkVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtJQk0gTEFOIFZpcnR1YWwgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6MzA6Y29uZmlnIElCTVZFVEhfS1VOSVRfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMzEtXHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA0NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFN5c3RlbSBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYElCTVZFVEhgIGlzIHN1cHBvcnRlZCBvbiB4ODYgb3IgYXJtNjQgYXJjaGl0ZWN0dXJlcy4gVGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGlzIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSBldGhlcm5ldCBkcml2ZXIgc3RydWN0dXJlLiBUaGF0IHdvdWxkIGJlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZ2AuIExldCYjMzk7cyBuYXZpZ2F0ZSB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0IHNob3VsZCBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhhdCBzcGVjaWZpYyBkcml2ZXIgYW5kIGl0JiMzOTtzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbnN3ZXIgd2lsbCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTg6XHRpZiBORVRfVkVORE9SX0lCTVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBJQk1WRVRIXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtJQk0gTEFOIFZpcnR1YWwgRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBQUENfUFNFUklFU1xuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGV0aGVybmV0IGFkYXB0ZXJzIG9uIG5ld2VyIElCTSBpU2VyaWVzXG4gIDI1Olx0XHQgIGFuZCBwU2VyaWVzIHN5c3RlbXMuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUgd2lsbFxuICAyODpcdFx0ICBiZSBjYWxsZWQgaWJtdmV0aC5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgSUJNVkVUSF9LVU5JVF9URVNUXG4gIDMxOlx0XHRib29sIFwmIzM0O0tVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiAgMzI6XHRcdGRlcGVuZHMgb24gS1VOSVRcbiAgMzM6XHRcdGRlcGVuZHMgb24gS1VOSVQ9eSBcdTAwMjZcdTAwMjYgSUJNVkVUSD15XG4gIDM0Olx0XHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBUaGlzIGJ1aWxkcyB1bml0IHRlc3RzIGZvciB0aGUgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IGRyaXZlci5cbiAgMzc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ5NwoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDMwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBJQk1WRVRIIEZ1enppbmcgQ2hhbGxlbmdlKioKCk9rYXksIHNvIGBJQk1WRVRIYCBpcyBQb3dlclBDLXNwZWNpZmljIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGBQUENfUFNFUklFU2AuIFRoYXQmIzM5O3MgYSBodXJkbGUgYmVjYXVzZSBTeXprYWxsZXIsIHdoaWNoIGlzIG91ciBwcmltYXJ5IGZ1enppbmcgdG9vbCwgdHlwaWNhbGx5IHJ1bnMgb24geDg2XzY0LCBhcm02NCwgYW5kIHJpc2N2NjQgYXJjaGl0ZWN0dXJlcy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgd2UgbWlnaHQgYmUgc3R1Y2sgbmVlZGluZyBhY3R1YWwgUG93ZXJQQyBoYXJkd2FyZSwgYnV0IGxldCYjMzk7cyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBIb2xkIG9uLi4udGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNvbWV0aGluZyBhYm91dCAmIzM0O2ltcG9zc2libGUgY29kZSBwYXRocyYjMzQ7IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0JiMzOTtzIGludHJpZ3VpbmcuCgpXYWl0LCBRRU1VICpkb2VzKiBzdXBwb3J0IFBQQzY0IHBzZXJpZXMhIE9rYXksIHNvIHRoZW9yZXRpY2FsbHksIGBJQk1WRVRIYCBzaG91bGQgYmUgcmVhY2hhYmxlIHRocm91Z2ggUUVNVS4gSXQmIzM5O3Mgbm90IGlkZWFsLCBhcyBTeXprYWxsZXIgaXMgeDg2XzY0IGZvY3VzZWQsIGJ1dCBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuCgpOb3csIHdoYXQgYWJvdXQgdGhlIERTQSB0YWdnZXJzPyBUaG9zZSBjYW4gYmUgY29tcGlsZWQgb24gKmFueSogYXJjaGl0ZWN0dXJlLCByaWdodD8gSSBhbSBiZXR0aW5nIHRoYXQgaXMgY29ycmVjdC4gVGhlIG5leHQgcXVlc3Rpb24gYmVjb21lcywgY2FuIHdlIHJlYWNoIHRoZW0gd2l0aG91dCBhY3R1YWwgaGFyZHdhcmU/IERTQSB0YWdnZXJzIGFyZSBlc3NlbnRpYWxseSBuZXR3b3JrIHBhY2tldCBtYW5nbGVycy4gSWYgd2UgY2FuIGVtdWxhdGUgYSBEU0Egc3dpdGNoLCBvciB1c2UgYSBzb2Z0d2FyZSBEU0Egc3dpdGNoLCB3ZSYjMzk7cmUgaW4gYnVzaW5lc3MuIEFuZCB0aGUgdGhvdWdodCB0aGVuIGlzLCBjYW4gdGhleSBiZSB1c2VkIGFzIGEgdGVzdCB0YXJnZXQ/CgpBaGEhIGBkc2FfbG9vcGAgaXMgYSBkdW1teSBEU0Egc3dpdGNoISBUaGF0JiMzOTtzIHByb21pc2luZy4gQnV0LCBgZHNhX2xvb3BgIHVzZXMgZWl0aGVyIGBEU0FfVEFHX1BST1RPX0RTQWAgb3IgYERTQV9UQUdfUFJPVE9fRURTQWAuIENhbiB3ZSBjb25maWd1cmUgYGRzYV9sb29wYCB0byB1c2Ugc29tZXRoaW5nIGxpa2UgYEtTWmAgb3IgYE9DRUxPVF84MDIxUWA/IFRoYXQgd291bGQgYmUgYSBnYW1lLWNoYW5nZXIuIEkgbmVlZCB0byBjaGVjayB0aGUgY29kZS4gTGV0JiMzOTtzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9MTU5PWFsbCBhdHRhY2hlZCBzd2l0Y2ggcG9ydHMgbXVzdCBiZSBkb3duIHdoaWxlIGRvaW5nIHRoaXMpLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTE2MC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC0xNjItbW9ja3VwIGRyaXZlciwgd2hpY2ggY2FuIGJlIGF0dGFjaGVkIHRvIGFueSBuZXR3b3JrIGludGVyZmFjZS4gVGhlIGdvYWwgaXMgdGhhdFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1x0XHRcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTkVUX0RTQV9MT09QKVx0JiM0Mzs9IGRzYV9sb29wLm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS01LW9iai0kKENPTkZJR19ORVRfRFNBX0tTODk5NSkgXHQmIzQzOz0ga3M4OTk1Lm9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVx0dTE2IG1lbWJlcnM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMDpzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNi1cdERTQV9MT09QX1BIWV9SRUFEX09LLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XHRzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IG1pYltfX0RTQV9MT09QX0NOVF9NQVhdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXHR1MTYgcHZpZDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwLVx0c3RydWN0IG1paV9idXNcdCpidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MS1cdHVuc2lnbmVkIGludFx0cG9ydF9iYXNlO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTI6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0Olx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01NS19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTgtXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXHRbRFNBX0xPT1BfUEhZX1JFQURfT0tdXHQ9IHsgXCYjMzQ7cGh5X3JlYWRfb2tcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cdERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfTk9ORSwgIC8qIERFVkxJTktfUkVTT1VSQ0VfSURfUEFSRU5UX1RPUCAqL1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODI6c3RhdGljIHU2NCBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQodm9pZCAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg2Olx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMDA6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTAxLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTUtXHRcdFx0XHRcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTE2Olx0XHRcdFx0XHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNy1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMjU6c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM3LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZHMtXHUwMDNlbnVtX3BvcnRzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcdFx0bWVtY3B5KHBzLVx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MTpcdFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ1Olx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDctXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTYxOnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXHRcdFx0XHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVx0dW5zaWduZWQgaW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzUtXHRcdFx0XHQgICAgICAgdWludDY0X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc3Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3OC1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE4Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDAtXHRcdFx0ICAgICAgaW50IHJlZ251bSwgdTE2IHZhbHVlKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cdFx0XHRcdCAgICAgc3RydWN0IGRzYV9icmlkZ2UgYnJpZGdlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzQtXHRcdFx0XHRcdHU4IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0MS1cdFx0XHRcdFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTEtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTUtXHRib29sIHB2aWQgPSB2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1BWSUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1OS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODM6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXHRib29sIHVudGFnZ2VkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXHR1MTYgcHZpZCA9IHBzLVx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVx0XHRcdFx0ICAgIGludCBuZXdfbXR1KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzU6XHQuZ2V0X3RhZ19wcm90b2NvbFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzY6XHQuc2V0dXBcdFx0XHQ9IGRzYV9sb29wX3NldHVwLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3Olx0LnRlYXJkb3duXHRcdD0gZHNhX2xvb3BfdGVhcmRvd24sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzg6XHQuZ2V0X3N0cmluZ3NcdFx0PSBkc2FfbG9vcF9nZXRfc3RyaW5ncyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcdC5nZXRfZXRodG9vbF9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcdC5nZXRfc3NldF9jb3VudFx0XHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlx0LmdldF9ldGh0b29sX3BoeV9zdGF0c1x0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcdC5waHlfcmVhZFx0XHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQzOlx0LnBoeV93cml0ZVx0XHQ9IGRzYV9sb29wX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcdC5wb3J0X2JyaWRnZV9qb2luXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XHQucG9ydF9icmlkZ2VfbGVhdmVcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XHQucG9ydF9zdHBfc3RhdGVfc2V0XHQ9IGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XHQucG9ydF92bGFuX2FkZFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XHQucG9ydF92bGFuX2RlbFx0XHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTA6XHQucG9ydF9jaGFuZ2VfbXR1XHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MTpcdC5wb3J0X21heF9tdHVcdFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XHQucGh5bGlua19nZXRfY2Fwc1x0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTU6c3RhdGljIGludCBkc2FfbG9vcF9kcnZfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcdHN0cnVjdCBkc2FfbG9vcF9wZGF0YSAqcGRhdGEgPSBtZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cdGRzLVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzgzOlx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2ZHNhX2xvb3BfZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVx0ZHMtXHUwMDNlcHJpdiA9IHBzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM5NzpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MjM6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBkc2FfbG9vcF9kcnYgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXHQubWRpb2Rydi5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cdH0sXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XHQucHJvYmVcdD0gZHNhX2xvb3BfZHJ2X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4Olx0LnJlbW92ZVx0PSBkc2FfbG9vcF9kcnZfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5Olx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMwLX07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMzLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1Olx0cmV0dXJuIGRydiA9PSBcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDcte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4Olx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0OS1cdFx0LmNkID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcdHN3aXRjaF9tZGlvZGV2LVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDgyOnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3Olx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTY6XHRcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk3LVx0XHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDc6XHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmRzYV9sb29wX2Rydik7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDg6XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cdG1kaW9fZGV2aWNlX3JlbW92ZShzd2l0Y2hfbWRpb2Rldik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUxMjptb2R1bGVfZXhpdChkc2FfbG9vcF9leGl0KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4OTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBEU0EgVGFnZ2VyIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgaXRzIGNvbmZpZ3VyYXRpb24uIEl0IHNlZW1zIHRvIGRlZmF1bHQgdG8gdXNpbmcgYERTQV9UQUdfUFJPVE9fRFNBYCBvciBgRFNBX1RBR19QUk9UT19FRFNBYCwgYnV0IHBlcmhhcHMgd2UgY2FuIHR3ZWFrIHRoYXQgc29tZWhvdz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHRoZSBjb25maWd1cmFiaWxpdHkuIFRoZW4sIEkgc2VlIHRoZSBwYXRjaCByZWZlcmVuY2VzIGNoYW5nZXMgaW4gYG5ldC9kc2EvdGFnX2tzei5jYCBhbmQgYG5ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jYC4gQWgsIHRob3NlIGFyZSBEU0EgdGFnZ2Vycy4gTm93IHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuCgpUaGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpczogY2FuIHdlIGZ1enogdGhlc2UgRFNBIHRhZ2dlcnMgd2l0aCBzeXprYWxsZXI/IFN5emthbGxlciBpcyB0aGUgZ28tdG8gdG9vbCBmb3IgdGhpcyBraW5kIG9mIHdvcmssIGFuZCBJIHZhZ3VlbHkgcmVjYWxsIGl0IGhhdmluZyBzb21lIERTQSBkZXNjcmlwdGlvbnMgYWxyZWFkeS4gU28sIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBjaGVjayBpZiB0aG9zZSBkZXNjcmlwdGlvbnMgZXhpc3QgYW5kLCBpZiBzbywgd2hhdCB0aGV5IGNvdmVyLiBUaGF0IHdvdWxkIGJlIHRoZSBjcml0aWNhbCBsaW5rIHRvIHNlZSBpZiB0aGlzIHBhdGNoIG9wZW5zIHVwIG5ldyBmdXp6aW5nIG9wcG9ydHVuaXRpZXMuIExldCYjMzk7cyBzZWUgd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgRFNBLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N5el9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI4NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEU0EgaW4gU3l6a2FsbGVyOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBkc2FgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggU3l6a2FsbGVyLiBUaGUgY29vbCB0aGluZyBpcyBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5IGludG8gKmFueSogbmV0ZGV2LiBOb3csIGlmIGEgbmV0ZGV2IGhhcHBlbnMgdG8gYmUgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLCB0aG9zZSBwYWNrZXRzIHdpbGwsIGJ5IGRlZmluaXRpb24sIHJ1biB0aHJvdWdoIHRoZSB0YWdnZXIuIFRoYXQmIzM5O3MgZ29vZC4KCkJ1dCBoZXJlJiMzOTtzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBBcmUgZnVuY3Rpb25zIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYWN0dWFsbHkgcmVhY2hhYmxlLCBjYW4gSSBoaXQgdGhlbSwgd2l0aG91dCB0aGUgbmVlZCBmb3IgcmVhbCBoYXJkd2FyZT8gVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCk9rYXksIEkgcmVtZW1iZXIsIHRoZXJlIGFyZSBkdW1teSBkcml2ZXJzIG9yLCBldmVuIGJldHRlciwgbW9jayBkcml2ZXJzLiBMZXQgbWUgc2VlLCBsZXQgbWUgc2VlLiBBaCwgeWVzISBgZHNhX2xvb3BgLi4uIFRoYXQmIzM5O3MgdGhlIG9ubHkgbW9jayBkcml2ZXIgZm9yIERTQSwgcmlnaHQ/IFllcywgdGhhdCYjMzk7cyBpdC4KCkFscmlnaHQsIHRpbWUgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIGNoZWNrIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIGluIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIExldCYjMzk7cyBzZWUgaG93IHRoaXMgbW9jayBkcml2ZXIgd29ya3MgYW5kIHdoYXQgSSBjYW4gbGVhcm4gYWJvdXQgcmVhY2hpbmcgdGhvc2Uga2V5IHRhZ2dpbmcgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZpbmQgbXkgYW5zd2Vycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTI0Olx0XG4gMTI1Olx0c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuIDEyNjpcdFx0XHRcdFx0XHRcdCAgIGludCBwb3J0LFxuIDEyNzpcdFx0XHRcdFx0XHRcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcbiAxMjg6XHR7XG4gMTI5Olx0XHRkZXZfZGJnKGRzLVx1MDAzZWRldiwgXCYjMzQ7JXM6IHBvcnQ6ICVkXFxuXCYjMzQ7LCBfX2Z1bmNfXywgcG9ydCk7XG4gMTMwOlx0XG4gMTMxOlx0XHRyZXR1cm4gRFNBX1RBR19QUk9UT19OT05FO1xuIDEzMjpcdH1cbiAxMzM6XHRcbiAxMzQ6XHRzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiAxMzU6XHR7XG4gMTM2Olx0XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuIDEzNzpcdFx0dW5zaWduZWQgaW50IGk7XG4gMTM4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTQ2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBhIERTQSBQcm90b2NvbCBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGF0IGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgIGlzIHJldHVybmluZyBgRFNBX1RBR19QUk9UT19OT05FYC4gVGhhdCYjMzk7cyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuIEZpcnN0LCBJJiMzOTtsbCBnbyB0aHJvdWdoIG15IG1lbnRhbCBjaGVja2xpc3Q6IEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgaGlzdG9yeSBvZiBgZHNhX2xvb3BgIGFuZCBvdGhlciBEU0EgbW9jayBkcml2ZXJzLiBTZWUgaWYgdGhleSYjMzk7cmUgcmVsZXZhbnQgYW5kIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBOZXh0LCBJIHNob3VsZCB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBpZiB0aGVyZSYjMzk7cyAqYW5vdGhlciogd2F5IGEgRFNBIHN3aXRjaCBjb3VsZCBldmVuIGJlIGluc3RhbnRpYXRlZCwgYXNpZGUgZnJvbSB3aGF0IEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQuIEFyZSB0aGVyZSBhbHRlcm5hdGl2ZSBwYXRod2F5cyB0byBjb25zaWRlcj8gUGVyaGFwcyBzb21ldGhpbmcgcmVsYXRlZCB0byBgbmV0ZGV2c2ltYCBtaWdodCBvZmZlciBhIGNsdWUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkuIE1heWJlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGFuc3dlciBsaWVzLiBJJiMzOTtsbCBnbyBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDticGYuYyYjMzQ7LAogICAgJiMzNDtidXMuYyYjMzQ7LAogICAgJiMzNDtkZXYuYyYjMzQ7LAogICAgJiMzNDtldGh0b29sLmMmIzM0OywKICAgICYjMzQ7ZmliLmMmIzM0OywKICAgICYjMzQ7aGVhbHRoLmMmIzM0OywKICAgICYjMzQ7aHdzdGF0cy5jJiMzNDssCiAgICAmIzM0O2lwc2VjLmMmIzM0OywKICAgICYjMzQ7bWFjc2VjLmMmIzM0OywKICAgICYjMzQ7bmV0ZGV2LmMmIzM0OywKICAgICYjMzQ7bmV0ZGV2c2ltLmgmIzM0OywKICAgICYjMzQ7cHNhbXBsZS5jJiMzNDssCiAgICAmIzM0O3BzcC5jJiMzNDssCiAgICAmIzM0O3RjLmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbHMuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAxOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQ4CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgTmV0ZGV2c2ltIERTQSBJbnF1aXJ5KioKCkhtbSwgbm8gRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBzdXBwb3J0IGV2aWRlbnQgaW4gdGhlIGBuZXRkZXZzaW1gIGNvZGUuIFRoYXQmIzM5O3MgYSBiaXQgc3VycHJpc2luZywgSSB3YXMgZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgYmFzaWMgZW11bGF0aW9uLiBOb3csIHdoZXJlIHdvdWxkIHRoYXQgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIGhvb2tzIGZvciBpdCwgbGlrZWx5IHJlc2lkZT8gSSBrbm93IHRoZXJlJiMzOTtzIGEgZGlzdGluY3QgZGlyZWN0b3J5IHdpdGhpbiB0aGUga2VybmVsIHNwZWNpZmljYWxseSBmb3IgRFNBIGRyaXZlcnMuLi4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBgZHJpdmVycy9uZXQvZHNhL2AgZGlyZWN0b3J5LiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIG9yIGEgcmVsZXZhbnQgbW9kdWxlIHRoZXJlIEkgY2FuIGxldmVyYWdlLCBhZGFwdCwgb3IgYXQgbGVhc3QgdW5kZXJzdGFuZCB0byBpbmZvcm0gbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YmNtX3NmMi5jJiMzNDssCiAgICAmIzM0O2JjbV9zZjIuaCYjMzQ7LAogICAgJiMzNDtiY21fc2YyX2NmcC5jJiMzNDssCiAgICAmIzM0O2JjbV9zZjJfcmVncy5oJiMzNDssCiAgICAmIzM0O2RzYV9sb29wLmMmIzM0OywKICAgICYjMzQ7a3M4OTk1LmMmIzM0OywKICAgICYjMzQ7bGFuOTMwMy1jb3JlLmMmIzM0OywKICAgICYjMzQ7bGFuOTMwMy5oJiMzNDssCiAgICAmIzM0O2xhbjkzMDNfaTJjLmMmIzM0OywKICAgICYjMzQ7bGFuOTMwM19tZGlvLmMmIzM0OywKICAgICYjMzQ7bXQ3NTMwLW1kaW8uYyYjMzQ7LAogICAgJiMzNDttdDc1MzAtbW1pby5jJiMzNDssCiAgICAmIzM0O210NzUzMC5jJiMzNDssCiAgICAmIzM0O210NzUzMC5oJiMzNDssCiAgICAmIzM0O212ODhlNjA2MC5jJiMzNDssCiAgICAmIzM0O212ODhlNjA2MC5oJiMzNDssCiAgICAmIzM0O3J6bjFfYTVwc3cuYyYjMzQ7LAogICAgJiMzNDtyem4xX2E1cHN3LmgmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LWNvcmUuYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtcGxhdGZvcm0uYyYjMzQ7LAogICAgJiMzNDt2aXRlc3NlLXZzYzczeHgtc3BpLmMmIzM0OywKICAgICYjMzQ7dml0ZXNzZS12c2M3M3h4LmgmIzM0OywKICAgICYjMzQ7eXQ5MjF4LmMmIzM0OywKICAgICYjMzQ7eXQ5MjF4LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7YjUzJiMzNDssCiAgICAmIzM0O2hpcnNjaG1hbm4mIzM0OywKICAgICYjMzQ7bGFudGlxJiMzNDssCiAgICAmIzM0O21pY3JvY2hpcCYjMzQ7LAogICAgJiMzNDttdjg4ZTZ4eHgmIzM0OywKICAgICYjMzQ7bXhsODYyeHgmIzM0OywKICAgICYjMzQ7bmV0YyYjMzQ7LAogICAgJiMzNDtvY2Vsb3QmIzM0OywKICAgICYjMzQ7cWNhJiMzNDssCiAgICAmIzM0O3JlYWx0ZWsmIzM0OywKICAgICYjMzQ7c2phMTEwNSYjMzQ7LAogICAgJiMzNDt4cnM3MDB4JiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY5MjcKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBEU0EgVGFnIFByb3RvY29sIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBoaXQgYSBzbmFnLiBUaGUgYGRzYV9sb29wYCBmdW5jdGlvbiBpcyByZXR1cm5pbmcgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQmIzM5O3Mgbm90IHdoYXQgSSB3YXMgZXhwZWN0aW5nLiBJdCBtZWFucyB0aGUgcHJvY2VzcyBpc24mIzM5O3QgdXNpbmcgYW55IHNwZWNpZmljIHRhZ2dlciwgYW5kIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIGlzc3VlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgKmR5bmFtaWNhbGx5KiBjaGFuZ2UgdGhlIHRhZyBwcm90b2NvbCBvZiBhIERTQSBzd2l0Y2g/IEkga25vdyBEU0EgaGFzIHRoZSBmbGV4aWJpbGl0eTsgSSBqdXN0IG5lZWQgdG8gY29uZmlybSB0aGUgaW1wbGVtZW50YXRpb24uCgpBbHJpZ2h0LCBnb29kLCBJJiMzOTt2ZSBnb3QgY29uZmlybWF0aW9uIHRoYXQgRFNBICpkb2VzKiBzdXBwb3J0IGNoYW5naW5nIHRoZSB0YWcgcHJvdG9jb2wgb24gdGhlIGZseS4gTm93IGl0JiMzOTtzIGEgbWF0dGVyIG9mIGZpbmRpbmcgdGhlIHNwZWNpZmljIGhvb2tzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29kZSB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIE15IGZvY3VzIHdpbGwgYmUgb24gYG5ldC9kc2EvZHNhLmNgIGFuZCBgbmV0L2RzYS9zbGF2ZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIGZvciBuZXRsaW5rIG9yIHN5c2ZzIGludGVyYWN0aW9ucywgb3Igd2hlcmUgdGhlIHRhZyBwcm90b2NvbCBpcyBtb2RpZmllZC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byB3b3JrIHRocm91Z2ggdGhlIGltcGxlbWVudGF0aW9uIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgY29tbWFuZHMgYW5kIHN0YXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDE6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2hhbmdlX3RhZ19wcm90b2NvbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q9NjA2PVN3aXRjaCBjb25maWd1cmF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTYxNS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDo2MTY6LSBgYGNoYW5nZV90YWdfcHJvdG9jb2xgYDogd2hlbiB0aGUgZGVmYXVsdCB0YWdnaW5nIHByb3RvY29sIGhhcyBjb21wYXRpYmlsaXR5XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtNjE3LSAgcHJvYmxlbXMgd2l0aCB0aGUgY29uZHVpdCBvciBvdGhlciBpc3N1ZXMsIHRoZSBkcml2ZXIgbWF5IHN1cHBvcnQgY2hhbmdpbmcgaXRcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz02NjQ2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NTQtXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo2NjU1OnN0YXRpYyBpbnQgbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNjY1Ni1cdFx0XHRcdFx0IGVudW0gZHNhX3RhZ19wcm90b2NvbCBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXY4OGU2eHh4X3N3aXRjaF9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTg4LVx0LmdldF90YWdfcHJvdG9jb2xcdD0gbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYzo3MTg5Olx0LmNoYW5nZV90YWdfcHJvdG9jb2xcdD0gbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy03MTkwLVx0LnNldHVwXHRcdFx0PSBtdjg4ZTZ4eHhfc2V0dXAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTczMj1mZWxpeF90YWdfcHJvdG9fc2V0dXBfc2hhcmVkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzUzLSAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjc1NDpzdGF0aWMgaW50IGZlbGl4X2NoYW5nZV90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTc1NS1cdFx0XHRcdCAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0xNjk2PXN0YXRpYyBpbnQgZmVsaXhfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0xNzUxLVx0ICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc1MjpcdGZlbGl4X2NoYW5nZV90YWdfcHJvdG9jb2woZHMsIGZlbGl4LVx1MDAzZXRhZ19wcm90byk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1My1cbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGZlbGl4X3N3aXRjaF9vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwNy1cdC5nZXRfdGFnX3Byb3RvY29sXHRcdD0gZmVsaXhfZ2V0X3RhZ19wcm90b2NvbCxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMzA4Olx0LmNoYW5nZV90YWdfcHJvdG9jb2xcdFx0PSBmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzMDktXHQuY29ubmVjdF90YWdfcHJvdG9jb2xcdFx0PSBmZWxpeF9jb25uZWN0X3RhZ19wcm90b2NvbCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTIzMDM9c3RhdGljIGludCBydGw4MzY1bWJfY3B1X2NvbmZpZyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MjMzMjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMy1cdFx0XHRcdFx0IGVudW0gZHNhX3RhZ19wcm90b2NvbCBwcm90bylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjY2Ny1cdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2Njg6XHQuY2hhbmdlX3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjY5LVx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxuLS1cbmluY2x1ZGUvbmV0L2RzYS5oPTg2MD1zdHJ1Y3QgZHNhX3N3aXRjaF9vcHMge1xuLS1cbmluY2x1ZGUvbmV0L2RzYS5oLTg2NC1cdCAqIG1hbmRhdG9yeS4gU3dpdGNoZXMgd2hpY2ggY2FuIG9wZXJhdGUgdXNpbmcgbXVsdGlwbGUgdGFnZ2luZ1xuaW5jbHVkZS9uZXQvZHNhLmg6ODY1Olx0ICogcHJvdG9jb2xzIHNob3VsZCBpbXBsZW1lbnQgQGNoYW5nZV90YWdfcHJvdG9jb2wgYW5kIHJlcG9ydCBpblxuaW5jbHVkZS9uZXQvZHNhLmgtODY2LVx0ICogQGdldF90YWdfcHJvdG9jb2wgdGhlIHRhZ2dlciBpbiBjdXJyZW50IHVzZS5cbi0tXG5pbmNsdWRlL25ldC9kc2EuaC04NzAtXHRcdFx0XHRcdFx0ICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXByb3QpO1xuaW5jbHVkZS9uZXQvZHNhLmg6ODcxOlx0aW50XHQoKmNoYW5nZV90YWdfcHJvdG9jb2wpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3Mi1cdFx0XHRcdCAgICAgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pO1xuLS1cbm5ldC9kc2EvZHNhLmM9NTY5PXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbm5ldC9kc2EvZHNhLmMtNTc4LVx0cnRubF9sb2NrKCk7XG5uZXQvZHNhL2RzYS5jOjU3OTpcdGVyciA9IGRzLVx1MDAzZW9wcy1cdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKGRzLCB0YWdfb3BzLVx1MDAzZXByb3RvKTtcbm5ldC9kc2EvZHNhLmMtNTgwLVx0cnRubF91bmxvY2soKTtcbi0tXG5uZXQvZHNhL2RzYS5jPTExNTQ9c3RhdGljIGludCBkc2FfcG9ydF9wYXJzZV9jcHUoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXG4tLVxubmV0L2RzYS9kc2EuYy0xMTc1LVx0aWYgKHVzZXJfcHJvdG9jb2wpIHtcbm5ldC9kc2EvZHNhLmM6MTE3NjpcdFx0aWYgKCFkcy1cdTAwM2VvcHMtXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbCkge1xubmV0L2RzYS9kc2EuYy0xMTc3LVx0XHRcdGRldl9lcnIoZHMtXHUwMDNlZGV2LCBcJiMzNDtUYWcgcHJvdG9jb2wgY2Fubm90IGJlIG1vZGlmaWVkXFxuXCYjMzQ7KTtcbi0tXG5uZXQvZHNhL2RzYS5jLTEyMjktXHQgKiBkc2Ffc3dpdGNoX3NldHVwX3RhZ19wcm90b2NvbCBvbmNlIC5zZXR1cCBoYXMgcnVuIGFuZCB0aGVcbm5ldC9kc2EvZHNhLmM6MTIzMDpcdCAqIGRyaXZlciBpcyByZWFkeSB0byBhY2NlcHQgY2FsbHMgdG8gLmNoYW5nZV90YWdfcHJvdG9jb2wuIElmXG5uZXQvZHNhL2RzYS5jLTEyMzEtXHQgKiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGN1c3RvbSBwcm90b2NvbCBhdCB0aGF0XG4tLVxubmV0L2RzYS9zd2l0Y2guYz04NzM9c3RhdGljIGludCBkc2Ffc3dpdGNoX2NoYW5nZV90YWdfcHJvdG8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxuLS1cbm5ldC9kc2Evc3dpdGNoLmMtODc5LVxubmV0L2RzYS9zd2l0Y2guYzo4ODA6XHRpZiAoIWRzLVx1MDAzZW9wcy1cdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKVxubmV0L2RzYS9zd2l0Y2guYy04ODEtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5uZXQvZHNhL3N3aXRjaC5jLTg4NC1cbm5ldC9kc2Evc3dpdGNoLmM6ODg1Olx0ZXJyID0gZHMtXHUwMDNlb3BzLVx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2woZHMsIHRhZ19vcHMtXHUwMDNlcHJvdG8pO1xubmV0L2RzYS9zd2l0Y2guYy04ODYtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTIzMgoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDM1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBEU0EgVGFnZ2VyIFRlc3RpbmcgQ29udW5kcnVtKioKCk9rYXksIHNvIEkmIzM5O20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgc2VlbXMgYGRzYV9sb29wYCBkb2VzbiYjMzk7dCBwbGF5IG5pY2Ugd2l0aCBgY2hhbmdlX3RhZ19wcm90b2NvbGAuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGJlY2F1c2UgSSBuZWVkIHRvIHRlc3QgRFNBIHRhZ2dlcnMsIHNwZWNpZmljYWxseSB0aG9zZSB0aGF0IHVzZSBwcm90b2NvbHMgbGlrZSBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYC4KClN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sLCBidXQgaXRzIHN0YW5kYXJkIG5ldHdvcmtpbmcgc2V0dXBzIHdpdGggYHR1bmAsIGB0YXBgLCBvciBgdmV0aGAgZG9uJiMzOTt0IGN1dCBpdCBoZXJlLiBUaGVzZSBwcm90b2NvbHMgYXJlIG9ubHkgaW52b2tlZCB3aGVuIGEgbmV0ZGV2IGlzIGRlZmluZWQgYXMgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLiBBbmQsIGFzIGZhciBhcyBJIGtub3csIGBkc2FfbG9vcGAgaXMgdGhlIG9ubHkgZWFzaWx5IGFjY2Vzc2libGUgbW9jayBEU0Egc3dpdGNoLiBBbmQgaWYgaXQgY2FuJiMzOTt0IGNoYW5nZSB0aGUgdGFnIHByb3RvY29sLCBJJiMzOTttIHN0dWNrLCBhbmQgdGhvc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb2YgdGhlc2Ugc3dpdGNoZXMuCgpXYWl0IGEgbWludXRlLCBpc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGluIFN5emthbGxlciBmb3IgRFNBIHNldHVwPyBBaCwgbm8sIEkgd2FzIHRoaW5raW5nIG9mIGBzeXpfZHNhYCwgd2hpY2ggZG9lc24mIzM5O3QgaGVscC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2ssIGJ1dCBJIHRoaW5rIHRoZSBiZXN0IHBhdGggaXMgdG8gbG9vayBmb3Igb3RoZXIgbW9jayBEU0Egc3dpdGNoZXMsIG9yIGlmIGBkc2FfbG9vcGAgaGFzIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKSGFuZyBvbi4gYGRzYV9sb29wYCBkZWZhdWx0cyB0byBgRFNBX1RBR19QUk9UT19OT05FYC4gSSBzaG91bGQgY2hlY2sgYGRzYV9sb29wX2dldF9wcm90b2NvbGAuIEhtbSwgaXQgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4gU28gaWYgaXQgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4uLiB0aGF0IG1lYW5zICpubyogdGFnZ2VyIGlzIGluIHVzZS4gQW5kIGBkc2FfbG9vcGAgaXMganVzdCBhIG1vY2sgZHJpdmVyLgoKU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBmdW5jdGlvbnMgbGlrZSBgbGFuOTM3eF94bWl0YCBvciBgb2NlbG90X3htaXRgPyBJIHRoaW5rIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggYG5ldC9kc2EvdGFnX2tzei5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuOTM3eF94bWl0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvdGFnX2tzei5jPTQwMD1NT0RVTEVfQUxJQVNfRFNBX1RBR19EUklWRVIoRFNBX1RBR19QUk9UT19LU1o5ODkzLCBLU1o5ODkzX05BTUUpO1xuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTQyNi1cbm5ldC9kc2EvdGFnX2tzei5jOjQyNzpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmxhbjkzN3hfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2RzYS90YWdfa3N6LmMtNDI4LVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2RzYS90YWdfa3N6LmM9NDYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX2RldmljZV9vcHMgbGFuOTM3eF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9kc2EvdGFnX2tzei5jLTQ2Mi1cdC5wcm90b1x0PSBEU0FfVEFHX1BST1RPX0xBTjkzN1gsXG5uZXQvZHNhL3RhZ19rc3ouYzo0NjM6XHQueG1pdFx0PSBsYW45Mzd4X3htaXQsXG5uZXQvZHNhL3RhZ19rc3ouYy00NjQtXHQucmN2XHQ9IGtzejk0NzdfcmN2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI5NAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBEU0EgVGFnZ2VycyoqCgpPa2F5LCB0aGVzZSBhcmUgc2hvd2luZyB1cCBhcyBEU0EgdGFnZ2Vycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1hcmsgdGhlbSBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGV5JiMzOTtyZSBub3QgcmVhY2hhYmxlLCB0aGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLiBOb3csIEkgc2VlIGBpYm12ZXRoYC4uLmhtbW0uIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCB0aGF0PyBBaCwgcmlnaHQsIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldC4gSXQmIzM5O3MgcmVsYXRlZCB0byBgUFBDX1BTRVJJRVNgLiBHb29kLiBCdXQgd2FpdCwgU3l6a2FsbGVyIGRvZXMgcnVuIG9uIGBwcGM2NGxlYCB3aGljaCBpcyBQb3dlclBDIDY0LWJpdCBMaXR0bGUgRW5kaWFuLgoKSG9sZCBvbiwgU3l6a2FsbGVyICpoYXMqIGEgYHBwYzY0bGVgIGluc3RhbmNlISBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBMZXQgbWUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgU3l6a2FsbGVyJiMzOTtzIGBwcGM2NGxlYCBpbnN0YW5jZS4gRG9lcyBpdCBlbmFibGUgYElCTVZFVEhgPyBJIGRvbiYjMzk7dCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IGBJQk1WRVRIYCBpcyBhIHZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgcFNlcmllcy4gSGFuZyBvbi4uLlN5emthbGxlciB1c2VzIFFFTVUgZm9yIGBwcGM2NGxlYCwgYW5kIHRoZSBtYWNoaW5lIHR5cGUgaXMgYHBzZXJpZXNgISBUaGF0IG5haWxzIGl0ISBgSUJNVkVUSGAgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB0aGF0IFFFTVUgc2V0dXAuIFJpZ2h0LCBub3cgbGV0JiMzOTtzIGRpdmUgaW50byB0aGF0IGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2libXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTE4Nz1zdGF0aWMgaW50IGlibXZldGhfc2VuZChzdHJ1Y3QgaWJtdmV0aF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTIxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTIxNTpzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTYtXHRcdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIzMj1zdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjQxOlx0aWYgKGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHNrYiwgbmV0ZGV2KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTI0Mi1cdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDAyOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDkyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGlibXZldGhgIGRyaXZlci4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBjaGFuZ2luZyBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgbmV0d29yayBkZXZpY2UmIzM5O3MgdHJhbnNtaXQgZnVuY3Rpb24gKGBuZG9fc3RhcnRfeG1pdGApLiBUaGUgY29kZSYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBzaW5jZSBpdCYjMzk7cyB0aGUgdHJhbnNtaXQgcGF0aC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc3dpdGNoaW5nIGZyb20gYGV0aF9oZHIoc2tiKWAgdG8gYHNrYl9ldGhfaGRyKHNrYilgLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U/CgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgZnVuY3Rpb25zLiBgZXRoX2hkcihza2IpYCBpcyBlc3NlbnRpYWxseSBhIG1hY3JvIHRoYXQgcmV0dXJucyBgKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpYCwgd2hlcmVhcyBgc2tiX2V0aF9oZHIoc2tiKWAgcmV0dXJucyBgKHN0cnVjdCBldGhoZHIgKilza2ItJmd0O2RhdGFgLiBJbiB0aGUgY29udGV4dCBvZiBgbmRvX3N0YXJ0X3htaXRgLCBgc2tiLSZndDtkYXRhYCBjbGVhcmx5IHBvaW50cyB0byB0aGUgRXRoZXJuZXQgaGVhZGVyLiBUaGUgcHJvYmxlbSBJIHNlZSBpcyB0aGF0IGBza2JfbWFjX2hlYWRlcihza2IpYCBtaWdodCBub3QgYWx3YXlzIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCBieSBhbGwgcGFja2V0IGdlbmVyYXRvcnMuIFBhY2tldCBzb2NrZXRzLCBCUEYgcHJvZ3JhbXMsIG9yIG1heWJlIGV2ZW4gb3RoZXIgYXJlYXMgb2YgdGhlIG5ldHdvcmtpbmcgc3RhY2sgY291bGQgbGVhdmUgaXQgdW5zZXQuIElmIGBza2JfbWFjX2hlYWRlcihza2IpYCBpc24mIzM5O3Qgc2V0LCBgZXRoX2hkcihza2IpYCBjb3VsZCBiZSByZWFkaW5nIGdhcmJhZ2UgbWVtb3J5LCBvciB3b3JzZSwgbGVhZGluZyB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQuCgpTbywgYnkgc3dpdGNoaW5nIHRvIGBza2JfZXRoX2hkcihza2IpYCwgd2UmIzM5O3JlIGd1YXJhbnRlZWluZyB3ZSYjMzk7cmUgYWx3YXlzIGFjY2Vzc2luZyBgc2tiLSZndDtkYXRhYCwgd2hpY2ggY29udGFpbnMgdGhlIEV0aGVybmV0IGhlYWRlciBpbiB0aGlzIGNvbnRleHQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIGBza2JfbWFjX2hlYWRlcmAgaXNuJiMzOTt0IHNldCwgd2hpY2ggY291bGQgcmVzdWx0IGluIGRyb3BwZWQgcGFja2V0cyBvciBldmVuIGNyYXNoZXMuIFRoZXJlZm9yZSwgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhICpnb29kKiBmdW5jdGlvbmFsIGNoYW5nZS4KCk5vdywgYSBuYWdnaW5nIHRob3VnaHQuIFdoYXQgYWJvdXQgRFNBIHRhZ2dlcnM/IENvdWxkIHRoaXMgcGF0Y2ggYWZmZWN0IHRoZW0/IEFyZSB0aGV5IGV2ZW4gcmVhY2hhYmxlPyBFdmVuIGlmIGBkc2FfbG9vcGAgZG9lc24mIzM5O3QgbGV0IHVzIGNoYW5nZSB0YWcgcHJvdG9jb2xzLCBtYXliZSB0aGVyZSYjMzk7cyBhbm90aGVyIHdheSB0byB0ZXN0IHRoZW0uIENhbiBJIGluc3RhbnRpYXRlIGEgRFNBIHRhZ2dlciBkaXJlY3RseSwgc29tZWhvdz8gTm8sIERTQSB0YWdnZXJzIGFyZSBwYXJ0IG9mIHRoZSBEU0EgY29yZSB0aGF0IGhhbmRsZXMgdHJhbnNtaXQvcmVjZWl2ZSBvbiBEU0EgbWFzdGVyL3NsYXZlIGludGVyZmFjZXMsIGFuZCB0aGV5IGFyZSBjYWxsZWQgZnJvbSB0aGVyZS4gSXMgdGhlcmUgYSBtb2NrIGRyaXZlciB0byB0ZXN0IHdpdGg/IE9rYXksIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSBhZ2Fpbi4KCk1heWJlIHNvbWV0aGluZyBsaWtlIGBiY21fc2YyYCBvciBgbXY4OGU2eHh4YCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRob3NlIHN3aXRjaGVzLCB3aGljaCBpcyBhIHByb2JsZW0uIEJ1dCwgd2FpdCwgc3l6a2FsbGVyIGhhcyBwYWNrZXQgaW5qZWN0aW9uLiBCdXQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gYmUgcHJvYmVkIGZpcnN0IHRvIG1ha2UgY29kZSBwYXRocyByZWFjaGFibGUuIE9rYXksIG1heWJlLi4uIHN5emthbGxlciAqY2FuKiB1c2UgYGRzYV9sb29wYC4gQ2FuIHdlIGNvbmZpZ3VyZSBgZHNhX2xvb3BgIHRvIHVzZSBgS1NaYCBvciBgT0NFTE9UYCB0YWdzPyBObywgaXQgbG9va3MgbGlrZSBgZHNhX2xvb3BgIHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFVnaC4gV2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gTm9wZSwgbm8gRFNBIHN1cHBvcnQgaW4gYG5ldGRldnNpbWAuCgpTbywgdGhlIERTQSB0YWdnZXJzIGFyZSBwcm9iYWJseSB1bnJlYWNoYWJsZSBpbiBteSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSG93ZXZlciwgYGlibXZldGhgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIG9uIGBwcGM2NGxlYCBRRU1VLiBTaW5jZSBgaWJtdmV0aGAgKmlzKiByZWFjaGFibGUsIHRoZSBwYXRjaCBhcyBhIHdob2xlIGlzIHdvcnRoIGZ1enppbmcgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciByZWdyZXNzaW9ucy4gSSBzaG91bGQgZm9jdXMgb24gZnV6emluZyBgaWJtdmV0aF9zdGFydF94bWl0YCBhbmQgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIxNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjE1Olx0c3RhdGljIGludCBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuMTIxNjpcdFx0XHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbjEyMTc6XHR7XG4xMjE4Olx0XHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4xMjE5Olx0XHRpbnQgcmV0ID0gMDtcbjEyMjA6XHRcbjEyMjE6XHRcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XG4xMjIyOlx0XG4xMjIzOlx0XHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXHUwMDNlaF9kZXN0LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpKSB7XG4xMjI0Olx0XHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcJiMzNDt2ZXRoIGRvZXNuJiMzOTt0IHN1cHBvcnQgbG9vcGJhY2sgcGFja2V0cywgZHJvcHBpbmcgcGFja2V0LlxcblwmIzM0Oyk7XG4xMjI1Olx0XHRcdG5ldGRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbjEyMjY6XHRcdFx0cmV0ID0gLUVPUE5PVFNVUFA7XG4xMjI3Olx0XHR9XG4xMjI4Olx0XG4xMjI5Olx0XHRyZXR1cm4gcmV0O1xuMTIzMDpcdH1cbjEyMzE6XHRcbjEyMzI6XHRzdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4xMjMzOlx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuMTIzNDpcdHtcbjEyMzU6XHRcdHN0cnVjdCBpYm12ZXRoX2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMTIzNjpcdFx0dW5zaWduZWQgaW50IGRlc2NfZmxhZ3MsIHRvdGFsX2J5dGVzO1xuMTIzNzpcdFx0dW5pb24gaWJtdmV0aF9idWZfZGVzYyBkZXNjO1xuMTIzODpcdFx0aW50IGksIHF1ZXVlX251bSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuMTIzOTpcdFx0dW5zaWduZWQgbG9uZyBtc3MgPSAwO1xuMTI0MDpcdFxuMTI0MTpcdFx0aWYgKGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHNrYiwgbmV0ZGV2KSlcbjEyNDI6XHRcdFx0Z290byBvdXQ7XG4xMjQzOlx0XHQvKiB2ZXRoIGNhbiYjMzk7dCBjaGVja3N1bSBvZmZsb2FkIFVEUCAqL1xuMTI0NDpcdFx0aWYgKHNrYi1cdTAwM2VpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDI6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMzYKCQkJCQkJCW91dHB1dDogMjI0CgkJCQkJCQl0aG91Z2h0czogMTI3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgaWJtdmV0aGAgYW5kIERTQSBUYWdnZXJzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gYW5hbHl6aW5nIHRoaXMgcGF0Y2ggYW5kIHRoaW5raW5nIGFib3V0IGhvdyBiZXN0IHRvIGFwcHJvYWNoIGZ1enppbmcgaXQuIFRoZSBtYWluIGNoYW5nZSBmb2N1c2VzIG9uIHN3aXRjaGluZyBmcm9tIGBldGhfaGRyKHNrYilgIHRvIGBza2JfZXRoX2hkcihza2IpYCBpbiB0aGUgdHJhbnNtaXQgcGF0aCBvZiBgaWJtdmV0aGAgYW5kIGEgY291cGxlIG9mIERTQSB0YWdnZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXggdG8gcHJldmVudCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlcyBvciBsb2dpY2FsIGVycm9ycyB3aXRoIHBvdGVudGlhbGx5IG1hbGZvcm1lZCBwYWNrZXRzLgoKRmlyc3QsIHRoZSBjb3JlIG1vZGlmaWVkIGZ1bmN0aW9uIGluIGBpYm12ZXRoYCBpcyBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgLiBJdCYjMzk7cyBzdGF0aWMsIHNvIGl0ICpzZWVtcyogbGlrZSB0aGUgbG9naWNhbCBjaG9pY2UgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGVuIEkgdGhvdWdodCwgd2FpdCwgdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGlzIGFsc28gbW9kaWZpZWQuIEl0JiMzOTtzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB0aGUgZHJpdmVyJiMzOTtzIGhvdC1wYXRoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBpcyAqZHJpdmVyKi1zcGVjaWZpYyB0aG91Z2gsIHNvIGxpc3RpbmcgaXQgKmNvdWxkKiBiZSBva2F5LiBVbHRpbWF0ZWx5LCBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgIGlzIHRoZSBtb3JlIHRhcmdldGVkLCBncmFudWxhciBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBwYWNrZXQgdHJhbnNtaXR0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgY29uY2VudHJhdGluZyB0aGUgZnV6emVyJiMzOTtzIGVmZm9ydHMgb24gdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGgsIGFuZCBpdCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmdXp6ZXIgaGl0cyB0aGlzIGFyZWEgb2YgdGhlIGRyaXZlci4KCk5leHQsIEkgY29uc2lkZXJlZCB3aGV0aGVyIHRoZSBEU0EgdGFnZ2VycyBhcmUgZXZlbiByZWFjaGFibGUuIEkgY2hlY2tlZCB0aGUgS2NvbmZpZyBvcHRpb25zLCBhbmQgYm90aCBgTkVUX0RTQV9UQUdfS1NaYCBhbmQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgYXJlIGF2YWlsYWJsZSB0byBiZSBlbmFibGVkLiBJIHJ1bGVkIG91dCBkaXJlY3QgdXNlciBjcmVhdGlvbiB2aWEgbmV0bGluaywgb3IgYnkgY3JlYXRpbmcgYSBzd2l0Y2ggd2l0aCBzeXprYWxsZXIsIGJ1dCBldmVuIHdpdGhvdXQgZGlyZWN0IGFjY2VzcyB0byBjcmVhdGUgdGhlc2UgdGFnZ2VycywgYGlibXZldGhgIGl0c2VsZiBpcyByZWFjaGFibGUuIFNvIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpJIGNvbmZpcm1lZCB0aGF0IGBJQk1WRVRIYCBkZXBlbmRzIG9uIGBQUENfUFNFUklFU2AuIFNvIEkmIzM5O2xsIGRlZmluaXRlbHkgZW5hYmxlIGBJQk1WRVRIYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEp1c3QgdG8gYmUgc2FmZSBhbmQgZW5zdXJlIHRoZSBtYXhpbXVtIGNvdmVyYWdlLCBJJiMzOTtsbCBhbHNvIGVuYWJsZSBgTkVUX0RTQV9UQUdfS1NaYCBhbmQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAuCgpCYWNrIHRvIHRoZSBjb2RlOiBJIHZlcmlmaWVkIHRoYXQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIGBpYm12ZXRoYCBkcml2ZXIgd2VyZSBvbmx5IGluIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuIFRoZW4sIEkgaWRlbnRpZmllZCBgbGFuOTM3eF94bWl0YCBhbmQgYG9jZWxvdF94bWl0YCBhcyB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIHdpdGhpbiB0aGUgRFNBIHRhZ2dlciBzb3VyY2UgZmlsZXMuIFNpbmNlIHRoZXNlIGFyZSBhbHNvIGhvdC1wYXRoIGZ1bmN0aW9ucyAqZm9yIHRob3NlIHNwZWNpZmljIHRhZ2dlcnMqLCBsaXN0aW5nIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AgaXMganVzdGlmaWVkLgoKU28sIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTtsbCBkbzogSSYjMzk7bGwgZm9jdXMgdGhlIGZ1enplciBvbiB0aGVzZSBrZXkgc3ltYm9sczoKCiogICBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgCiogICBgbGFuOTM3eF94bWl0YAoqICAgYG9jZWxvdF94bWl0YAoKSSByZXZpZXdlZCB0aGUgcGF0Y2ggbG9naWMgYW5kIGNvbmZpcm1lZCB0aGF0IHJlcGxhY2luZyBgZXRoX2hkcihza2IpYCB3aXRoIGBza2JfZXRoX2hkcihza2IpYCBpcyB0aGUgY29yZSBjaGFuZ2UsIHdoaWNoIHNob3VsZCBpbXByb3ZlIHRoZSBzYWZldHkgYW5kIHJvYnVzdG5lc3Mgb2YgcGFja2V0IHRyYW5zbWlzc2lvbi4gSSYjMzk7dmUgYWxzbyB2ZXJpZmllZCB0aGF0IHRoZXNlIHN5bWJvbHMgYXJlIGNvcnJlY3RseSBkZWZpbmVkIGluIHRoZSBpbmNsdWRlcy4KCkkgZG91YmxlLWNoZWNrZWQgdGhlIEtjb25maWcgc3ltYm9scyBhbmQgdGhlIGRyaXZlciBuYW1lLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwMjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SUJNVkVUSCYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19LU1omIzM0OywKICAgICYjMzQ7TkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQmIzM0OywKICAgICYjMzQ7bGFuOTM3eF94bWl0JiMzNDssCiAgICAmIzM0O29jZWxvdF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGV0aF9oZHIoc2tiKSB3aXRoIHNrYl9ldGhfaGRyKHNrYikgaW4gdGhlIFRYIHBhdGggb2YgaWJtdmV0aCBhbmQgdHdvIERTQSB0YWdnZXJzLiBldGhfaGRyKHNrYikgcmVsaWVzIG9uIHNrYl9tYWNfaGVhZGVyKHNrYikgYmVpbmcgc2V0IGNvcnJlY3RseSwgd2hpY2ggbWlnaHQgbm90IGJlIHRydWUgZm9yIHBhY2tldHMgaW5qZWN0ZWQgdmlhIHBhY2tldCBzb2NrZXRzIG9yIEJQRi4gc2tiX2V0aF9oZHIoc2tiKSBzYWZlbHkgdXNlcyBza2ItXHUwMDNlZGF0YSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBsb2dpY2FsIGJ1Z3Mgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cy4gVGhlIGlibXZldGggZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiBRRU1VIHBzZXJpZXMgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJQk1WRVRIJiMzNDssCiAgICAmIzM0O05FVF9EU0FfVEFHX0tTWiYjMzQ7LAogICAgJiMzNDtORVRfRFNBX1RBR19PQ0VMT1RfODAyMVEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZCYjMzQ7LAogICAgJiMzNDtsYW45Mzd4X3htaXQmIzM0OywKICAgICYjMzQ7b2NlbG90X3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgZXRoX2hkcihza2IpIHdpdGggc2tiX2V0aF9oZHIoc2tiKSBpbiB0aGUgVFggcGF0aCBvZiBpYm12ZXRoIGFuZCB0d28gRFNBIHRhZ2dlcnMuIGV0aF9oZHIoc2tiKSByZWxpZXMgb24gc2tiX21hY19oZWFkZXIoc2tiKSBiZWluZyBzZXQgY29ycmVjdGx5LCB3aGljaCBtaWdodCBub3QgYmUgdHJ1ZSBmb3IgcGFja2V0cyBpbmplY3RlZCB2aWEgcGFja2V0IHNvY2tldHMgb3IgQlBGLiBza2JfZXRoX2hkcihza2IpIHNhZmVseSB1c2VzIHNrYi1cdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODoxNy41MTc0NjQwODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcxMjYxMDIwNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSUJNVkVUSFwiLFxuICAgIFwiTkVUX0RTQV9UQUdfS1NaXCIsXG4gICAgXCJORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZFwiLFxuICAgIFwibGFuOTM3eF94bWl0XCIsXG4gICAgXCJvY2Vsb3RfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGV0aF9oZHIoc2tiKSB3aXRoIHNrYl9ldGhfaGRyKHNrYikgaW4gdGhlIFRYIHBhdGggb2YgaWJtdmV0aCBhbmQgdHdvIERTQSB0YWdnZXJzLiBldGhfaGRyKHNrYikgcmVsaWVzIG9uIHNrYl9tYWNfaGVhZGVyKHNrYikgYmVpbmcgc2V0IGNvcnJlY3RseSwgd2hpY2ggbWlnaHQgbm90IGJlIHRydWUgZm9yIHBhY2tldHMgaW5qZWN0ZWQgdmlhIHBhY2tldCBzb2NrZXRzIG9yIEJQRi4gc2tiX2V0aF9oZHIoc2tiKSBzYWZlbHkgdXNlcyBza2ItXFx1MDAzZWRhdGEgaW5zdGVhZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbG9naWNhbCBidWdzIHdoZW4gdHJhbnNtaXR0aW5nIHBhY2tldHMuIFRoZSBpYm12ZXRoIGRyaXZlciBpcyByZWFjaGFibGUgaW4gUUVNVSBwc2VyaWVzIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MTcuNTE3NDY5MTc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzIxMjU1NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxN2NkOGIzNGZjZDg4OWI0NWM1NTBhYzQ1NGQ2YWY0MDRjMzI5MDM1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jXFxuaW5kZXggNzNlMDUxZDI2YjlkODguLjg4ZThiZGZiY2QxMTI5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jXFxuQEAgLTEyMTgsNyArMTIxOCw3IEBAIHN0YXRpYyBpbnQgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0c3RydWN0IGV0aGhkciAqZXRoZXJfaGVhZGVyO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0ZXRoZXJfaGVhZGVyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG4gXFxuIFxcdGlmIChldGhlcl9hZGRyX2VxdWFsKGV0aGVyX2hlYWRlci1cXHUwMDNlaF9kZXN0LCBuZXRkZXYtXFx1MDAzZWRldl9hZGRyKSkge1xcbiBcXHRcXHRuZXRkZXZfZGJnKG5ldGRldiwgXFxcInZldGggZG9lc24ndCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXFxcblxcXCIpO1xcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19rc3ouYyBiL25ldC9kc2EvdGFnX2tzei5jXFxuaW5kZXggNjdmYTg5ZjEwMmUwNzAuLjRmNzQzMzZhZTM5NjhhIDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX2tzei5jXFxuKysrIGIvbmV0L2RzYS90YWdfa3N6LmNcXG5AQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHU4IHByaW8gPSBuZXRkZXZfdHhxX3RvX3RjKGRldiwgcXVldWVfbWFwcGluZyk7XFxuIFxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdXNlcl90b19wb3J0KGRldik7XFxuLVxcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcXG4rXFx0Y29uc3Qgc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG4gXFx0X19iZTE2ICp0YWc7XFxuIFxcdHUxNiB2YWw7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYyBiL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXFxuaW5kZXggZjUwZjFjZDgzZjE2MWMuLjQ1MTQwMjY4OTdkMWE3IDEwMDY0NFxcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXFxuKysrIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcXG5AQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHUxNiBxdWV1ZV9tYXBwaW5nID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdHU4IHBjcCA9IG5ldGRldl90eHFfdG9fdGMobmV0ZGV2LCBxdWV1ZV9tYXBwaW5nKTtcXG4gXFx0dTE2IHR4X3ZpZCA9IGRzYV90YWdfODAyMXFfc3RhbmRhbG9uZV92aWQoZHApO1xcbi1cXHRzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XFxuK1xcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxuIFxcbiBcXHRpZiAob2NlbG90X3B0cF9yZXdfb3Aoc2tiKSB8fCBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VoX2Rlc3QpKVxcbiBcXHRcXHRyZXR1cm4gb2NlbG90X2RlZmVyX3htaXQoZHAsIHNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU4OjE4LjI5MDYwNjc4MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ2MzUyOTQ5MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZFVEhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIixcbiAgICBcImxhbjkzN3hfeG1pdFwiLFxuICAgIFwib2NlbG90X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVxcdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTdjZDhiMzRmY2Q4ODliNDVjNTUwYWM0NTRkNmFmNDA0YzMyOTAzNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDAxOjU4OjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbmluZGV4IDczZTA1MWQyNmI5ZDg4Li44OGU4YmRmYmNkMTEyOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcbkBAIC0xMjE4LDcgKzEyMTgsNyBAQCBzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRzdHJ1Y3QgZXRoaGRyICpldGhlcl9oZWFkZXI7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdGV0aGVyX2hlYWRlciA9IGV0aF9oZHIoc2tiKTtcbitcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XG4gXG4gXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXHUwMDNlaF9kZXN0LCBuZXRkZXYtXHUwMDNlZGV2X2FkZHIpKSB7XG4gXHRcdG5ldGRldl9kYmcobmV0ZGV2LCBcInZldGggZG9lc24ndCBzdXBwb3J0IGxvb3BiYWNrIHBhY2tldHMsIGRyb3BwaW5nIHBhY2tldC5cXG5cIik7XG5kaWZmIC0tZ2l0IGEvbmV0L2RzYS90YWdfa3N6LmMgYi9uZXQvZHNhL3RhZ19rc3ouY1xuaW5kZXggNjdmYTg5ZjEwMmUwNzAuLjRmNzQzMzZhZTM5NjhhIDEwMDY0NFxuLS0tIGEvbmV0L2RzYS90YWdfa3N6LmNcbisrKyBiL25ldC9kc2EvdGFnX2tzei5jXG5AQCAtNDMwLDcgKzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHR1MTYgcXVldWVfbWFwcGluZyA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0dTggcHJpbyA9IG5ldGRldl90eHFfdG9fdGMoZGV2LCBxdWV1ZV9tYXBwaW5nKTtcbiBcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfdXNlcl90b19wb3J0KGRldik7XG4tXHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBldGhfaGRyKHNrYik7XG4rXHRjb25zdCBzdHJ1Y3QgZXRoaGRyICpoZHIgPSBza2JfZXRoX2hkcihza2IpO1xuIFx0X19iZTE2ICp0YWc7XG4gXHR1MTYgdmFsO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jIGIvbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNcbmluZGV4IGY1MGYxY2Q4M2YxNjFjLi40NTE0MDI2ODk3ZDFhNyAxMDA2NDRcbi0tLSBhL25ldC9kc2EvdGFnX29jZWxvdF84MDIxcS5jXG4rKysgYi9uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuY1xuQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpvY2Vsb3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0dTE2IHF1ZXVlX21hcHBpbmcgPSBza2JfZ2V0X3F1ZXVlX21hcHBpbmcoc2tiKTtcbiBcdHU4IHBjcCA9IG5ldGRldl90eHFfdG9fdGMobmV0ZGV2LCBxdWV1ZV9tYXBwaW5nKTtcbiBcdHUxNiB0eF92aWQgPSBkc2FfdGFnXzgwMjFxX3N0YW5kYWxvbmVfdmlkKGRwKTtcbi1cdHN0cnVjdCBldGhoZHIgKmhkciA9IGV0aF9oZHIoc2tiKTtcbitcdHN0cnVjdCBldGhoZHIgKmhkciA9IHNrYl9ldGhfaGRyKHNrYik7XG4gXG4gXHRpZiAob2NlbG90X3B0cF9yZXdfb3Aoc2tiKSB8fCBpc19saW5rX2xvY2FsX2V0aGVyX2FkZHIoaGRyLVx1MDAzZWhfZGVzdCkpXG4gXHRcdHJldHVybiBvY2Vsb3RfZGVmZXJfeG1pdChkcCwgc2tiKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU4OjE4LjI5MDYwODk2MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NzAxNDQ3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgb25lIOKAkyBpdCdzIHJlcGxhY2luZyBpbnN0YW5jZXMgb2YgYGV0aF9oZHIoc2tiKWAgd2l0aCBgc2tiX2V0aF9oZHIoc2tiKWAgaW4gYSBmZXcgc3BlY2lmaWMgZHJpdmVyIGZpbGVzOiBgaWJtdmV0aC5jYCwgYHRhZ19rc3ouY2AsIGFuZCBgdGFnX29jZWxvdF84MDJxLmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZnVuY3Rpb25hbCBkaWZmZXJlbmNlIGlzLCBpZiBhbnkuIEkgbWVhbiwgd2UncmUgdGFsa2luZyBhYm91dCBoZWFkZXIgYWNjZXNzIGhlcmUsIHNvIHRoZXJlJ3MgYm91bmQgdG8gYmUgYSByZWFzb24uIExldCdzIGRlbHZlIGluLlxuXG5GaXJzdCwgSSdsbCByZWZyZXNoIG15IG1lbW9yeS4gYGV0aF9oZHJgIGlzIGRlZmluZWQgYXMgc2ltcGx5IGNhc3RpbmcgdGhlIHJlc3VsdCBvZiBgc2tiX21hY19oZWFkZXIoc2tiKWAgdG8gYSBgc3RydWN0IGV0aGhkciAqYC4gVGhhdCdzIGJhc2ljIGVub3VnaC4gTm93LCBJJ20gZmFpcmx5IGNlcnRhaW4gYHNrYl9ldGhfaGRyYCB3aWxsIGRvIHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIsIHBlcmhhcHMgaW5jb3Jwb3JhdGluZyBzb21lIGFkZGl0aW9uYWwgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gb3IgbWF5YmUganVzdCBvZmZlcmluZyBhIG1vcmUgc3RhbmRhcmRpemVkIGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBTS0IgZnJhbWV3b3JrLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdCdzIGEgZGlyZWN0IGVxdWl2YWxlbnQsIG9yIGlmIHRoZXJlJ3Mgc3VidGxlIGJlaGF2aW9yIHRoYXQgd2FycmFudHMgdGhpcyBjaGFuZ2UuIFRvIGJlIHN1cmUsIEknbGwgcXVpY2tseSBmaXJlIHVwIGEgYGdyZXBgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSB1c2FnZSBvciBkZWZpbml0aW9uIG9mIGBza2JfZXRoX2hkcmAgaW4gdGhlIGNvZGViYXNlLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaXRzIGludGVuZGVkIHB1cnBvc2UgYW5kIHByb3ZpZGUgc29tZSBpbnNpZ2h0IGludG8gd2h5IHRoZXkncmUgbW92aW5nIGF3YXkgZnJvbSB0aGUgbW9yZSBkaXJlY3QgYWNjZXNzIHdpdGggYGV0aF9oZHJgLiBMZXQncyBzZWUgd2hhdCB3ZSB0dXJuIHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MjMuODYwNzU2MTkxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTA3NTc5MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl9ldGhfaGRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM9MTIxNT1zdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjIxOlxcdGV0aGVyX2hlYWRlciA9IHNrYl9ldGhfaGRyKHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZ2VuZXZlLmM9MTMyND1zdGF0aWMgaW50IGdlbmV2ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZ2VuZXZlLmMtMTQxNC1cXHRcXHR9IGVsc2UgaWYgKGdlbmV2ZS1cXHUwMDNlY2ZnLmRmID09IEdFTkVWRV9ERl9JTkhFUklUKSB7XFxuZHJpdmVycy9uZXQvZ2VuZXZlLmM6MTQxNTpcXHRcXHRcXHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xcbmRyaXZlcnMvbmV0L2dlbmV2ZS5jLTE0MTYtXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz02MzA9c3RhdGljIGludCBpcHZsYW5feG1pdF9tb2RlX2wyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy02MzItXFx0Y29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jOjYzMzpcXHRzdHJ1Y3QgZXRoaGRyICpldGggPSBza2JfZXRoX2hkcihza2IpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTYzNC1cXHRzdHJ1Y3QgaXB2bF9hZGRyICphZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjc2VjLmM9NTk3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbWFjc2VjX2VuY3J5cHQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3NlYy5jLTY0OC1cXHR1bnByb3RlY3RlZF9sZW4gPSBza2ItXFx1MDAzZWxlbjtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYzo2NDk6XFx0ZXRoID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5kcml2ZXJzL25ldC9tYWNzZWMuYy02NTAtXFx0c2NpX3ByZXNlbnQgPSBtYWNzZWNfc2VuZF9zY2koc2VjeSk7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9NTQ1PXN0YXRpYyBpbnQgbWFjdmxhbl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtNTUxLVxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9CUklER0UpIHtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6NTUyOlxcdFxcdGNvbnN0IHN0cnVjdCBldGhoZHIgKmV0aCA9IHNrYl9ldGhfaGRyKHNrYik7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTU1My1cXG4tLVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaD0yNT1zdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmV0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaC0zMi0gKi9cXG5pbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmg6MzM6c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbGludXgvaWZfZXRoZXIuaC0zNC17XFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz0xMjU9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o4Nzk1X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTEzNi1cXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XFxubmV0L2RzYS90YWdfa3N6LmM6MTM3OlxcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxubmV0L2RzYS90YWdfa3N6LmMtMTM4LVxcbi0tXFxubmV0L2RzYS90YWdfa3N6LmM9Mjg3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqa3N6OTQ3N194bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy0zMDUtXFx0dGFnID0gc2tiX3B1dChza2IsIEtTWjk0NzdfSU5HUkVTU19UQUdfTEVOKTtcXG5uZXQvZHNhL3RhZ19rc3ouYzozMDY6XFx0aGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19rc3ouYy0zMDctXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz0zNjA9c3RhdGljIHN0cnVjdCBza19idWZmICprc3o5ODkzX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTM3Ny1cXHR0YWcgPSBza2JfcHV0KHNrYiwgS1NaX0lOR1JFU1NfVEFHX0xFTik7XFxubmV0L2RzYS90YWdfa3N6LmM6Mzc4OlxcdGhkciA9IHNrYl9ldGhfaGRyKHNrYik7XFxubmV0L2RzYS90YWdfa3N6LmMtMzc5LVxcbi0tXFxubmV0L2RzYS90YWdfa3N6LmM9NDI3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbGFuOTM3eF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy00MzItXFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV91c2VyX3RvX3BvcnQoZGV2KTtcXG5uZXQvZHNhL3RhZ19rc3ouYzo0MzM6XFx0Y29uc3Qgc3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19rc3ouYy00MzQtXFx0X19iZTE2ICp0YWc7XFxuLS1cXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYz02Nz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKm9jZWxvdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03My1cXHR1MTYgdHhfdmlkID0gZHNhX3RhZ184MDIxcV9zdGFuZGFsb25lX3ZpZChkcCk7XFxubmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmM6NzQ6XFx0c3RydWN0IGV0aGhkciAqaGRyID0gc2tiX2V0aF9oZHIoc2tiKTtcXG5uZXQvZHNhL3RhZ19vY2Vsb3RfODAyMXEuYy03NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6MzkuMzY4MzQyMDcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NzA3NDE1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhlIG1hdHRlcjpcblxuKipDaGVja2luZyB0aGUgRXRoZXJuZXQgSGVhZGVyIERlZmluaXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGVzZSBFdGhlcm5ldCBoZWFkZXJzLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBkZWZpbml0aXZlIGRlZmluaXRpb24uIEknbGwgb3BlbiB1cCBgaW5jbHVkZS9saW51eC9pZl9ldGhlci5oYC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyBgc2tiX2V0aF9oZHJgIGlzIHVzZWQgYW5kIHdoYXQgaXQncyByZWFsbHkgZG9pbmcgdW5kZXIgdGhlIGhvb2QuIEkgc3VzcGVjdCBpdCdzIGxpa2VseSBhIG1hY3JvIG9yIGZ1bmN0aW9uIGZvciBhY2Nlc3NpbmcgdGhlIEV0aGVybmV0IGhlYWRlciB3aXRoaW4gYSBzb2NrZXQgYnVmZmVyIChgc2tiYCksIGJ1dCBJIHdhbnQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWNzLiBMZXQncyBzZWUgd2hhdCB0aGUgYWN0dWFsIGRlY2xhcmF0aW9uIGFuZCBhc3NvY2lhdGVkIGNvbW1lbnRzIHJldmVhbC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBpbmZvcm1hdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODo0My4wNDU0MTg0NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2lmX2V0aGVyLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpldGhfaGRyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuICAyNjpcXHR7XFxuICAyNzpcXHRcXHRyZXR1cm4gKHN0cnVjdCBldGhoZHIgKilza2JfbWFjX2hlYWRlcihza2IpO1xcbiAgMjg6XFx0fVxcbiAgMjk6XFx0XFxuICAzMDpcXHQvKiBQcmVmZXIgdGhpcyB2ZXJzaW9uIGluIFRYIHBhdGgsIGluc3RlYWQgb2ZcXG4gIDMxOlxcdCAqIHNrYl9yZXNldF9tYWNfaGVhZGVyKCkgKyBldGhfaGRyKClcXG4gIDMyOlxcdCAqL1xcbiAgMzM6XFx0c3RhdGljIGlubGluZSBzdHJ1Y3QgZXRoaGRyICpza2JfZXRoX2hkcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiAgMzQ6XFx0e1xcbiAgMzU6XFx0XFx0cmV0dXJuIChzdHJ1Y3QgZXRoaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgMzY6XFx0fVxcbiAgMzc6XFx0XFxuICAzODpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBldGhoZHIgKmlubmVyX2V0aF9oZHIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gIDM5OlxcdHtcXG4gIDQwOlxcdFxcdHJldHVybiAoc3RydWN0IGV0aGhkciAqKXNrYl9pbm5lcl9tYWNfaGVhZGVyKHNrYik7XFxuICA0MTpcXHR9XFxuICA0MjpcXHRcXG4gIDQzOlxcdGludCBldGhfaGVhZGVyX3BhcnNlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuICA0NDpcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGNoYXIgKmhhZGRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6NDMuMDQ1NTQ2MzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTM1Mzg1MzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRXRoZXJuZXQgSGVhZGVyIEFjY2VzcyBpbiB0aGUgTmV0d29yayBTdGFjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIGtleSBkaWZmZXJlbmNlIEknbSBzZWVpbmcgaXMgYmV0d2VlbiBgc2tiX2V0aF9oZHIoc2tiKWAgd2hpY2ggZGlyZWN0bHkgYWNjZXNzZXMgYHNrYi1cdTAwM2VkYXRhYCwgYW5kIGBldGhfaGRyKHNrYilgIHdoaWNoIHVzZXMgYHNrYl9tYWNfaGVhZGVyKHNrYilgLiBUaGUgcG90ZW50aWFsIHByb2JsZW0gaXMgdGhhdCBpbiB0aGUgVFggcGF0aCwgYHNrYi1cdTAwM2VkYXRhYCBtaWdodCBhbHJlYWR5IHBvaW50IHRvIHRoZSBFdGhlcm5ldCBoZWFkZXIsIGJ1dCBgc2tiX21hY19oZWFkZXIoc2tiKWAgbWlnaHQgbm90IGJlIGluaXRpYWxpemVkIHlldC4gU28sIHVzaW5nIGBldGhfaGRyKHNrYilgIGlzIHByb2JhYmx5IHRoZSBiZXR0ZXIgb3B0aW9uIGhlcmUsIHByZXZlbnRpbmcgYnVncyB3aGVyZSBgc2tiX21hY19oZWFkZXJgIGlzIHVuc2V0LlxuXG5Ob3csIGxldCdzIHNlZSB3aGljaCBkcml2ZXJzIGFyZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgZmlsZXMgYXJlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguY2AsIGBuZXQvZHNhL3RhZ19rc3ouY2AsIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBJJ20gZmFtaWxpYXIgd2l0aCB0aGVzZS4gYGlibXZldGhgIGlzIHRoZSBJQk0gUG93ZXIgVmlydHVhbCBFdGhlcm5ldCBkZXZpY2UgZHJpdmVyLiBgdGFnX2tzemAgYW5kIGB0YWdfb2NlbG90XzgwMjFxYCBhcmUgYm90aCBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHRhZ2dlcnMsIHNwZWNpZmljYWxseSBmb3IgTWljcmVsIEtTWiBzd2l0Y2hlcyBhbmQgT2NlbG90IHN3aXRjaGVzIHJlc3BlY3RpdmVseS5cblxuVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGhvdyBlYXNpbHkgY2FuIEkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IGluIGEgdmlydHVhbGl6ZWQgb3IgY29udHJvbGxlZCBlbnZpcm9ubWVudD8gU2luY2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYXJlIERTQSB0YWdnZXJzLCBJJ20gdGhpbmtpbmcgYWJvdXQgRFNBIHRlc3RpbmcgdGVjaG5pcXVlcy4gSSBjb3VsZCB1c2UgYGRzYV9sb29wYCBvciBzb21lIG90aGVyIHZpcnR1YWwgZHJpdmVycy4gQnV0IHdhaXQsIEkgcmVjYWxsIHRoYXQgYGRzYV9sb29wYCB1c2VzIGl0cyBvd24gZGVkaWNhdGVkIHRhZ2dlciwgbm90IGBrc3pgIG9yIGBvY2Vsb3RgLCBzbyB0aGF0J3Mgbm90IGRpcmVjdGx5IGhlbHBmdWwuIFN0aWxsLCBJIG1pZ2h0IGJlIGFibGUgdG8gdGVzdCB0aGVtIGJ5IGNyZWF0aW5nIGEgZHVtbXkgRFNBIHN3aXRjaCwgb3IgbWF5YmUgZXZlbiBpbmplY3QgcGFja2V0cyB1c2luZyBzeXprYWxsZXIuXG5cbkFjdHVhbGx5LCBkb2Vzbid0IHN5emthbGxlciBoYW5kbGUgRFNBIHRlc3RpbmcgdXNpbmcgdmlydHVhbCBpbnRlcmZhY2VzIGlmIGEgY29ycmVzcG9uZGluZyBkcml2ZXIgaXMgYXZhaWxhYmxlPyBJIHZhZ3VlbHkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBhIGBzeXpfZHNhX3NldHVwYCBjYWxsIG9yIHNvbWV0aGluZyBzaW1pbGFyLi4uIE5vLCB3YWl0LCBzeXprYWxsZXIgbW9zdGx5IGZvY3VzZXMgb24gZ2VuZXJhbCBuZXR3b3JrIGRldmljZSB0ZXN0aW5nLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW5hYmxlIGBORVRfRFNBX1RBR19LU1pgIGFuZCBgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRYC4gVGltZSB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGVzZSBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTg6NTAuOTgwOTM2NzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTk5MDQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfVEFHX0tTWlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9MTE0PWNvbmZpZyBORVRfRFNBX1RBR19NWExfR1NXMVhYXFxuLS1cXG5uZXQvZHNhL0tjb25maWctMTIxLVxcbm5ldC9kc2EvS2NvbmZpZzoxMjI6Y29uZmlnIE5FVF9EU0FfVEFHX0tTWlxcbm5ldC9kc2EvS2NvbmZpZy0xMjMtXFx0dHJpc3RhdGUgXFxcIlRhZyBkcml2ZXIgZm9yIE1pY3JvY2hpcCA4Nzk1LzkzN3gvOTQ3Ny85ODkzIGZhbWlsaWVzIG9mIHN3aXRjaGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1ODo1Ni40ODA4NDYwMjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ5NTc2MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAgVGFnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBjb25zaWRlciBpdHMgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgY29udGV4dCBvZiBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgT2NlbG90IHN3aXRjaC4gVGhpcyB0YWcgbGlrZWx5IGRlYWxzIHdpdGggODAyLjFRIFZMQU4gdGFnZ2luZywgYnV0IHRoZSBzcGVjaWZpY3MgYXJlIHdoYXQgSSBuZWVkIHRvIHVucGFjayBoZXJlLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyBpdCdzIGludGVuZGVkIGZvciBPY2Vsb3Qgc3BlY2lmaWNhbGx5OyB0aGUgdGFnIG5hbWUgc3VnZ2VzdHMgaXQgYnV0IGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgY3J1Y2lhbC5cblxuTXkgbmV4dCBsaW5lIG9mIHRoaW5raW5nIHdpbGwgZXhwbG9yZSBob3cgdGhpcyB0YWcgaXMgdXNlZCB0byBtYXAgODAyLjFRIFZMQU4gaW5mb3JtYXRpb24gdG8gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIElzIHRoaXMgYSBzaW1wbGUgdHJhbnNsYXRpb24gbGF5ZXIgb3IgZG9lcyBpdCBlbmNvZGUgbW9yZSBjb21wbGV4IFZMQU4gbWFuaXB1bGF0aW9uIHJ1bGVzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHRhZyBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhpbmdzIGxpa2UgVkxBTiBJRCBpbnNlcnRpb24sIHN0cmlwcGluZywgcHJpb3JpdHkgdGFnZ2luZywgb3IgcGVyaGFwcyBldmVuIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgd2l0aGluIHRoZSBPY2Vsb3QgQVNJQy5cblxuSSdsbCBhbHNvIGJlIGNvbnNpZGVyaW5nIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIERTQSB0YWdzLiBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIHRoZSBEU0EgZnJhbWUgZm9ybWF0IGFuZCBleGlzdGluZyBEU0EgbWVjaGFuaXNtcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciB0YWdzPyBBcmUgdGhlcmUgYW55IGltcGxpY2l0IGFzc3VtcHRpb25zIG1hZGUgYnkgdGhlIHRhZz9cblxuSWYgSSBjYW4sIEknbGwgcHJvYmFibHkgc3RhcnQgc2Nhbm5pbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBjb2RlOiBkZXZpY2UgZHJpdmVycywgRFNBIGNvcmUgZnVuY3Rpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgaGVhZGVycyBvciBpbmNsdWRlIGZpbGVzIGZvciByZWxhdGVkIHN0cnVjdHVyZXMgb3IgZGF0YSB0eXBlcyB0byBjb25maXJtIG15IHRob3VnaHRzLiBBbHNvIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIGlmIGFueSBleGlzdC4gRnJvbSB0aGVyZSwgSSdsbCBwaWVjZSB0b2dldGhlciB0aGUgZmxvdyBvZiBob3cgdGhpcyB0YWcgaXMgYXBwbGllZCB0byBhIGZyYW1lIGFuZCBob3cgaXQgYWZmZWN0cyB0aGUgc3dpdGNoaW5nIGRlY2lzaW9ucyBvZiB0aGUgT2NlbG90LiBUaGlzIHRhZydzIHB1cnBvc2UgbmVlZHMgdG8gYmUgY29tcGxldGVseSBjbGVhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBpdCBpcyBjb25maWd1cmVkIGNvcnJlY3RseSwgYW5kIGlzIG5vdCBpbiBjb25mbGljdCB3aXRoIGFueSBvdGhlciBmZWF0dXJlLCBvciB0aGUgRFNBIHdpbGwgYnJlYWsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTowMC41MzA0MjUyNzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTA5NjUyNjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9MTM4PWNvbmZpZyBORVRfRFNBX1RBR19PQ0VMT1RcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy0xNDgtXFxubmV0L2RzYS9LY29uZmlnOjE0OTpjb25maWcgTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXFxubmV0L2RzYS9LY29uZmlnLTE1MC1cXHR0cmlzdGF0ZSBcXFwiVGFnIGRyaXZlciBmb3IgT2NlbG90IGZhbWlseSBvZiBzd2l0Y2hlcywgdXNpbmcgVkxBTlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6MDUuNTIxMzk3Mzk3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzMyNTI5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBhbmQgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFZlcmlmeWluZyBgaWJtdmV0aGAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGltbWVkaWF0ZSBpbXB1bHNlLCBhcyBhbHdheXMgd2hlbiB0cm91Ymxlc2hvb3Rpbmcgb3IgZXhhbWluaW5nIG5ldHdvcmsgY29uZmlndXJhdGlvbnMsIGlzIHRvIHN0YXJ0IHdpdGggdGhlIGVzc2VudGlhbHMuIExldCdzIHNlZS4uLiB0aGUgZmFjdCB0aGF0IGBpYm12ZXRoYCBpcyBtZW50aW9uZWQgbGlrZWx5IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBJQk0gdmlydHVhbGl6YXRpb24sIHByb2JhYmx5IHNvbWUgZm9ybSBvZiB2aXJ0dWFsIEV0aGVybmV0IGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBnZXR0aW5nIGxvc3QgaW4gdGhlIHdlZWRzIG9mIHNwZWNpZmljIGNvbW1hbmRzIG9yIGRlZXBlciBsb2dzLCBteSBndXQgaW5zdGluY3QgaXMgdG8gZXN0YWJsaXNoIHRoZSBiYXNpY3MuIExldCdzIGNoZWNrIGBpYm12ZXRoYC4gVGhpcyBjb3VsZCBtZWFuIHZlcmlmeWluZyBpdHMgcHJlc2VuY2UsIGl0cyBjdXJyZW50IHN0YXR1cyAodXAvZG93biwgY29uZmlndXJlZC91bmNvbmZpZ3VyZWQpLCBvciBtYXliZSBldmVuIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgdmlydHVhbCBuZXR3b3JraW5nIGVsZW1lbnRzLiBFc3NlbnRpYWxseSwgbGV0J3MgZXN0YWJsaXNoIGEgYmFzZWxpbmUgb2Ygd2hhdCB0aGUgc3lzdGVtIGlzIHRlbGxpbmcgdXMgYWJvdXQgdGhpcyBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgdGhlbiB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHNvbWV0aGluZyBuZWVkcyBhdHRlbnRpb24gb3IgaWYgdGhpcyBjb25maWd1cmF0aW9uIGFsaWducyB3aXRoIHdoYXQgaXMgZXhwZWN0ZWQuIFRoaXMgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjA4LjY5NDY1MzQzM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NjM4MzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSUJNVkVUSFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX0lCTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnOjIwOmNvbmZpZyBJQk1WRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjEtXFx0dHJpc3RhdGUgXFxcIklCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL0tjb25maWc6MzA6Y29uZmlnIElCTVZFVEhfS1VOSVRfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIktVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjE0LjM0MTA0Mjc1OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYzNTUyMzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNoZWNraW5nIFN5c3RlbSBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgSUJNVkVUSGAgaXMgc3VwcG9ydGVkIG9uIHg4NiBvciBhcm02NCBhcmNoaXRlY3R1cmVzLiBUaGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhlIGV0aGVybmV0IGRyaXZlciBzdHJ1Y3R1cmUuIFRoYXQgd291bGQgYmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnYC4gTGV0J3MgbmF2aWdhdGUgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJdCBzaG91bGQgaGF2ZSBhbGwgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoYXQgc3BlY2lmaWMgZHJpdmVyIGFuZCBpdCdzIGFyY2hpdGVjdHVyZSBzdXBwb3J0LiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQ1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6MTcuMDA0NTk3OTkyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDE4OlxcdGlmIE5FVF9WRU5ET1JfSUJNXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBJQk1WRVRIXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIFBQQ19QU0VSSUVTXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHZpcnR1YWwgZXRoZXJuZXQgYWRhcHRlcnMgb24gbmV3ZXIgSUJNIGlTZXJpZXNcXG4gIDI1OlxcdFxcdCAgYW5kIHBTZXJpZXMgc3lzdGVtcy5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGxcXG4gIDI4OlxcdFxcdCAgYmUgY2FsbGVkIGlibXZldGguXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBJQk1WRVRIX0tVTklUX1RFU1RcXG4gIDMxOlxcdFxcdGJvb2wgXFxcIktVbml0IHRlc3QgZm9yIElCTSBMQU4gVmlydHVhbCBFdGhlcm5ldCBzdXBwb3J0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIEtVTklUXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIEtVTklUPXkgXFx1MDAyNlxcdTAwMjYgSUJNVkVUSD15XFxuICAzNDpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBUaGlzIGJ1aWxkcyB1bml0IHRlc3RzIGZvciB0aGUgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0IGRyaXZlci5cXG4gIDM3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToxNy4wMDQ2OTEzMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE5MjkwNDg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBJQk1WRVRIIEZ1enppbmcgQ2hhbGxlbmdlKipcblxuT2theSwgc28gYElCTVZFVEhgIGlzIFBvd2VyUEMtc3BlY2lmaWMgYmVjYXVzZSBpdCByZWxpZXMgb24gYFBQQ19QU0VSSUVTYC4gVGhhdCdzIGEgaHVyZGxlIGJlY2F1c2UgU3l6a2FsbGVyLCB3aGljaCBpcyBvdXIgcHJpbWFyeSBmdXp6aW5nIHRvb2wsIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCwgYXJtNjQsIGFuZCByaXNjdjY0IGFyY2hpdGVjdHVyZXMuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMsIHdlIG1pZ2h0IGJlIHN0dWNrIG5lZWRpbmcgYWN0dWFsIFBvd2VyUEMgaGFyZHdhcmUsIGJ1dCBsZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBIb2xkIG9uLi4udGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHNvbWV0aGluZyBhYm91dCBcImltcG9zc2libGUgY29kZSBwYXRoc1wiIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0J3MgaW50cmlndWluZy5cblxuV2FpdCwgUUVNVSAqZG9lcyogc3VwcG9ydCBQUEM2NCBwc2VyaWVzISBPa2F5LCBzbyB0aGVvcmV0aWNhbGx5LCBgSUJNVkVUSGAgc2hvdWxkIGJlIHJlYWNoYWJsZSB0aHJvdWdoIFFFTVUuIEl0J3Mgbm90IGlkZWFsLCBhcyBTeXprYWxsZXIgaXMgeDg2XzY0IGZvY3VzZWQsIGJ1dCBpdCdzIGEgcG9zc2liaWxpdHkuIEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBEU0EgdGFnZ2Vycz8gVGhvc2UgY2FuIGJlIGNvbXBpbGVkIG9uICphbnkqIGFyY2hpdGVjdHVyZSwgcmlnaHQ/IEkgYW0gYmV0dGluZyB0aGF0IGlzIGNvcnJlY3QuIFRoZSBuZXh0IHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSByZWFjaCB0aGVtIHdpdGhvdXQgYWN0dWFsIGhhcmR3YXJlPyBEU0EgdGFnZ2VycyBhcmUgZXNzZW50aWFsbHkgbmV0d29yayBwYWNrZXQgbWFuZ2xlcnMuIElmIHdlIGNhbiBlbXVsYXRlIGEgRFNBIHN3aXRjaCwgb3IgdXNlIGEgc29mdHdhcmUgRFNBIHN3aXRjaCwgd2UncmUgaW4gYnVzaW5lc3MuIEFuZCB0aGUgdGhvdWdodCB0aGVuIGlzLCBjYW4gdGhleSBiZSB1c2VkIGFzIGEgdGVzdCB0YXJnZXQ/XG5cbkFoYSEgYGRzYV9sb29wYCBpcyBhIGR1bW15IERTQSBzd2l0Y2ghIFRoYXQncyBwcm9taXNpbmcuIEJ1dCwgYGRzYV9sb29wYCB1c2VzIGVpdGhlciBgRFNBX1RBR19QUk9UT19EU0FgIG9yIGBEU0FfVEFHX1BST1RPX0VEU0FgLiBDYW4gd2UgY29uZmlndXJlIGBkc2FfbG9vcGAgdG8gdXNlIHNvbWV0aGluZyBsaWtlIGBLU1pgIG9yIGBPQ0VMT1RfODAyMVFgPyBUaGF0IHdvdWxkIGJlIGEgZ2FtZS1jaGFuZ2VyLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGUuIExldCdzIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0OTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToyMy4xOTc1OTgzMjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzU3NDk2NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTE1OT1hbGwgYXR0YWNoZWQgc3dpdGNoIHBvcnRzIG11c3QgYmUgZG93biB3aGlsZSBkb2luZyB0aGlzKS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdDoxNjE6SXQgaXMgZGVzaXJhYmxlIHRoYXQgYWxsIHRhZ2dpbmcgcHJvdG9jb2xzIGFyZSB0ZXN0YWJsZSB3aXRoIHRoZSBgYGRzYV9sb29wYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3QtMTYyLW1vY2t1cCBkcml2ZXIsIHdoaWNoIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbmV0d29yayBpbnRlcmZhY2UuIFRoZSBnb2FsIGlzIHRoYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OToyOC42NzMzNTQ0MzRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI0MjQ0MzU0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIERTQSBUYWdnZXIgRnV6emluZyB3aXRoIFN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRzYV9sb29wYCBmdW5jdGlvbiBhbmQgaW1tZWRpYXRlbHkgSSdtIHdvbmRlcmluZyBhYm91dCBpdHMgY29uZmlndXJhdGlvbi4gSXQgc2VlbXMgdG8gZGVmYXVsdCB0byB1c2luZyBgRFNBX1RBR19QUk9UT19EU0FgIG9yIGBEU0FfVEFHX1BST1RPX0VEU0FgLCBidXQgcGVyaGFwcyB3ZSBjYW4gdHdlYWsgdGhhdCBzb21laG93PyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGNvbmZpZ3VyYWJpbGl0eS4gVGhlbiwgSSBzZWUgdGhlIHBhdGNoIHJlZmVyZW5jZXMgY2hhbmdlcyBpbiBgbmV0L2RzYS90YWdfa3N6LmNgIGFuZCBgbmV0L2RzYS90YWdfb2NlbG90XzgwMjFxLmNgLiBBaCwgdGhvc2UgYXJlIERTQSB0YWdnZXJzLiBOb3cgdGhpbmdzIGdldCBpbnRlcmVzdGluZy5cblxuVGhlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGNhbiB3ZSBmdXp6IHRoZXNlIERTQSB0YWdnZXJzIHdpdGggc3l6a2FsbGVyPyBTeXprYWxsZXIgaXMgdGhlIGdvLXRvIHRvb2wgZm9yIHRoaXMga2luZCBvZiB3b3JrLCBhbmQgSSB2YWd1ZWx5IHJlY2FsbCBpdCBoYXZpbmcgc29tZSBEU0EgZGVzY3JpcHRpb25zIGFscmVhZHkuIFNvLCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgaWYgdGhvc2UgZGVzY3JpcHRpb25zIGV4aXN0IGFuZCwgaWYgc28sIHdoYXQgdGhleSBjb3Zlci4gVGhhdCB3b3VsZCBiZSB0aGUgY3JpdGljYWwgbGluayB0byBzZWUgaWYgdGhpcyBwYXRjaCBvcGVucyB1cCBuZXcgZnV6emluZyBvcHBvcnR1bml0aWVzLiBMZXQncyBzZWUgd2hhdCBzeXprYWxsZXIga25vd3MgYWJvdXQgRFNBLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDg5MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTozMi45MTU4MDA1OTJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDc3OTIxNDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5el9kc2FcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjM4LjA2MzYwNTMzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTMxODI0MTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRTQSBpbiBTeXprYWxsZXI6IEEgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBkc2FgIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggU3l6a2FsbGVyLiBUaGUgY29vbCB0aGluZyBpcyBTeXprYWxsZXIgY2FuIGluamVjdCBwYWNrZXRzIGRpcmVjdGx5IGludG8gKmFueSogbmV0ZGV2LiBOb3csIGlmIGEgbmV0ZGV2IGhhcHBlbnMgdG8gYmUgYSBEU0EgbWFzdGVyIG9yIHNsYXZlLCB0aG9zZSBwYWNrZXRzIHdpbGwsIGJ5IGRlZmluaXRpb24sIHJ1biB0aHJvdWdoIHRoZSB0YWdnZXIuIFRoYXQncyBnb29kLlxuXG5CdXQgaGVyZSdzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBBcmUgZnVuY3Rpb25zIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAgYWN0dWFsbHkgcmVhY2hhYmxlLCBjYW4gSSBoaXQgdGhlbSwgd2l0aG91dCB0aGUgbmVlZCBmb3IgcmVhbCBoYXJkd2FyZT8gVGhhdCdzIHRoZSByZWFsIHF1ZXN0aW9uLlxuXG5Pa2F5LCBJIHJlbWVtYmVyLCB0aGVyZSBhcmUgZHVtbXkgZHJpdmVycyBvciwgZXZlbiBiZXR0ZXIsIG1vY2sgZHJpdmVycy4gTGV0IG1lIHNlZSwgbGV0IG1lIHNlZS4gQWgsIHllcyEgYGRzYV9sb29wYC4uLiBUaGF0J3MgdGhlIG9ubHkgbW9jayBkcml2ZXIgZm9yIERTQSwgcmlnaHQ/IFllcywgdGhhdCdzIGl0LlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIEkgbmVlZCB0byBjaGVjayBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCBpbiBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgLiBMZXQncyBzZWUgaG93IHRoaXMgbW9jayBkcml2ZXIgd29ya3MgYW5kIHdoYXQgSSBjYW4gbGVhcm4gYWJvdXQgcmVhY2hpbmcgdGhvc2Uga2V5IHRhZ2dpbmcgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEknbGwgZmluZCBteSBhbnN3ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI4NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTo0Mi41OTU0MzMwOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYzMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTI0LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTI0OlxcdFxcbiAxMjU6XFx0c3RhdGljIGVudW0gZHNhX3RhZ19wcm90b2NvbCBkc2FfbG9vcF9nZXRfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbiAxMjY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuIDEyNzpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXApXFxuIDEyODpcXHR7XFxuIDEyOTpcXHRcXHRkZXZfZGJnKGRzLVxcdTAwM2VkZXYsIFxcXCIlczogcG9ydDogJWRcXFxcblxcXCIsIF9fZnVuY19fLCBwb3J0KTtcXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0cmV0dXJuIERTQV9UQUdfUFJPVE9fTk9ORTtcXG4gMTMyOlxcdH1cXG4gMTMzOlxcdFxcbiAxMzQ6XFx0c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIDEzNTpcXHR7XFxuIDEzNjpcXHRcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG4gMTM3OlxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiAxMzg6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQyLjU5NTU0MTY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjM5NDM2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIERTQSBQcm90b2NvbCBJc3N1ZSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgZHNhX2xvb3BfZ2V0X3Byb3RvY29sYCBpcyByZXR1cm5pbmcgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFRoYXQncyBub3Qgd2hhdCBJIGV4cGVjdGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkuIEZpcnN0LCBJJ2xsIGdvIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBoaXN0b3J5IG9mIGBkc2FfbG9vcGAgYW5kIG90aGVyIERTQSBtb2NrIGRyaXZlcnMuIFNlZSBpZiB0aGV5J3JlIHJlbGV2YW50IGFuZCBwcm92aWRlIHNvbWUgaW5zaWdodC4gTmV4dCwgSSBzaG91bGQgdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgaWYgdGhlcmUncyAqYW5vdGhlciogd2F5IGEgRFNBIHN3aXRjaCBjb3VsZCBldmVuIGJlIGluc3RhbnRpYXRlZCwgYXNpZGUgZnJvbSB3aGF0IEknbSBjdXJyZW50bHkgbG9va2luZyBhdC4gQXJlIHRoZXJlIGFsdGVybmF0aXZlIHBhdGh3YXlzIHRvIGNvbnNpZGVyPyBQZXJoYXBzIHNvbWV0aGluZyByZWxhdGVkIHRvIGBuZXRkZXZzaW1gIG1pZ2h0IG9mZmVyIGEgY2x1ZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5LiBNYXliZSB0aGF0J3Mgd2hlcmUgdGhlIGFuc3dlciBsaWVzLiBJJ2xsIGdvIGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTQ2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMTo1OTo0NS45MTk0ODc5NjZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJicGYuY1wiLFxuICAgIFwiYnVzLmNcIixcbiAgICBcImRldi5jXCIsXG4gICAgXCJldGh0b29sLmNcIixcbiAgICBcImZpYi5jXCIsXG4gICAgXCJoZWFsdGguY1wiLFxuICAgIFwiaHdzdGF0cy5jXCIsXG4gICAgXCJpcHNlYy5jXCIsXG4gICAgXCJtYWNzZWMuY1wiLFxuICAgIFwibmV0ZGV2LmNcIixcbiAgICBcIm5ldGRldnNpbS5oXCIsXG4gICAgXCJwc2FtcGxlLmNcIixcbiAgICBcInBzcC5jXCIsXG4gICAgXCJ0Yy5jXCIsXG4gICAgXCJ1ZHBfdHVubmVscy5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQ1LjkxOTU4ODE3NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzE4ODg0OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6XG5cbioqSW5pdGlhbCBOZXRkZXZzaW0gRFNBIElucXVpcnkqKlxuXG5IbW0sIG5vIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3VwcG9ydCBldmlkZW50IGluIHRoZSBgbmV0ZGV2c2ltYCBjb2RlLiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZywgSSB3YXMgZXhwZWN0aW5nIHNvbWUgbGV2ZWwgb2YgYmFzaWMgZW11bGF0aW9uLiBOb3csIHdoZXJlIHdvdWxkIHRoYXQgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIGhvb2tzIGZvciBpdCwgbGlrZWx5IHJlc2lkZT8gSSBrbm93IHRoZXJlJ3MgYSBkaXN0aW5jdCBkaXJlY3Rvcnkgd2l0aGluIHRoZSBrZXJuZWwgc3BlY2lmaWNhbGx5IGZvciBEU0EgZHJpdmVycy4uLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkuIFBlcmhhcHMgdGhlcmUncyBhbiBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSBvciBhIHJlbGV2YW50IG1vZHVsZSB0aGVyZSBJIGNhbiBsZXZlcmFnZSwgYWRhcHQsIG9yIGF0IGxlYXN0IHVuZGVyc3RhbmQgdG8gaW5mb3JtIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzQ4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjQ4LjYzODQ3NTU3NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJiY21fc2YyLmNcIixcbiAgICBcImJjbV9zZjIuaFwiLFxuICAgIFwiYmNtX3NmMl9jZnAuY1wiLFxuICAgIFwiYmNtX3NmMl9yZWdzLmhcIixcbiAgICBcImRzYV9sb29wLmNcIixcbiAgICBcImtzODk5NS5jXCIsXG4gICAgXCJsYW45MzAzLWNvcmUuY1wiLFxuICAgIFwibGFuOTMwMy5oXCIsXG4gICAgXCJsYW45MzAzX2kyYy5jXCIsXG4gICAgXCJsYW45MzAzX21kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1kaW8uY1wiLFxuICAgIFwibXQ3NTMwLW1taW8uY1wiLFxuICAgIFwibXQ3NTMwLmNcIixcbiAgICBcIm10NzUzMC5oXCIsXG4gICAgXCJtdjg4ZTYwNjAuY1wiLFxuICAgIFwibXY4OGU2MDYwLmhcIixcbiAgICBcInJ6bjFfYTVwc3cuY1wiLFxuICAgIFwicnpuMV9hNXBzdy5oXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtY29yZS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHgtcGxhdGZvcm0uY1wiLFxuICAgIFwidml0ZXNzZS12c2M3M3h4LXNwaS5jXCIsXG4gICAgXCJ2aXRlc3NlLXZzYzczeHguaFwiLFxuICAgIFwieXQ5MjF4LmNcIixcbiAgICBcInl0OTIxeC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImI1M1wiLFxuICAgIFwiaGlyc2NobWFublwiLFxuICAgIFwibGFudGlxXCIsXG4gICAgXCJtaWNyb2NoaXBcIixcbiAgICBcIm12ODhlNnh4eFwiLFxuICAgIFwibXhsODYyeHhcIixcbiAgICBcIm5ldGNcIixcbiAgICBcIm9jZWxvdFwiLFxuICAgIFwicWNhXCIsXG4gICAgXCJyZWFsdGVrXCIsXG4gICAgXCJzamExMTA1XCIsXG4gICAgXCJ4cnM3MDB4XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6NDguNjM4NjY4NTE2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDIyNzIzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBEU0EgVGFnIFByb3RvY29sIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgc25hZy4gVGhlIGBkc2FfbG9vcGAgZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGBEU0FfVEFHX1BST1RPX05PTkVgLiBUaGF0J3Mgbm90IHdoYXQgSSB3YXMgZXhwZWN0aW5nLiBJdCBtZWFucyB0aGUgcHJvY2VzcyBpc24ndCB1c2luZyBhbnkgc3BlY2lmaWMgdGFnZ2VyLCBhbmQgdGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBpc3N1ZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlICpkeW5hbWljYWxseSogY2hhbmdlIHRoZSB0YWcgcHJvdG9jb2wgb2YgYSBEU0Egc3dpdGNoPyBJIGtub3cgRFNBIGhhcyB0aGUgZmxleGliaWxpdHk7IEkganVzdCBuZWVkIHRvIGNvbmZpcm0gdGhlIGltcGxlbWVudGF0aW9uLlxuXG5BbHJpZ2h0LCBnb29kLCBJJ3ZlIGdvdCBjb25maXJtYXRpb24gdGhhdCBEU0EgKmRvZXMqIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHRhZyBwcm90b2NvbCBvbiB0aGUgZmx5LiBOb3cgaXQncyBhIG1hdHRlciBvZiBmaW5kaW5nIHRoZSBzcGVjaWZpYyBob29rcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwgY29kZSB0byBwaW5wb2ludCB3aGVyZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQuIE15IGZvY3VzIHdpbGwgYmUgb24gYG5ldC9kc2EvZHNhLmNgIGFuZCBgbmV0L2RzYS9zbGF2ZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZW50cnkgcG9pbnRzIGZvciBuZXRsaW5rIG9yIHN5c2ZzIGludGVyYWN0aW9ucywgb3Igd2hlcmUgdGhlIHRhZyBwcm90b2NvbCBpcyBtb2RpZmllZC4gRnJvbSB0aGVyZSwgSSdsbCBiZSBhYmxlIHRvIHdvcmsgdGhyb3VnaCB0aGUgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlIG9mIHRoZSBwb3NzaWJsZSBjb21tYW5kcyBhbmQgc3RhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjkyNywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDE6NTk6NTIuMTgwOTQzNjQ1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE4NDA5OTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoYW5nZV90YWdfcHJvdG9jb2xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0PTYwNj1Td2l0Y2ggY29uZmlndXJhdGlvblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EucnN0LTYxNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS5yc3Q6NjE2Oi0gYGBjaGFuZ2VfdGFnX3Byb3RvY29sYGA6IHdoZW4gdGhlIGRlZmF1bHQgdGFnZ2luZyBwcm90b2NvbCBoYXMgY29tcGF0aWJpbGl0eVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kc2EvZHNhLnJzdC02MTctICBwcm9ibGVtcyB3aXRoIHRoZSBjb25kdWl0IG9yIG90aGVyIGlzc3VlcywgdGhlIGRyaXZlciBtYXkgc3VwcG9ydCBjaGFuZ2luZyBpdFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9NjY0Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIG12ODhlNnh4eF9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTY2NTQtXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NjY1NTpzdGF0aWMgaW50IG12ODhlNnh4eF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy02NjU2LVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYz03MTg3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXY4OGU2eHh4X3N3aXRjaF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE4OC1cXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gbXY4OGU2eHh4X2dldF90YWdfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6NzE4OTpcXHQuY2hhbmdlX3RhZ19wcm90b2NvbFxcdD0gbXY4OGU2eHh4X2NoYW5nZV90YWdfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmMtNzE5MC1cXHQuc2V0dXBcXHRcXHRcXHQ9IG12ODhlNnh4eF9zZXR1cCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz03MzI9ZmVsaXhfdGFnX3Byb3RvX3NldHVwX3NoYXJlZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzUzLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzo3NTQ6c3RhdGljIGludCBmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtNzU1LVxcdFxcdFxcdFxcdCAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTE2OTY9c3RhdGljIGludCBmZWxpeF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MTc1MjpcXHRmZWxpeF9jaGFuZ2VfdGFnX3Byb3RvY29sKGRzLCBmZWxpeC1cXHUwMDNldGFnX3Byb3RvKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYz0yMzA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZmVsaXhfc3dpdGNoX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwNy1cXHQuZ2V0X3RhZ19wcm90b2NvbFxcdFxcdD0gZmVsaXhfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjMwODpcXHQuY2hhbmdlX3RhZ19wcm90b2NvbFxcdFxcdD0gZmVsaXhfY2hhbmdlX3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjMwOS1cXHQuY29ubmVjdF90YWdfcHJvdG9jb2xcXHRcXHQ9IGZlbGl4X2Nvbm5lY3RfdGFnX3Byb3RvY29sLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0yMzAzPXN0YXRpYyBpbnQgcnRsODM2NW1iX2NwdV9jb25maWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjMzMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjIzMzI6c3RhdGljIGludCBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yMzMzLVxcdFxcdFxcdFxcdFxcdCBlbnVtIGRzYV90YWdfcHJvdG9jb2wgcHJvdG8pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2NjctXFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2Njg6XFx0LmNoYW5nZV90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfY2hhbmdlX3RhZ19wcm90b2NvbCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2NjktXFx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxcbi0tXFxuaW5jbHVkZS9uZXQvZHNhLmg9ODYwPXN0cnVjdCBkc2Ffc3dpdGNoX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC9kc2EuaC04NjQtXFx0ICogbWFuZGF0b3J5LiBTd2l0Y2hlcyB3aGljaCBjYW4gb3BlcmF0ZSB1c2luZyBtdWx0aXBsZSB0YWdnaW5nXFxuaW5jbHVkZS9uZXQvZHNhLmg6ODY1OlxcdCAqIHByb3RvY29scyBzaG91bGQgaW1wbGVtZW50IEBjaGFuZ2VfdGFnX3Byb3RvY29sIGFuZCByZXBvcnQgaW5cXG5pbmNsdWRlL25ldC9kc2EuaC04NjYtXFx0ICogQGdldF90YWdfcHJvdG9jb2wgdGhlIHRhZ2dlciBpbiBjdXJyZW50IHVzZS5cXG4tLVxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3MC1cXHRcXHRcXHRcXHRcXHRcXHQgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcHJvdCk7XFxuaW5jbHVkZS9uZXQvZHNhLmg6ODcxOlxcdGludFxcdCgqY2hhbmdlX3RhZ19wcm90b2NvbCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLFxcbmluY2x1ZGUvbmV0L2RzYS5oLTg3Mi1cXHRcXHRcXHRcXHQgICAgICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIHByb3RvKTtcXG4tLVxcbm5ldC9kc2EvZHNhLmM9NTY5PXN0YXRpYyBpbnQgZHNhX3N3aXRjaF9zZXR1cF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxubmV0L2RzYS9kc2EuYy01NzgtXFx0cnRubF9sb2NrKCk7XFxubmV0L2RzYS9kc2EuYzo1Nzk6XFx0ZXJyID0gZHMtXFx1MDAzZW9wcy1cXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbChkcywgdGFnX29wcy1cXHUwMDNlcHJvdG8pO1xcbm5ldC9kc2EvZHNhLmMtNTgwLVxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5uZXQvZHNhL2RzYS5jPTExNTQ9c3RhdGljIGludCBkc2FfcG9ydF9wYXJzZV9jcHUoc3RydWN0IGRzYV9wb3J0ICpkcCwgc3RydWN0IG5ldF9kZXZpY2UgKmNvbmR1aXQsXFxuLS1cXG5uZXQvZHNhL2RzYS5jLTExNzUtXFx0aWYgKHVzZXJfcHJvdG9jb2wpIHtcXG5uZXQvZHNhL2RzYS5jOjExNzY6XFx0XFx0aWYgKCFkcy1cXHUwMDNlb3BzLVxcdTAwM2VjaGFuZ2VfdGFnX3Byb3RvY29sKSB7XFxubmV0L2RzYS9kc2EuYy0xMTc3LVxcdFxcdFxcdGRldl9lcnIoZHMtXFx1MDAzZWRldiwgXFxcIlRhZyBwcm90b2NvbCBjYW5ub3QgYmUgbW9kaWZpZWRcXFxcblxcXCIpO1xcbi0tXFxubmV0L2RzYS9kc2EuYy0xMjI5LVxcdCAqIGRzYV9zd2l0Y2hfc2V0dXBfdGFnX3Byb3RvY29sIG9uY2UgLnNldHVwIGhhcyBydW4gYW5kIHRoZVxcbm5ldC9kc2EvZHNhLmM6MTIzMDpcXHQgKiBkcml2ZXIgaXMgcmVhZHkgdG8gYWNjZXB0IGNhbGxzIHRvIC5jaGFuZ2VfdGFnX3Byb3RvY29sLiBJZlxcbm5ldC9kc2EvZHNhLmMtMTIzMS1cXHQgKiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGN1c3RvbSBwcm90b2NvbCBhdCB0aGF0XFxuLS1cXG5uZXQvZHNhL3N3aXRjaC5jPTg3Mz1zdGF0aWMgaW50IGRzYV9zd2l0Y2hfY2hhbmdlX3RhZ19wcm90byhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuLS1cXG5uZXQvZHNhL3N3aXRjaC5jLTg3OS1cXG5uZXQvZHNhL3N3aXRjaC5jOjg4MDpcXHRpZiAoIWRzLVxcdTAwM2VvcHMtXFx1MDAzZWNoYW5nZV90YWdfcHJvdG9jb2wpXFxubmV0L2RzYS9zd2l0Y2guYy04ODEtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxubmV0L2RzYS9zd2l0Y2guYy04ODQtXFxubmV0L2RzYS9zd2l0Y2guYzo4ODU6XFx0ZXJyID0gZHMtXFx1MDAzZW9wcy1cXHUwMDNlY2hhbmdlX3RhZ19wcm90b2NvbChkcywgdGFnX29wcy1cXHUwMDNlcHJvdG8pO1xcbm5ldC9kc2Evc3dpdGNoLmMtODg2LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAxOjU5OjU3LjQ5OTM1OTUxNFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzUxODU3MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IERTQSBUYWdnZXIgVGVzdGluZyBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSXQgc2VlbXMgYGRzYV9sb29wYCBkb2Vzbid0IHBsYXkgbmljZSB3aXRoIGBjaGFuZ2VfdGFnX3Byb3RvY29sYC4gVGhhdCdzIGEgcHJvYmxlbSBiZWNhdXNlIEkgbmVlZCB0byB0ZXN0IERTQSB0YWdnZXJzLCBzcGVjaWZpY2FsbHkgdGhvc2UgdGhhdCB1c2UgcHJvdG9jb2xzIGxpa2UgYHRhZ19rc3pgIGFuZCBgdGFnX29jZWxvdF84MDIxcWAuXG5cblN5emthbGxlciBpcyBhIGZhbnRhc3RpYyB0b29sLCBidXQgaXRzIHN0YW5kYXJkIG5ldHdvcmtpbmcgc2V0dXBzIHdpdGggYHR1bmAsIGB0YXBgLCBvciBgdmV0aGAgZG9uJ3QgY3V0IGl0IGhlcmUuIFRoZXNlIHByb3RvY29scyBhcmUgb25seSBpbnZva2VkIHdoZW4gYSBuZXRkZXYgaXMgZGVmaW5lZCBhcyBhIERTQSBtYXN0ZXIgb3Igc2xhdmUuIEFuZCwgYXMgZmFyIGFzIEkga25vdywgYGRzYV9sb29wYCBpcyB0aGUgb25seSBlYXNpbHkgYWNjZXNzaWJsZSBtb2NrIERTQSBzd2l0Y2guIEFuZCBpZiBpdCBjYW4ndCBjaGFuZ2UgdGhlIHRhZyBwcm90b2NvbCwgSSdtIHN0dWNrLCBhbmQgdGhvc2UgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gYSBwdXJlbHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb2YgdGhlc2Ugc3dpdGNoZXMuXG5cbldhaXQgYSBtaW51dGUsIGlzbid0IHRoZXJlIHNvbWV0aGluZyBpbiBTeXprYWxsZXIgZm9yIERTQSBzZXR1cD8gQWgsIG5vLCBJIHdhcyB0aGlua2luZyBvZiBgc3l6X2RzYWAsIHdoaWNoIGRvZXNuJ3QgaGVscC4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjaywgYnV0IEkgdGhpbmsgdGhlIGJlc3QgcGF0aCBpcyB0byBsb29rIGZvciBvdGhlciBtb2NrIERTQSBzd2l0Y2hlcywgb3IgaWYgYGRzYV9sb29wYCBoYXMgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG5cbkhhbmcgb24uIGBkc2FfbG9vcGAgZGVmYXVsdHMgdG8gYERTQV9UQUdfUFJPVE9fTk9ORWAuIEkgc2hvdWxkIGNoZWNrIGBkc2FfbG9vcF9nZXRfcHJvdG9jb2xgLiBIbW0sIGl0IHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuIFNvIGlmIGl0IHJldHVybnMgYERTQV9UQUdfUFJPVE9fTk9ORWAuLi4gdGhhdCBtZWFucyAqbm8qIHRhZ2dlciBpcyBpbiB1c2UuIEFuZCBgZHNhX2xvb3BgIGlzIGp1c3QgYSBtb2NrIGRyaXZlci5cblxuU28gdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGhvdyBkbyBJIGdldCB0byBmdW5jdGlvbnMgbGlrZSBgbGFuOTM3eF94bWl0YCBvciBgb2NlbG90X3htaXRgPyBJIHRoaW5rIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggYG5ldC9kc2EvdGFnX2tzei5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyMzIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MDQuMjUxMjIwMjY3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMyNDcxMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxhbjkzN3hfeG1pdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL3RhZ19rc3ouYz00MDA9TU9EVUxFX0FMSUFTX0RTQV9UQUdfRFJJVkVSKERTQV9UQUdfUFJPVE9fS1NaOTg5MywgS1NaOTg5M19OQU1FKTtcXG4tLVxcbm5ldC9kc2EvdGFnX2tzei5jLTQyNi1cXG5uZXQvZHNhL3RhZ19rc3ouYzo0Mjc6c3RhdGljIHN0cnVjdCBza19idWZmICpsYW45Mzd4X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvZHNhL3RhZ19rc3ouYy00MjgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYz00NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2FfZGV2aWNlX29wcyBsYW45Mzd4X25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3RhZ19rc3ouYy00NjItXFx0LnByb3RvXFx0PSBEU0FfVEFHX1BST1RPX0xBTjkzN1gsXFxubmV0L2RzYS90YWdfa3N6LmM6NDYzOlxcdC54bWl0XFx0PSBsYW45Mzd4X3htaXQsXFxubmV0L2RzYS90YWdfa3N6LmMtNDY0LVxcdC5yY3ZcXHQ9IGtzejk0NzdfcmN2LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwMjowMDowOC45ODM2OTgxNTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxMzI3MTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBEU0EgVGFnZ2VycyoqXG5cbk9rYXksIHRoZXNlIGFyZSBzaG93aW5nIHVwIGFzIERTQSB0YWdnZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFyayB0aGVtIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZXkncmUgbm90IHJlYWNoYWJsZSwgdGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLiBOb3csIEkgc2VlIGBpYm12ZXRoYC4uLmhtbW0uIFdoYXQncyB0aGUgZGVhbCB3aXRoIHRoYXQ/IEFoLCByaWdodCwgSUJNIExBTiBWaXJ0dWFsIEV0aGVybmV0LiBJdCdzIHJlbGF0ZWQgdG8gYFBQQ19QU0VSSUVTYC4gR29vZC4gQnV0IHdhaXQsIFN5emthbGxlciBkb2VzIHJ1biBvbiBgcHBjNjRsZWAgd2hpY2ggaXMgUG93ZXJQQyA2NC1iaXQgTGl0dGxlIEVuZGlhbi5cblxuSG9sZCBvbiwgU3l6a2FsbGVyICpoYXMqIGEgYHBwYzY0bGVgIGluc3RhbmNlISBOb3cgd2UncmUgZ2V0dGluZyBzb21ld2hlcmUuIExldCBtZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBTeXprYWxsZXIncyBgcHBjNjRsZWAgaW5zdGFuY2UuIERvZXMgaXQgZW5hYmxlIGBJQk1WRVRIYD8gSSBkb24ndCBoYXZlIHRoZSBjb25maWcgZmlsZSBoYW5keSwgYnV0IGBJQk1WRVRIYCBpcyBhIHZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgcFNlcmllcy4gSGFuZyBvbi4uLlN5emthbGxlciB1c2VzIFFFTVUgZm9yIGBwcGM2NGxlYCwgYW5kIHRoZSBtYWNoaW5lIHR5cGUgaXMgYHBzZXJpZXNgISBUaGF0IG5haWxzIGl0ISBgSUJNVkVUSGAgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB0aGF0IFFFTVUgc2V0dXAuIFJpZ2h0LCBub3cgbGV0J3MgZGl2ZSBpbnRvIHRoYXQgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyOTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MTMuNTk2OTczMTFaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDYwMDM1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYz0xMTg3PXN0YXRpYyBpbnQgaWJtdmV0aF9zZW5kKHN0cnVjdCBpYm12ZXRoX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYzoxMjE1OnN0YXRpYyBpbnQgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jLTEyMTYtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jPTEyMzI9c3RhdGljIG5ldGRldl90eF90IGlibXZldGhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguYy0xMjQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmM6MTI0MTpcXHRpZiAoaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWQoc2tiLCBuZXRkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmMtMTI0Mi1cXHRcXHRnb3RvIG91dDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6MTkuNDAyOTgzNjIyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMjYxNjAwMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIGBpYm12ZXRoYCBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgaXQncyBjaGFuZ2luZyBob3cgdGhlIEV0aGVybmV0IGhlYWRlciBpcyBhY2Nlc3NlZCB3aXRoaW4gdGhlIGBpYm12ZXRoX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgbmV0d29yayBkZXZpY2UncyB0cmFuc21pdCBmdW5jdGlvbiAoYG5kb19zdGFydF94bWl0YCkuIFRoZSBjb2RlJ3MgZGVmaW5pdGVseSByZWFjaGFibGUgc2luY2UgaXQncyB0aGUgdHJhbnNtaXQgcGF0aC4gVGhlIGNoYW5nZSBpdHNlbGYgaXMgc3dpdGNoaW5nIGZyb20gYGV0aF9oZHIoc2tiKWAgdG8gYHNrYl9ldGhfaGRyKHNrYilgLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2U/XG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGZ1bmN0aW9ucy4gYGV0aF9oZHIoc2tiKWAgaXMgZXNzZW50aWFsbHkgYSBtYWNybyB0aGF0IHJldHVybnMgYChzdHJ1Y3QgZXRoaGRyICopc2tiX21hY19oZWFkZXIoc2tiKWAsIHdoZXJlYXMgYHNrYl9ldGhfaGRyKHNrYilgIHJldHVybnMgYChzdHJ1Y3QgZXRoaGRyICopc2tiLVx1MDAzZWRhdGFgLiBJbiB0aGUgY29udGV4dCBvZiBgbmRvX3N0YXJ0X3htaXRgLCBgc2tiLVx1MDAzZWRhdGFgIGNsZWFybHkgcG9pbnRzIHRvIHRoZSBFdGhlcm5ldCBoZWFkZXIuIFRoZSBwcm9ibGVtIEkgc2VlIGlzIHRoYXQgYHNrYl9tYWNfaGVhZGVyKHNrYilgIG1pZ2h0IG5vdCBhbHdheXMgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIGJ5IGFsbCBwYWNrZXQgZ2VuZXJhdG9ycy4gUGFja2V0IHNvY2tldHMsIEJQRiBwcm9ncmFtcywgb3IgbWF5YmUgZXZlbiBvdGhlciBhcmVhcyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBjb3VsZCBsZWF2ZSBpdCB1bnNldC4gSWYgYHNrYl9tYWNfaGVhZGVyKHNrYilgIGlzbid0IHNldCwgYGV0aF9oZHIoc2tiKWAgY291bGQgYmUgcmVhZGluZyBnYXJiYWdlIG1lbW9yeSwgb3Igd29yc2UsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLlxuXG5TbywgYnkgc3dpdGNoaW5nIHRvIGBza2JfZXRoX2hkcihza2IpYCwgd2UncmUgZ3VhcmFudGVlaW5nIHdlJ3JlIGFsd2F5cyBhY2Nlc3NpbmcgYHNrYi1cdTAwM2VkYXRhYCwgd2hpY2ggY29udGFpbnMgdGhlIEV0aGVybmV0IGhlYWRlciBpbiB0aGlzIGNvbnRleHQuIFRoaXMgZml4ZXMgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIGBza2JfbWFjX2hlYWRlcmAgaXNuJ3Qgc2V0LCB3aGljaCBjb3VsZCByZXN1bHQgaW4gZHJvcHBlZCBwYWNrZXRzIG9yIGV2ZW4gY3Jhc2hlcy4gVGhlcmVmb3JlLCBpdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSAqZ29vZCogZnVuY3Rpb25hbCBjaGFuZ2UuXG5cbk5vdywgYSBuYWdnaW5nIHRob3VnaHQuIFdoYXQgYWJvdXQgRFNBIHRhZ2dlcnM/IENvdWxkIHRoaXMgcGF0Y2ggYWZmZWN0IHRoZW0/IEFyZSB0aGV5IGV2ZW4gcmVhY2hhYmxlPyBFdmVuIGlmIGBkc2FfbG9vcGAgZG9lc24ndCBsZXQgdXMgY2hhbmdlIHRhZyBwcm90b2NvbHMsIG1heWJlIHRoZXJlJ3MgYW5vdGhlciB3YXkgdG8gdGVzdCB0aGVtLiBDYW4gSSBpbnN0YW50aWF0ZSBhIERTQSB0YWdnZXIgZGlyZWN0bHksIHNvbWVob3c/IE5vLCBEU0EgdGFnZ2VycyBhcmUgcGFydCBvZiB0aGUgRFNBIGNvcmUgdGhhdCBoYW5kbGVzIHRyYW5zbWl0L3JlY2VpdmUgb24gRFNBIG1hc3Rlci9zbGF2ZSBpbnRlcmZhY2VzLCBhbmQgdGhleSBhcmUgY2FsbGVkIGZyb20gdGhlcmUuIElzIHRoZXJlIGEgbW9jayBkcml2ZXIgdG8gdGVzdCB3aXRoPyBPa2F5LCBsZXQgbWUgcXVpY2tseSBnbGFuY2UgYXQgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3RvcnkgYWdhaW4uXG5cbk1heWJlIHNvbWV0aGluZyBsaWtlIGBiY21fc2YyYCBvciBgbXY4OGU2eHh4YCBjYW4gYmUgaW5zdGFudGlhdGVkIGluIFFFTVU/IEhtbSwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhvc2Ugc3dpdGNoZXMsIHdoaWNoIGlzIGEgcHJvYmxlbS4gQnV0LCB3YWl0LCBzeXprYWxsZXIgaGFzIHBhY2tldCBpbmplY3Rpb24uIEJ1dCwgdGhlIGRyaXZlciBuZWVkcyB0byBiZSBwcm9iZWQgZmlyc3QgdG8gbWFrZSBjb2RlIHBhdGhzIHJlYWNoYWJsZS4gT2theSwgbWF5YmUuLi4gc3l6a2FsbGVyICpjYW4qIHVzZSBgZHNhX2xvb3BgLiBDYW4gd2UgY29uZmlndXJlIGBkc2FfbG9vcGAgdG8gdXNlIGBLU1pgIG9yIGBPQ0VMT1RgIHRhZ3M/IE5vLCBpdCBsb29rcyBsaWtlIGBkc2FfbG9vcGAgcmV0dXJucyBgRFNBX1RBR19QUk9UT19OT05FYC4gVWdoLiBXaGF0IGFib3V0IGBuZXRkZXZzaW1gPyBOb3BlLCBubyBEU0Egc3VwcG9ydCBpbiBgbmV0ZGV2c2ltYC5cblxuU28sIHRoZSBEU0EgdGFnZ2VycyBhcmUgcHJvYmFibHkgdW5yZWFjaGFibGUgaW4gbXkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEhvd2V2ZXIsIGBpYm12ZXRoYCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBvbiBgcHBjNjRsZWAgUUVNVS4gU2luY2UgYGlibXZldGhgICppcyogcmVhY2hhYmxlLCB0aGUgcGF0Y2ggYXMgYSB3aG9sZSBpcyB3b3J0aCBmdXp6aW5nIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMuIEkgc2hvdWxkIGZvY3VzIG9uIGZ1enppbmcgYGlibXZldGhfc3RhcnRfeG1pdGAgYW5kIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDkyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjAwOjI5LjY2NDU4Nzg4N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTY2OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12ZXRoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTIxNSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTIxNTpcXHRzdGF0aWMgaW50IGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkKHN0cnVjdCBza19idWZmICpza2IsXFxuMTIxNjpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4xMjE3OlxcdHtcXG4xMjE4OlxcdFxcdHN0cnVjdCBldGhoZHIgKmV0aGVyX2hlYWRlcjtcXG4xMjE5OlxcdFxcdGludCByZXQgPSAwO1xcbjEyMjA6XFx0XFxuMTIyMTpcXHRcXHRldGhlcl9oZWFkZXIgPSBza2JfZXRoX2hkcihza2IpO1xcbjEyMjI6XFx0XFxuMTIyMzpcXHRcXHRpZiAoZXRoZXJfYWRkcl9lcXVhbChldGhlcl9oZWFkZXItXFx1MDAzZWhfZGVzdCwgbmV0ZGV2LVxcdTAwM2VkZXZfYWRkcikpIHtcXG4xMjI0OlxcdFxcdFxcdG5ldGRldl9kYmcobmV0ZGV2LCBcXFwidmV0aCBkb2Vzbid0IHN1cHBvcnQgbG9vcGJhY2sgcGFja2V0cywgZHJvcHBpbmcgcGFja2V0LlxcXFxuXFxcIik7XFxuMTIyNTpcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXN0YXRzLnR4X2Ryb3BwZWQrKztcXG4xMjI2OlxcdFxcdFxcdHJldCA9IC1FT1BOT1RTVVBQO1xcbjEyMjc6XFx0XFx0fVxcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRyZXR1cm4gcmV0O1xcbjEyMzA6XFx0fVxcbjEyMzE6XFx0XFxuMTIzMjpcXHRzdGF0aWMgbmV0ZGV2X3R4X3QgaWJtdmV0aF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuMTIzMzpcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbjEyMzQ6XFx0e1xcbjEyMzU6XFx0XFx0c3RydWN0IGlibXZldGhfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuMTIzNjpcXHRcXHR1bnNpZ25lZCBpbnQgZGVzY19mbGFncywgdG90YWxfYnl0ZXM7XFxuMTIzNzpcXHRcXHR1bmlvbiBpYm12ZXRoX2J1Zl9kZXNjIGRlc2M7XFxuMTIzODpcXHRcXHRpbnQgaSwgcXVldWVfbnVtID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuMTIzOTpcXHRcXHR1bnNpZ25lZCBsb25nIG1zcyA9IDA7XFxuMTI0MDpcXHRcXG4xMjQxOlxcdFxcdGlmIChpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZChza2IsIG5ldGRldikpXFxuMTI0MjpcXHRcXHRcXHRnb3RvIG91dDtcXG4xMjQzOlxcdFxcdC8qIHZldGggY2FuJ3QgY2hlY2tzdW0gb2ZmbG9hZCBVRFAgKi9cXG4xMjQ0OlxcdFxcdGlmIChza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDAyOjAwOjI5LjY2NjU2MDcwN1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDg5NDE1Mjc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgaWJtdmV0aGAgYW5kIERTQSBUYWdnZXJzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGFuYWx5emluZyB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIGl0LiBUaGUgbWFpbiBjaGFuZ2UgZm9jdXNlcyBvbiBzd2l0Y2hpbmcgZnJvbSBgZXRoX2hkcihza2IpYCB0byBgc2tiX2V0aF9oZHIoc2tiKWAgaW4gdGhlIHRyYW5zbWl0IHBhdGggb2YgYGlibXZldGhgIGFuZCBhIGNvdXBsZSBvZiBEU0EgdGFnZ2Vycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4IHRvIHByZXZlbnQgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMgb3IgbG9naWNhbCBlcnJvcnMgd2l0aCBwb3RlbnRpYWxseSBtYWxmb3JtZWQgcGFja2V0cy5cblxuRmlyc3QsIHRoZSBjb3JlIG1vZGlmaWVkIGZ1bmN0aW9uIGluIGBpYm12ZXRoYCBpcyBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgLiBJdCdzIHN0YXRpYywgc28gaXQgKnNlZW1zKiBsaWtlIHRoZSBsb2dpY2FsIGNob2ljZSBmb3IgYEZvY3VzU3ltYm9sc2AuIFRoZW4gSSB0aG91Z2h0LCB3YWl0LCB0aGUgYGlibXZldGhfc3RhcnRfeG1pdGAgZnVuY3Rpb24gaXMgYWxzbyBtb2RpZmllZC4gSXQncyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiwgdGhlIGRyaXZlcidzIGhvdC1wYXRoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhpcyBpcyAqZHJpdmVyKi1zcGVjaWZpYyB0aG91Z2gsIHNvIGxpc3RpbmcgaXQgKmNvdWxkKiBiZSBva2F5LiBVbHRpbWF0ZWx5LCBgaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRgIGlzIHRoZSBtb3JlIHRhcmdldGVkLCBncmFudWxhciBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeSBwYWNrZXQgdHJhbnNtaXR0ZWQsIG1ha2luZyBpdCBpZGVhbCBmb3IgY29uY2VudHJhdGluZyB0aGUgZnV6emVyJ3MgZWZmb3J0cyBvbiB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aCwgYW5kIGl0IHdpbGwgZW5zdXJlIHRoYXQgdGhlIGZ1enplciBoaXRzIHRoaXMgYXJlYSBvZiB0aGUgZHJpdmVyLlxuXG5OZXh0LCBJIGNvbnNpZGVyZWQgd2hldGhlciB0aGUgRFNBIHRhZ2dlcnMgYXJlIGV2ZW4gcmVhY2hhYmxlLiBJIGNoZWNrZWQgdGhlIEtjb25maWcgb3B0aW9ucywgYW5kIGJvdGggYE5FVF9EU0FfVEFHX0tTWmAgYW5kIGBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFgIGFyZSBhdmFpbGFibGUgdG8gYmUgZW5hYmxlZC4gSSBydWxlZCBvdXQgZGlyZWN0IHVzZXIgY3JlYXRpb24gdmlhIG5ldGxpbmssIG9yIGJ5IGNyZWF0aW5nIGEgc3dpdGNoIHdpdGggc3l6a2FsbGVyLCBidXQgZXZlbiB3aXRob3V0IGRpcmVjdCBhY2Nlc3MgdG8gY3JlYXRlIHRoZXNlIHRhZ2dlcnMsIGBpYm12ZXRoYCBpdHNlbGYgaXMgcmVhY2hhYmxlLiBTbyBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5JIGNvbmZpcm1lZCB0aGF0IGBJQk1WRVRIYCBkZXBlbmRzIG9uIGBQUENfUFNFUklFU2AuIFNvIEknbGwgZGVmaW5pdGVseSBlbmFibGUgYElCTVZFVEhgIGluIGBFbmFibGVDb25maWdzYC4gSnVzdCB0byBiZSBzYWZlIGFuZCBlbnN1cmUgdGhlIG1heGltdW0gY292ZXJhZ2UsIEknbGwgYWxzbyBlbmFibGUgYE5FVF9EU0FfVEFHX0tTWmAgYW5kIGBORVRfRFNBX1RBR19PQ0VMT1RfODAyMVFgLlxuXG5CYWNrIHRvIHRoZSBjb2RlOiBJIHZlcmlmaWVkIHRoYXQgdGhlIG1vZGlmaWNhdGlvbnMgaW4gdGhlIGBpYm12ZXRoYCBkcml2ZXIgd2VyZSBvbmx5IGluIGBpYm12ZXRoX2lzX3BhY2tldF91bnN1cHBvcnRlZGAuIFRoZW4sIEkgaWRlbnRpZmllZCBgbGFuOTM3eF94bWl0YCBhbmQgYG9jZWxvdF94bWl0YCBhcyB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkIHdpdGhpbiB0aGUgRFNBIHRhZ2dlciBzb3VyY2UgZmlsZXMuIFNpbmNlIHRoZXNlIGFyZSBhbHNvIGhvdC1wYXRoIGZ1bmN0aW9ucyAqZm9yIHRob3NlIHNwZWNpZmljIHRhZ2dlcnMqLCBsaXN0aW5nIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AgaXMganVzdGlmaWVkLlxuXG5TbywgaGVyZSdzIHdoYXQgSSdsbCBkbzogSSdsbCBmb2N1cyB0aGUgZnV6emVyIG9uIHRoZXNlIGtleSBzeW1ib2xzOlxuXG4qICAgYGlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkYFxuKiAgIGBsYW45Mzd4X3htaXRgXG4qICAgYG9jZWxvdF94bWl0YFxuXG5JIHJldmlld2VkIHRoZSBwYXRjaCBsb2dpYyBhbmQgY29uZmlybWVkIHRoYXQgcmVwbGFjaW5nIGBldGhfaGRyKHNrYilgIHdpdGggYHNrYl9ldGhfaGRyKHNrYilgIGlzIHRoZSBjb3JlIGNoYW5nZSwgd2hpY2ggc2hvdWxkIGltcHJvdmUgdGhlIHNhZmV0eSBhbmQgcm9idXN0bmVzcyBvZiBwYWNrZXQgdHJhbnNtaXNzaW9uLiBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCB0aGVzZSBzeW1ib2xzIGFyZSBjb3JyZWN0bHkgZGVmaW5lZCBpbiB0aGUgaW5jbHVkZXMuXG5cbkkgZG91YmxlLWNoZWNrZWQgdGhlIEtjb25maWcgc3ltYm9scyBhbmQgdGhlIGRyaXZlciBuYW1lLiBFdmVyeXRoaW5nIGxvb2tzIGdvb2QuIFRpbWUgdG8gc2V0IHRoZSByZXN1bHRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAzNiwiT3V0cHV0VG9rZW5zIjoyMjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDI6MDA6NDQuNTYwNzE2N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyODMzNjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJQk1WRVRIXCIsXG4gICAgXCJORVRfRFNBX1RBR19LU1pcIixcbiAgICBcIk5FVF9EU0FfVEFHX09DRUxPVF84MDIxUVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlibXZldGhfaXNfcGFja2V0X3Vuc3VwcG9ydGVkXCIsXG4gICAgXCJsYW45Mzd4X3htaXRcIixcbiAgICBcIm9jZWxvdF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgZXRoX2hkcihza2IpIHdpdGggc2tiX2V0aF9oZHIoc2tiKSBpbiB0aGUgVFggcGF0aCBvZiBpYm12ZXRoIGFuZCB0d28gRFNBIHRhZ2dlcnMuIGV0aF9oZHIoc2tiKSByZWxpZXMgb24gc2tiX21hY19oZWFkZXIoc2tiKSBiZWluZyBzZXQgY29ycmVjdGx5LCB3aGljaCBtaWdodCBub3QgYmUgdHJ1ZSBmb3IgcGFja2V0cyBpbmplY3RlZCB2aWEgcGFja2V0IHNvY2tldHMgb3IgQlBGLiBza2JfZXRoX2hkcihza2IpIHNhZmVseSB1c2VzIHNrYi1cXHUwMDNlZGF0YSBpbnN0ZWFkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBsb2dpY2FsIGJ1Z3Mgd2hlbiB0cmFuc21pdHRpbmcgcGFja2V0cy4gVGhlIGlibXZldGggZHJpdmVyIGlzIHJlYWNoYWJsZSBpbiBRRU1VIHBzZXJpZXMgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklCTVZFVEhcIixcbiAgICBcIk5FVF9EU0FfVEFHX0tTWlwiLFxuICAgIFwiTkVUX0RTQV9UQUdfT0NFTE9UXzgwMjFRXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWJtdmV0aF9pc19wYWNrZXRfdW5zdXBwb3J0ZWRcIixcbiAgICBcImxhbjkzN3hfeG1pdFwiLFxuICAgIFwib2NlbG90X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBldGhfaGRyKHNrYikgd2l0aCBza2JfZXRoX2hkcihza2IpIGluIHRoZSBUWCBwYXRoIG9mIGlibXZldGggYW5kIHR3byBEU0EgdGFnZ2Vycy4gZXRoX2hkcihza2IpIHJlbGllcyBvbiBza2JfbWFjX2hlYWRlcihza2IpIGJlaW5nIHNldCBjb3JyZWN0bHksIHdoaWNoIG1pZ2h0IG5vdCBiZSB0cnVlIGZvciBwYWNrZXRzIGluamVjdGVkIHZpYSBwYWNrZXQgc29ja2V0cyBvciBCUEYuIHNrYl9ldGhfaGRyKHNrYikgc2FmZWx5IHVzZXMgc2tiLVxcdTAwM2VkYXRhIGluc3RlYWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGxvZ2ljYWwgYnVncyB3aGVuIHRyYW5zbWl0dGluZyBwYWNrZXRzLiBUaGUgaWJtdmV0aCBkcml2ZXIgaXMgcmVhY2hhYmxlIGluIFFFTVUgcHNlcmllcyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[1] Phase: Succeeded StartedAt: 2026-07-14 02:00:57 +0000 UTC FinishedAt: 2026-07-14 02:00:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 02:00:57 +0000 UTC FinishedAt: 2026-07-14 02:00:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2] Phase: Succeeded StartedAt: 2026-07-14 02:00:57 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 02:00:58 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 02:00:58 +0000 UTC FinishedAt: 2026-07-14 02:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 02:00:58 +0000 UTC FinishedAt: 2026-07-14 02:01:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlmdtd/series-workflowlmdtd-convert-artifact-1542237873/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 02:02:21 +0000 UTC FinishedAt: 2026-07-14 02:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 02:02:21 +0000 UTC FinishedAt: 2026-07-14 02:41:49 +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:*36980ffb-ff6c-4846-9972-98610932b803,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-workflowlmdtd/series-workflowlmdtd-convert-artifact-1542237873/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": "37c86c4c-ca66-4d60-8e9a-6a4c742de157", "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-workflowlmdtd/series-workflowlmdtd-build-action-1809927391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 02:02:21 +0000 UTC FinishedAt: 2026-07-14 02:41:39 +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:*36980ffb-ff6c-4846-9972-98610932b803,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-workflowlmdtd/series-workflowlmdtd-convert-artifact-1542237873/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": "37c86c4c-ca66-4d60-8e9a-6a4c742de157", "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-workflowlmdtd/series-workflowlmdtd-build-action-1809927391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 02:41:49 +0000 UTC FinishedAt: 2026-07-14 02:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 02:41:49 +0000 UTC FinishedAt: 2026-07-14 02:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 02:41:49 +0000 UTC FinishedAt: 2026-07-14 02:41:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 02:41:49 +0000 UTC FinishedAt: 2026-07-14 02:41:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlmdtd/series-workflowlmdtd-convert-artifact-3680897796/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 02:41:59 +0000 UTC FinishedAt: 2026-07-14 02:43:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 02:41:59 +0000 UTC FinishedAt: 2026-07-14 02:43:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*37c86c4c-ca66-4d60-8e9a-6a4c742de157,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-workflowlmdtd/series-workflowlmdtd-build-action-1809927391/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-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 02:43:51 +0000 UTC FinishedAt: 2026-07-14 02:43:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 02:43:51 +0000 UTC FinishedAt: 2026-07-14 02:43:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 02:43:51 +0000 UTC FinishedAt: 2026-07-14 03:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 02:43:51 +0000 UTC FinishedAt: 2026-07-14 03:14:04 +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:*36980ffb-ff6c-4846-9972-98610932b803,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-workflowlmdtd/series-workflowlmdtd-convert-artifact-3680897796/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": "b123ba05-c96c-4833-a431-e54babe6a43c", "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-workflowlmdtd/series-workflowlmdtd-build-action-3166438672/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 02:43:51 +0000 UTC FinishedAt: 2026-07-14 03:13:54 +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:*36980ffb-ff6c-4846-9972-98610932b803,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-workflowlmdtd/series-workflowlmdtd-convert-artifact-3680897796/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": "b123ba05-c96c-4833-a431-e54babe6a43c", "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-workflowlmdtd/series-workflowlmdtd-build-action-3166438672/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 03:14:04 +0000 UTC FinishedAt: 2026-07-14 03:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 03:14:04 +0000 UTC FinishedAt: 2026-07-14 03:14:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 03:14:04 +0000 UTC FinishedAt: 2026-07-14 03:16:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 03:14:04 +0000 UTC FinishedAt: 2026-07-14 03:16:14 +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:*b123ba05-c96c-4833-a431-e54babe6a43c,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-workflowlmdtd/series-workflowlmdtd-build-action-3166438672/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-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +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":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"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:*37c86c4c-ca66-4d60-8e9a-6a4c742de157,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b123ba05-c96c-4833-a431-e54babe6a43c,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-workflowlmdtd/series-workflowlmdtd-build-action-1809927391/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-workflowlmdtd/series-workflowlmdtd-build-action-3166438672/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 03:16:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 03:16:32 +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":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"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-workflowlmdtd/series-workflowlmdtd-convert-artifact-2829269773/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 03:16:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 03:16:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 03:16:24 +0000 UTC FinishedAt: 2026-07-14 03:16:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 03:16:34 +0000 UTC FinishedAt: 2026-07-14 04:12:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlmdtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ibmveth_is_packet_unsupported","lan937x_xmit","ocelot_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IBMVETH","NET_DSA_TAG_KSZ","NET_DSA_TAG_OCELOT_8021Q"],"series_id":"a007da43-09fe-4f5c-80d4-698b64fd53e2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 03:16:34 +0000 UTC FinishedAt: 2026-07-14 04:12:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*37c86c4c-ca66-4d60-8e9a-6a4c742de157,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b123ba05-c96c-4833-a431-e54babe6a43c,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-workflowlmdtd/series-workflowlmdtd-build-action-1809927391/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-workflowlmdtd/series-workflowlmdtd-build-action-3166438672/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-workflowlmdtd/series-workflowlmdtd-convert-artifact-2829269773/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,}