Name: series-workflowcjvsc Phase: Failed StartedAt: 2026-08-04 18:05:29 +0000 UTC FinishedAt: 2026-08-04 18:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjvsc[0] Phase: Succeeded StartedAt: 2026-08-04 18:05:29 +0000 UTC FinishedAt: 2026-08-04 18:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjvsc[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 18:05:29 +0000 UTC FinishedAt: 2026-08-04 18:30:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBwZXJmb3JtcyBoYXJkd2FyZSByZWdpc3RlciBjaGVja3MgKGUuZy4sIHZlcmlmeWluZyB0aGUgUlRSIHJlZ2lzdGVyIHZhbHVlKSB0aGF0IHdpbGwgZmFpbCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNDA3MTg1MjlkYmFmOTk0OGM0ZmEwZmEyOTE2ZWQzNGMyYmRjZmMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxODoyOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZTk2NjU3OThjNGJlNi4uMDAwMDAwMDAwMDAwMFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSw1MCAmIzQzOzAsMCBAQFxuLSogV2l6bmV0IHc1eDAwXG4tXG4tVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuXG4tXG4tRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluXG4tdGhlIFNQSSBtYXN0ZXIgbm9kZS5cbi1cbi1SZXF1aXJlZCBwcm9wZXJ0aWVzOlxuLS0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6XG4tXHQgICAgICBcJiMzNDt3aXpuZXQsdzUxMDBcJiMzNDtcbi1cdCAgICAgIFwmIzM0O3dpem5ldCx3NTIwMFwmIzM0O1xuLVx0ICAgICAgXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7XG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZFxuLSAgICAgICAgICAgICAgdG8gYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseVxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXG4tICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC5cbi0tIHBpbmN0cmwtbmFtZXM6IExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXG4tICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nXG4tICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIGZyZXF1ZW5jeSBvZiB0aGUgU1BJIGJ1cyB3aGVuIGFjY2Vzc2luZyB0aGUgdzU1MDAuXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXG4tICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4tLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4tXG4tXG4tRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4tXG4tXHUwMDI2c3BpIHtcbi1cdGV0aGVybmV0QDA6IHc1NTAwQDAge1xuLVx0XHRjb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7O1xuLVx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuLVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi1cdFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2ZXRoMV9waW5zXHUwMDNlO1xuLVx0XHRpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbi1cdFx0aW50ZXJydXB0cyA9IFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1x1MDAzZTtcbi1cdFx0c3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MzMDAwMDAwMFx1MDAzZTtcbi1cdH07XG4tfTtcbi1cbi1cdTAwMjZncGlvIHtcbi1cdGV0aDFfcGluczogZXRoMV9waW5zIHtcbi1cdFx0YnJjbSxwaW5zID0gXHUwMDNjMjVcdTAwM2U7XG4tXHRcdGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwXHUwMDNlOyAvKiBpbiAqL1xuLVx0XHRicmNtLHB1bGwgPSBcdTAwM2MwXHUwMDNlOyAvKiBub25lICovXG4tXHR9O1xuLX07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZjQ1YTVkNzczZmUzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sXG5AQCAtMCwwICYjNDM7MSwxMDMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxuJiM0MztcbiYjNDM7ZGVzY3JpcHRpb246IHxcbiYjNDM7ICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cbiYjNDM7XG4mIzQzOyAgRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluIHRoZSBTUEkgbWFzdGVyIG5vZGUuXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtICRyZWY6IC9zY2hlbWFzL25ldC9ldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjXG4mIzQzOyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGVudW06XG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1MTAwXG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1MjAwXG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1NTAwXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG9cbiYjNDM7ICAgICAgYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseSBnZW5lcmF0ZXNcbiYjNDM7ICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxuJiM0MzsgICAgICBzaWduYWwuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uXG4mIzQzOyAgICBlbnVtOlxuJiM0MzsgICAgICAtIGRlZmF1bHRcbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHBpbmN0cmwtMDpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBMaXN0IG9mIHBoYW5kbGVzIHRvIGNvbmZpZ3VyZSB0aGUgR1BJTyBwaW4gdXNlZCBhcyBpbnRlcnJ1cHQgbGluZSwgc2VlXG4mIzQzOyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXG4mIzQzO1xuJiM0MzsgIHNwaS1tYXgtZnJlcXVlbmN5OlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvXG4mIzQzOyAgICAgIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLCBib2FyZFxuJiM0MzsgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4mIzQzOyAgICBtYXhpbXVtOiA4MDAwMDAwMFxuJiM0MztcbiYjNDM7ICBsaW5rLWdwaW9zOlxuJiM0MzsgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIGludGVycnVwdHNcbiYjNDM7ICAtIHBpbmN0cmwtbmFtZXNcbiYjNDM7ICAtIHBpbmN0cmwtMFxuJiM0MztcbiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xuJiM0MztcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIHNwaSB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XG4mIzQzOyAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2ZXRoMV9waW5zXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1x1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgc3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MzMDAwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgbGluay1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFsgYTAgYjAgYzAgZDAgZTAgZjAgXTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7XG4mIzQzOyAgICBcdTAwMjZncGlvIHtcbiYjNDM7ICAgICAgZXRoMV9waW5zOiBldGgxX3BpbnMge1xuJiM0MzsgICAgICAgIGJyY20scGlucyA9IFx1MDAzYzI1IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgYnJjbSxmdW5jdGlvbiA9IFx1MDAzYzAgMFx1MDAzZTsgLyogaW4gKi9cbiYjNDM7ICAgICAgICBicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xuaW5kZXggNTNkOGRjNjQyZmJkNi4uMTQxMGE5ZmNmYTkyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xuQEAgLTIyLDYgJiM0MzsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3c1MTAwLmhcJiMzNDtcbiBcbkBAIC0xNTQsNiAmIzQzOzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xuIFxuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbkBAIC00MTQsNiAmIzQzOzQxNiwxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0c2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pXG4mIzQzO1x0XHRyZXR1cm4gISFncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICYjNDM7NjI4LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuJiM0MztcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4mIzQzO1x0XHRpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XG4mIzQzO1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCYjMzQ7bGluayBpcyB1cFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFwmIzM0O2xpbmsgaXMgZG93blxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuQEAgLTY1OSw2ICYjNDM7Njg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjc4LDYgJiM0Mzs3MTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbiYjNDM7XHQuZ2V0X2xpbmtcdFx0PSB3NTEwMF9nZXRfbGluayxcbiBcdC5nZXRfcmVnc19sZW5cdFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXG4gXHQuZ2V0X3JlZ3NcdFx0PSB3NTEwMF9nZXRfcmVncyxcbiB9O1xuQEAgLTc1MSw2ICYjNDM7NzkwLDEzIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHByaXYtXHUwMDNlaXJxID0gaXJxO1xuJiM0MztcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcJiMzNDtsaW5rXCYjMzQ7LCBHUElPRF9JTik7XG4mIzQzO1x0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbiYjNDM7XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXG5cJiMzNDspO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xuJiM0MztcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4mIzQzO1x0fVxuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcbkBAIC04MDMsOCAmIzQzOzg0OSwyOSBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9odztcbiBcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGludCBsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVx1MDAzZWxpbmtfZ3Bpbyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGxpbmtfaXJxIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBsaW5rX2lycSxcbiYjNDM7XHRcdFx0XHRcdCAgICBcJiMzNDtObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBlcnJfZ3BpbztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgbGlua19pcnEsIE5VTEwsXG4mIzQzO1x0XHRcdFx0XHRcdHc1MTAwX2RldGVjdF9saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRJUlFGX1RSSUdHRVJfUklTSU5HIHxcbiYjNDM7XHRcdFx0XHRcdFx0SVJRRl9UUklHR0VSX0ZBTExJTkcgfFxuJiM0MztcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsXG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O3c1MTAwLWxpbmtcJiMzNDssIHByaXYtXHUwMDNlbmRldik7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRnb3RvIGVycl9ncGlvO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiYjNDM7ZXJyX2dwaW86XG4mIzQzO1x0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuIGVycl9odzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXHUwMDNleGZlcl93cSk7XG4gZXJyX3dxOlxuQEAgLTg1Nyw2ICYjNDM7OTI0LDEwIEBAIHN0YXRpYyBpbnQgdzUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XG4gXG4gXHRcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuJiM0MztcdFx0ICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMClcbiYjNDM7XHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBTUEkgRXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgYSBsaW5rIEdQSU8uIFRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgU1BJIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0MDcxODUyOWRiYWY5OTQ4YzRmYTBmYTI5MTZlZDM0YzJiZGNmYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjI5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTY2NTc5OGM0YmU2Li4wMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDUwICYjNDM7MCwwIEBACi0qIFdpem5ldCB3NXgwMAotCi1UaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS4KLQotRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluCi10aGUgU1BJIG1hc3RlciBub2RlLgotCi1SZXF1aXJlZCBwcm9wZXJ0aWVzOgotLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLQkgICAgICAmIzM0O3dpem5ldCx3NTEwMCYjMzQ7Ci0JICAgICAgJiMzNDt3aXpuZXQsdzUyMDAmIzM0OwotCSAgICAgICYjMzQ7d2l6bmV0LHc1NTAwJiMzNDsKLS0gcmVnOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uCi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZAotICAgICAgICAgICAgICB0byBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5Ci0gICAgICAgICAgICAgIGdlbmVyYXRlcyBmYWxsaW5nIGVkZ2UgaW50ZXJydXB0cywgaG93ZXZlciwgYWRkaXRpb25hbCBib2FyZCBsb2dpYwotICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC4KLS0gcGluY3RybC1uYW1lczogTGlzdCBvZiBhc3NpZ25lZCBzdGF0ZSBuYW1lcywgc2VlIHBpbmN0cmwgYmluZGluZyBkb2N1bWVudGF0aW9uLgotLSBwaW5jdHJsLTA6IExpc3Qgb2YgcGhhbmRsZXMgdG8gY29uZmlndXJlIHRoZSBHUElPIHBpbiB1c2VkIGFzIGludGVycnVwdCBsaW5lLAotICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nCi0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi4KLQotT3B0aW9uYWwgcHJvcGVydGllczoKLS0gc3BpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4KLSAgQWNjb3JkaW5nIHRvIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLAotICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuCi0tIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLQotCi1FeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKToKLQotJmFtcDtzcGkgewotCWV0aGVybmV0QDA6IHc1NTAwQDAgewotCQljb21wYXRpYmxlID0gJiMzNDt3aXpuZXQsdzU1MDAmIzM0OzsKLQkJcmVnID0gJmx0OzAmZ3Q7OwotCQlwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7Ci0JCXBpbmN0cmwtMCA9ICZsdDsmYW1wO2V0aDFfcGlucyZndDs7Ci0JCWludGVycnVwdC1wYXJlbnQgPSAmbHQ7JmFtcDtncGlvJmd0OzsKLQkJaW50ZXJydXB0cyA9ICZsdDsyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkcmZ3Q7OwotCQlzcGktbWF4LWZyZXF1ZW5jeSA9ICZsdDszMDAwMDAwMCZndDs7Ci0JfTsKLX07Ci0KLSZhbXA7Z3BpbyB7Ci0JZXRoMV9waW5zOiBldGgxX3BpbnMgewotCQlicmNtLHBpbnMgPSAmbHQ7MjUmZ3Q7OwotCQlicmNtLGZ1bmN0aW9uID0gJmx0OzAmZ3Q7OyAvKiBpbiAqLwotCQlicmNtLHB1bGwgPSAmbHQ7MCZndDs7IC8qIG5vbmUgKi8KLQl9OwotfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNDVhNWQ3NzNmZTMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sCkBAIC0wLDAgJiM0MzsxLDEwMyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBXaXpuZXQgdzV4MDAgU1BJIEV0aGVybmV0IENvbnRyb2xsZXIKJiM0MzsKJiM0MztkZXNjcmlwdGlvbjogfAomIzQzOyAgVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuCiYjNDM7CiYjNDM7ICBGb3IgZWFjaCBkZXZpY2UgY29ubmVjdGVkIHRvIGEgU1BJIGJ1cywgZGVmaW5lIGEgY2hpbGQgbm9kZSB3aXRoaW4gdGhlIFNQSSBtYXN0ZXIgbm9kZS4KJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gJHJlZjogL3NjaGVtYXMvbmV0L2V0aGVybmV0LWNvbnRyb2xsZXIueWFtbCMKJiM0MzsgIC0gJHJlZjogL3NjaGVtYXMvc3BpL3NwaS1wZXJpcGhlcmFsLXByb3BzLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGVudW06CiYjNDM7ICAgICAgLSB3aXpuZXQsdzUxMDAKJiM0MzsgICAgICAtIHdpem5ldCx3NTIwMAomIzQzOyAgICAgIC0gd2l6bmV0LHc1NTAwCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG8KJiM0MzsgICAgICBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5IGdlbmVyYXRlcwomIzQzOyAgICAgIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljIG1pZ2h0IGludmVydCB0aGUKJiM0MzsgICAgICBzaWduYWwuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBwaW5jdHJsLW5hbWVzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uCiYjNDM7ICAgIGVudW06CiYjNDM7ICAgICAgLSBkZWZhdWx0CiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBwaW5jdHJsLTA6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIExpc3Qgb2YgcGhhbmRsZXMgdG8gY29uZmlndXJlIHRoZSBHUElPIHBpbiB1c2VkIGFzIGludGVycnVwdCBsaW5lLCBzZWUKJiM0MzsgICAgICBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBsb2NhbC1tYWMtYWRkcmVzczogdHJ1ZQomIzQzOwomIzQzOyAgc3BpLW1heC1mcmVxdWVuY3k6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvCiYjNDM7ICAgICAgdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsIGJvYXJkCiYjNDM7ICAgICAgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLgomIzQzOyAgICBtYXhpbXVtOiA4MDAwMDAwMAomIzQzOwomIzQzOyAgbGluay1ncGlvczoKJiM0MzsgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIGludGVycnVwdHMKJiM0MzsgIC0gcGluY3RybC1uYW1lcwomIzQzOyAgLSBwaW5jdHJsLTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgLyogRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSkgKi8KJiM0MzsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHNwaSB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7CiYjNDM7ICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3dpem5ldCx3NTUwMCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7ICAgICAgICAgICAgcGluY3RybC0wID0gJmx0OyZhbXA7ZXRoMV9waW5zJmd0OzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbyZndDs7CiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9ICZsdDsyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkcmZ3Q7OwomIzQzOyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gJmx0OzMwMDAwMDAwJmd0OzsKJiM0MzsgICAgICAgICAgICBsaW5rLWdwaW9zID0gJmx0OyZhbXA7Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWyBhMCBiMCBjMCBkMCBlMCBmMCBdOwomIzQzOyAgICAgICAgfTsKJiM0MzsgICAgfTsKJiM0MzsKJiM0MzsgICAgJmFtcDtncGlvIHsKJiM0MzsgICAgICBldGgxX3BpbnM6IGV0aDFfcGlucyB7CiYjNDM7ICAgICAgICBicmNtLHBpbnMgPSAmbHQ7MjUgNCZndDs7CiYjNDM7ICAgICAgICBicmNtLGZ1bmN0aW9uID0gJmx0OzAgMCZndDs7IC8qIGluICovCiYjNDM7ICAgICAgICBicmNtLHB1bGwgPSAmbHQ7MCAwJmd0OzsgLyogbm9uZSAqLwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwppbmRleCA1M2Q4ZGM2NDJmYmQ2Li4xNDEwYTlmY2ZhOTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwpAQCAtMjIsNiAmIzQzOzIyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pb3BvcnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcnEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3c1MTAwLmgmIzM0OwogCkBAIC0xNTQsNiAmIzQzOzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHsKIAl1MTYgczBfcnhfYnVmX3NpemU7CiAKIAlpbnQgaXJxOwomIzQzOwlzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87CiAKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKQEAgLTQxNCw2ICYjNDM7NDE2LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKQomIzQzOwkJcmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3Bpbyk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CkBAIC02MTYsNiAmIzQzOzYyOCwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCiYjNDM7c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7CiYjNDM7CXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkgewomIzQzOwkJCW5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgJiMzNDtsaW5rIGlzIHVwXG4mIzM0Oyk7CiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJbmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCAmIzM0O2xpbmsgaXMgZG93blxuJiMzNDspOwomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdiwKQEAgLTY1OSw2ICYjNDM7Njg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAl3NTEwMF9od19zdGFydChwcml2KTsKIAluYXBpX2VuYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwogCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkKJiM0MzsJCQluZXRpZl9jYXJyaWVyX29uKG5kZXYpOwomIzQzOwkJZWxzZQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTY3OCw2ICYjNDM7NzE2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gdzUxMDBfZ2V0X2RydmluZm8sCiAJLmdldF9tc2dsZXZlbAkJPSB3NTEwMF9nZXRfbXNnbGV2ZWwsCiAJLnNldF9tc2dsZXZlbAkJPSB3NTEwMF9zZXRfbXNnbGV2ZWwsCiYjNDM7CS5nZXRfbGluawkJPSB3NTEwMF9nZXRfbGluaywKIAkuZ2V0X3JlZ3NfbGVuCQk9IHc1MTAwX2dldF9yZWdzX2xlbiwKIAkuZ2V0X3JlZ3MJCT0gdzUxMDBfZ2V0X3JlZ3MsCiB9OwpAQCAtNzUxLDYgJiM0Mzs3OTAsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCXByaXYtJmd0O25kZXYgPSBuZGV2OwogCXByaXYtJmd0O29wcyA9IG9wczsKIAlwcml2LSZndDtpcnEgPSBpcnE7CiYjNDM7CXByaXYtJmd0O2xpbmtfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgJiMzNDtsaW5rJiMzNDssIEdQSU9EX0lOKTsKJiM0MzsJaWYgKElTX0VSUihwcml2LSZndDtsaW5rX2dwaW8pKSB7CiYjNDM7CQllcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LSZndDtsaW5rX2dwaW8pLAomIzQzOwkJCQkgICAgJiMzNDtmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xuJiMzNDspOwomIzQzOwkJcHJpdi0mZ3Q7bGlua19ncGlvID0gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX3JlZ2lzdGVyOwomIzQzOwl9CiAKIAluZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt3NTEwMF9uZXRkZXZfb3BzOwogCW5kZXYtJmd0O2V0aHRvb2xfb3BzID0gJmFtcDt3NTEwMF9ldGh0b29sX29wczsKQEAgLTgwMyw4ICYjNDM7ODQ5LDI5IEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcywKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9odzsKIAomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpbnQgbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi0mZ3Q7bGlua19ncGlvKTsKJiM0MzsKJiM0MzsJCWlmIChsaW5rX2lycSAmbHQ7IDApIHsKJiM0MzsJCQllcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgbGlua19pcnEsCiYjNDM7CQkJCQkgICAgJiMzNDtObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXG4mIzM0Oyk7CiYjNDM7CQkJZ290byBlcnJfZ3BpbzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBsaW5rX2lycSwgTlVMTCwKJiM0MzsJCQkJCQl3NTEwMF9kZXRlY3RfbGluaywKJiM0MzsJCQkJCQlJUlFGX1RSSUdHRVJfUklTSU5HIHwKJiM0MzsJCQkJCQlJUlFGX1RSSUdHRVJfRkFMTElORyB8CiYjNDM7CQkJCQkJSVJRRl9PTkVTSE9ULAomIzQzOwkJCQkJCSYjMzQ7dzUxMDAtbGluayYjMzQ7LCBwcml2LSZndDtuZGV2KTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKQomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIAomIzQzO2Vycl9ncGlvOgomIzQzOwlmcmVlX2lycShwcml2LSZndDtpcnEsIG5kZXYpOwogZXJyX2h3OgogCWRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtJmd0O3hmZXJfd3EpOwogZXJyX3dxOgpAQCAtODU3LDYgJiM0Mzs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCQl3NTEwMF9od19zdGFydChwcml2KTsKIAogCQluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwomIzQzOwomIzQzOwkJaWYgKCFwcml2LSZndDtsaW5rX2dwaW8gfHwKJiM0MzsJCSAgICBncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi0mZ3Q7bGlua19ncGlvKSAhPSAwKQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb24obmRldik7CiAJfQogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDQwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFdpem5ldCBXNTEwMCBMaW5rIEdQSU8gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCBhZGRzIGEgYGxpbmstZ3Bpb3NgIGVudHJ5IHRvIHRoZSBXNTEwMCBFdGhlcm5ldCBkcml2ZXImIzM5O3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ29pbmcgdG8gdXNlIHRoaXMgR1BJTyB0byBtb25pdG9yIHRoZSBsaW5rIHN0YXR1cyBhbmQgdXBkYXRlIHRoZSBjYXJyaWVyIHN0YXRlIGluIGB3NTEwMC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKVGhpcyBkcml2ZXIgdGFyZ2V0cyB0aG9zZSBXaXpuZXQgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXJzIOKAkyB0aGUgVzUxMDAsIFc1MjAwLCBhbmQgVzU1MDAuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuICplYXNpbHkqIGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBTdGFuZGFyZCBRRU1VIHNldHVwcyB0eXBpY2FsbHkgZG9uJiMzOTt0IHJlYWRpbHkgZXhwb3NlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRob3V0IGEgbG90IG9mIHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gU1BJIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSB0b3VnaCB0byBnZXQgYXQgZm9yIGZ1enppbmcgd2l0aG91dCBhIGxvdCBvZiBleHRyYSB3b3JrLgoKSG1tLi4uIGlzIHRoZXJlIGEgd29ya2Fyb3VuZCB0byBmdXp6IFNQSSBkZXZpY2VzPyBJIHNlZW0gdG8gcmVjYWxsIHN5emthbGxlciBoYXMgc29tZSBTUEkgc3VwcG9ydCwgbWF5YmUgdGhyb3VnaCBgc3BpZGV2YCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IGdldHRpbmcgKnNwZWNpZmljKiBTUEkgRXRoZXJuZXQgY29udHJvbGxlciBmdXp6aW5nIHRvIHdvcmsgaXMgdXN1YWxseSBkaWZmaWN1bHQgdW5sZXNzIGl0JiMzOTtzIGJlZW4gZXhwbGljaXRseSBzZXQgdXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBoYXMgYW55IGJ1aWx0LWluIHN1cHBvcnQgZm9yIHdpem5ldC4gSSYjMzk7bSBnb2luZyB0byBydW4gYSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgc2VhcmNoIGFuZCBsb29rIGZvciAmIzM0O3dpem5ldCYjMzQ7IG9yICYjMzQ7dzUxMDAmIzM0OyBpbiB0aGUga2VybmVsIHNvdXJjZS4gVGhhdCBzaG91bGQgdGVsbCBtZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXhpc3RpbmcgZ3JvdW5kd29yayB0byBsZXZlcmFnZS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbD0xOD1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtMjAtICAgIGVudW06XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIxOiAgICAgIC0gd2l6bmV0LHc1MTAwXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTIyLSAgICAgIC0gd2l6bmV0LHc1MjAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnLTI5LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZzozMDpcdCAgd2lsbCBiZSBjYWxsZWQgdzUxMDAuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICYjNDM7PSB3NTEwMC5vIHc1MTAwLXNwaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjIxOiNpbmNsdWRlIFwmIzM0O3c1MTAwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkMTYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NTE6XHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU0LVx0ZGF0YSA9IHJldCBcdTAwM2NcdTAwM2MgODtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcdHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIgJiM0MzsgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjYwOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlMTYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY0Olx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXHUwMDNlXHUwMDNlIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6Njg6XHRyZXR1cm4gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIgJiM0MzsgMSwgZGF0YSBcdTAwMjYgMHhmZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjcxOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3JlYWRidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cdFx0XHQgICAgICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcdFx0aW50IHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjg3OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXHRcdFx0ICAgICAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTkyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlx0XHRpbnQgcmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIgJiM0MzsgaSwgYnVmW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy05NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTEwMF9zcGlfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cdC5tYXlfc2xlZXAgPSB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwNC1cdC5jaGlwX2lkID0gVzUxMDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA1Olx0LnJlYWQgPSB3NTEwMF9zcGlfcmVhZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XHQud3JpdGUgPSB3NTEwMF9zcGlfd3JpdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA3Olx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA4Olx0LndyaXRlMTYgPSB3NTEwMF9zcGlfd3JpdGUxNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XHQucmVhZGJ1bGsgPSB3NTEwMF9zcGlfcmVhZGJ1bGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTEwOlx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTExLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMjYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEyNzpcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMjgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjQ0LVx0Lm1heV9zbGVlcCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTI3MD1zdGF0aWMgc3RydWN0IHc1NTAwX3NwaV9wcml2ICp3NTUwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNzMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0zNzI9c3RhdGljIGludCB3NTUwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQwMTpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTUwMF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAyLVx0Lm1heV9zbGVlcCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1MTAwXCYjMzQ7LCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTEwMCwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTUtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1MjAwXCYjMzQ7LCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTIwMCwgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDE4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHc1MTAwX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDIxOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDIyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XHRjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDI0LVx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQzNy1cdGNhc2UgVzUxMDA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDM4Olx0XHRvcHMgPSBcdTAwMjZ3NTEwMF9zcGlfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQzOS1cdFx0cHJpdl9zaXplID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTY6c3RhdGljIHZvaWQgdzUxMDBfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDU4Olx0dzUxMDBfcmVtb3ZlKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2MTpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgdzUxMDBfc3BpX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2MjpcdHsgXCYjMzQ7dzUxMDBcJiMzNDssIFc1MTAwIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVx0eyBcJiMzNDt3NTIwMFwmIzM0OywgVzUyMDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY5OnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciB3NTEwMF9zcGlfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cdC5kcml2ZXJcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcxOlx0XHQubmFtZVx0PSBcJiMzNDt3NTEwMFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzI6XHRcdC5wbVx0PSBcdTAwMjZ3NTEwMF9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlx0XHQub2ZfbWF0Y2hfdGFibGUgPSB3NTEwMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NTpcdC5wcm9iZVx0XHQ9IHc1MTAwX3NwaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XHQucmVtb3ZlXHRcdD0gdzUxMDBfc3BpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Nzc6XHQuaWRfdGFibGVcdD0gdzUxMDBfc3BpX2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Nzk6bW9kdWxlX3NwaV9kcml2ZXIodzUxMDBfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyOTojZGVmaW5lIERSVl9OQU1FXHRcJiMzNDt3NTEwMFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAtI2RlZmluZSBEUlZfVkVSU0lPTlx0XCYjMzQ7MjAxMi0wNC0wNFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE0NjpcdGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzM6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTc4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODM6c3RhdGljIGludCB3NTEwMF9yZWFkMTYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODg6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE5MzpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWxrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggKmJ1ZiwgaW50IGxlbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTk4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGVidWxrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OS1cdFx0XHQgICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNDpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyMDpcdHJldCA9IHc1MTAwX3JlYWRidWxrKHByaXYsIGFkZHIsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMS1cdGlmIChyZXQgfHwgIXJlbWFpbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjQ6XHRyZXR1cm4gdzUxMDBfcmVhZGJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgJiM0MzsgbGVuLCByZW1haW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyNzpzdGF0aWMgaW50IHc1MTAwX3dyaXRlYnVmKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MTYgb2Zmc2V0LCBjb25zdCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI4LVx0XHRcdCAgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNDQ6XHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ1LVx0aWYgKHJldCB8fCAhcmVtYWluKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0ODpcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgJiM0MzsgbGVuLCByZW1haW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1MTpzdGF0aWMgaW50IHc1MTAwX3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTY6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9NUiwgTVJfUlNUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ny1cdG1kZWxheSg1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1ODpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX01SLCBNUl9QQik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjYzOnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjY3Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfUzBfQ1IocHJpdiksIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcxOlx0d2hpbGUgKHc1MTAwX3JlYWQocHJpdiwgVzUxMDBfUzBfQ1IocHJpdikpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI3Mi1cdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjgwOnN0YXRpYyB2b2lkIHc1MTAwX3dyaXRlX21hY2FkZHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4NDpcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVx1MDAzZWRldl9hZGRyLCBFVEhfQUxFTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg3OnN0YXRpYyB2b2lkIHc1MTAwX3NvY2tldF9pbnRyX21hc2soc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHU4IG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI5NjpcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk5OnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwMTpcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNDpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzA2Olx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDk6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzEzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTQ6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1RNU1IsIDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxODpzdGF0aWMgdm9pZCB3NTIwMF9tZW1vcnlfY29uZmlndXJlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMyNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1JYTUVNX1NJWkUoMCksIDB4MTApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjgtXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyA4OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI5Olx0XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMzMDpcdFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzM0OnN0YXRpYyB2b2lkIHc1NTAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0MC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQxOlx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NC1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIDg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDU6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ2Olx0XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTA6c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU0Olx0dzUxMDBfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTY6XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTc6XHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MC1cdGNhc2UgVzUxMDA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNjE6XHRcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNjItXHRcdHJ0ciA9IFc1MTAwX1JUUjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNzY6XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM4MjpzdGF0aWMgdm9pZCB3NTEwMF9od19zdGFydChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzkzOlx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfUzBfTVIocHJpdiksIG1vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk0Olx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM5NTpcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM5ODpzdGF0aWMgdm9pZCB3NTEwMF9od19jbG9zZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDA6XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX0NMT1NFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDEwOnN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDExLVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDE5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDIxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Mjk6c3RhdGljIHUzMiB3NTEwMF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MzY6c3RhdGljIHZvaWQgdzUxMDBfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDM4Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDM6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NDQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ0ODpzdGF0aWMgdm9pZCB3NTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0OS1cdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDUxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1My1cdHJlZ3MtXHUwMDNldmVyc2lvbiA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTQ6XHR3NTEwMF9yZWFkYnVsayhwcml2LCBXNTEwMF9DT01NT05fUkVHUywgYnVmLCBXNTEwMF9DT01NT05fUkVHU19MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU1LVx0YnVmICYjNDM7PSBXNTEwMF9DT01NT05fUkVHU19MRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTY6XHR3NTEwMF9yZWFkYnVsayhwcml2LCBTMF9SRUdTKHByaXYpLCBidWYsIFc1MTAwX1MwX1JFR1NfTEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTk6c3RhdGljIHZvaWQgdzUxMDBfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjE6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYzLVx0bmV0aWZfc3RvcF9xdWV1ZShuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NDpcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDY1Olx0dzUxMDBfaHdfc3RhcnQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjYtXHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDcxOnN0YXRpYyB2b2lkIHc1MTAwX3Jlc3RhcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDczOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzQtXHRcdFx0XHRcdCAgICAgICByZXN0YXJ0X3dvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc2Olx0dzUxMDBfcmVzdGFydChwcml2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3OTpzdGF0aWMgdm9pZCB3NTEwMF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODE6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4NS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ4NjpcdFx0dzUxMDBfcmVzdGFydChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODk6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5MTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTItXHR1MTYgb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk0Olx0b2Zmc2V0ID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcdHc1MTAwX3dyaXRlYnVmKHByaXYsIG9mZnNldCwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk2Olx0dzUxMDBfd3JpdGUxNihwcml2LCBXNTEwMF9TMF9UWF9XUihwcml2KSwgb2Zmc2V0ICYjNDM7IHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk3LVx0bmRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyAmIzQzOz0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MDE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNDpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MDY6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwNy1cdFx0XHRcdFx0ICAgICAgIHR4X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxMy1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE0Olx0dzUxMDBfdHhfc2tiKHByaXYtXHUwMDNlbmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTc6c3RhdGljIG5ldGRldl90eF90IHc1MTAwX3N0YXJ0X3R4KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxOTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTI3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyODpcdFx0dzUxMDBfdHhfc2tiKG5kZXYsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTM0OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdzUxMDBfcnhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0MC1cdHU4IGhlYWRlclsyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU0MTpcdHUxNiByeF9idWZfbGVuID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1JYX1JTUihwcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ2Olx0b2Zmc2V0ID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU0NzpcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQ4LVx0cnhfbGVuID0gZ2V0X3VuYWxpZ25lZF9iZTE2KGhlYWRlcikgLSAyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1MS1cdGlmICh1bmxpa2VseSghc2tiKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUyOlx0XHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgJiM0MzsgcnhfYnVmX2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTM6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfUkVDVik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTQtXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTU4LVx0c2tiX3B1dChza2IsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTk6XHR3NTEwMF9yZWFkYnVmKHByaXYsIG9mZnNldCAmIzQzOyAyLCBza2ItXHUwMDNlZGF0YSwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCAmIzQzOyAyICYjNDM7IHJ4X2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTYyLVx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzA6c3RhdGljIHZvaWQgdzUxMDBfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzMtXHRcdFx0XHRcdCAgICAgICByeF93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzY6XHR3aGlsZSAoKHNrYiA9IHc1MTAwX3J4X3NrYihwcml2LVx1MDAzZW5kZXYpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Ny1cdFx0bmV0aWZfcngoc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3OTpcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MjpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg0Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg1LVx0aW50IHJ4X2NvdW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4Ny1cdGZvciAocnhfY291bnQgPSAwOyByeF9jb3VudCBcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4ODpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHc1MTAwX3J4X3NrYihwcml2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU5Ny1cdFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4X2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU5ODpcdFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA0OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MDc6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA5Olx0aW50IGlyID0gdzUxMDBfcmVhZChwcml2LCBXNTEwMF9TMF9JUihwcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTAtXHRpZiAoIWlyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjExLVx0XHRyZXR1cm4gSVJRX05PTkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MTI6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxOS1cdGlmIChpciBcdTAwMjYgUzBfSVJfUkVDVikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIwOlx0XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMxOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMy1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYzNDpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjQ5OnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1MTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUyLVx0XHRcdFx0XHQgICAgICAgc2V0cnhfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTQ6XHR3NTEwMF9od19zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1NS19XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ0NgoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFc1MTAwIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgIGRyaXZlci4gVGhpcyBpcyBmb3IgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycywgcmlnaHQ/IFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBgbGlua19ncGlvYCB3aGljaCwgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgbWVhbnMgaXQmIzM5O3MgcmVxdWVzdGluZyBhIEdQSU8gcGluLCBhbmQgcmVnaXN0ZXJpbmcgYW4gaW50ZXJydXB0IGZvciBpdCB0byBtb25pdG9yIHRoZSBsaW5rIHN0YXRlLiBNYWtlcyBzZW5zZS4gR1BJTyBmb3IgbGluayBzdGF0ZSBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIHdpbGwgdGhpcyBldmVuIGJlIGhpdCBpbiBRRU1VPyBUaGVzZSBTUEkgZGV2aWNlcywgZ2VuZXJhbGx5LCB5b3UmIzM5O2QgY29uZmlndXJlIHRoZW0gdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgdG91Y2ggU1BJIEV0aGVybmV0IGNvbnRyb2xsZXJzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHNldHVwIGZvciB0aGVtLiBCdXQgd2FpdC4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgKmhhdmUqIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydCBmb3IgU1BJPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgdGhhdC4gT2theSwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHRvIGluc3RhbnRpYXRlIGEgV2l6bmV0IGRldmljZSBpbiBpdHMgY29uZmlndXJhdGlvbnMuIFdlIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHdpem5ldCBvciBTUEkuIFRoYXQmIzM5O2xsIHRlbGwgdXMgaWYgd2UmIzM5O3JlIGV2ZW4gdGVzdGluZyB0aGlzIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aXpuZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9MTg9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTIwLSAgICBlbnVtOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMTogICAgICAtIHdpem5ldCx3NTEwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMjogICAgICAtIHdpem5ldCx3NTIwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMzogICAgICAtIHdpem5ldCx3NTUwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yNC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sPTc0PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtODUtICAgICAgICBldGhlcm5ldEAwOiB3NTUwMEAwIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw6ODY6ICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzU1MDBcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTg3LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZz0xODg9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxODk6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE5MC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZT0xMDE9b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfV0FOR1hVTikgJiM0Mzs9IHdhbmd4dW4vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZToxMDI6b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfV0laTkVUKSAmIzQzOz0gd2l6bmV0L1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUtMTAzLW9iai0kKENPTkZJR19ORVRfVkVORE9SX1hJTElOWCkgJiM0Mzs9IHhpbGlueC9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNy0gKiBEYXRhc2hlZXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODogKiBodHRwOi8vd3d3Lndpem5ldC5jby5rci93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MTAwL0RvY3VtZW50L1c1MTAwX0RhdGFzaGVldF92MS4yLjYucGRmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6OTogKiBodHRwOi8vd2l6bmV0aG9tZS5jYWZlMjQuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy93aXpuZXRob21lL0NoaXAvVzUyMDAvRG9jdW1lbnRzL1c1MjAwX0RTX1YxNDBFLnBkZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwLSAqIGh0dHA6Ly93aXp3aWtpLm5ldC93aWtpL2xpYi9leGUvZmV0Y2gucGhwP21lZGlhPXByb2R1Y3RzOnc1NTAwOnc1NTAwX2RzX3YxMDZlXzE0MTIzMC5wZGZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDEzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHc1MTAwX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTEwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTIwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUyMDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE2Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTUwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzU1MDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDE3LVx0eyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDQ1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2l6bmV0IERyaXZlciBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggdGFyZ2V0cyBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUg4oCTIGEgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyLiBJdCYjMzk7cyBhIHJlYWwsIHBoeXNpY2FsIFNQSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IHByZXNlbnRzIGEgY2hhbGxlbmdlLiBJIGtub3cgdGhhdCB2YW5pbGxhIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBwcmVjaXNlbHkuIFRoZSBiaWcgcXVlc3Rpb24gaXMgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFN5emthbGxlciYjMzk7cyBzdHJlbmd0aCBpcyBpdHMgYWJpbGl0eSB0byBmaW5kIGFuZCB0cmlnZ2VyIGJ1Z3MgdGhyb3VnaCBmdXp6aW5nLCBidXQgaXRzIG1vZGVsIG9mIGhvdyB0byAqaW5zdGFudGlhdGUqIGhhcmR3YXJlIGlzIGtleSBoZXJlLgoKVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgZ2V0dGluZyB0aGUgZHJpdmVyIHRvIGFjdHVhbGx5ICpzZWUqIHRoZSBoYXJkd2FyZS4gVGhlIGdvYWwgaXMgdG8gcmVhY2ggZWl0aGVyIHRoZSBgdzUxMDBfZGV0ZWN0X2xpbmtgIGludGVycnVwdCBvciB0aGUgYHc1MTAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGtleSBkZXBlbmRlbmN5IGlzIGEgKnZhbGlkKiBTUEkgZGV2aWNlIHRoYXQgaGFzIGEgYGxpbmstZ3Bpb3NgIHByb3BlcnR5LiBUaGF0IHByb3BlcnR5IGlzIHRoZSBrZXkgdG8gbGV0dGluZyB0aGUgZHJpdmVyIGtub3cgaXQgaXMgY29ubmVjdGVkIHRvIGEgbGluayB0byB3b3JrIHdpdGguCgpOb3cgSSYjMzk7bSB0aGlua2luZy4uLiBjYW4gU3l6a2FsbGVyIGxldmVyYWdlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIGV2ZW4gbmV0bGluayBpbnRlcmZhY2VzIHRvIGluc3RhbnRpYXRlIGFuIFNQSSBkZXZpY2U/IEl0JiMzOTtzIHBvc3NpYmxlLCB0aG91Z2ggSSYjMzk7bSBub3QgZW50aXJlbHkgY29uZmlkZW50LiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIHRoYXQgU1BJIGRldmljZSBpbiB0aGUgc2ltdWxhdGVkIGVudmlyb25tZW50LCB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkLiBUaGF0IG1lYW5zIGFueSBTUEkgcmVhZHMgb3Igd3JpdGVzIHdvdWxkIGVpdGhlciBmYWlsIG91dHJpZ2h0IG9yIHRpbWUgb3V0LiBUaGF0IHdvdWxkIHByZXZlbnQgdGhlIGRyaXZlciBmcm9tIGluaXRpYWxpemluZyBwcm9wZXJseSBhbnl3YXkuCgpJIG5lZWQgdG8gZGl2ZSBpbnRvIGB3NTEwMC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFyZHdhcmUgY2hlY2tzIGl0IHBlcmZvcm1zLiBEb2VzIGl0IGRvIGFueSBraW5kIG9mIGlkZW50aWZpY2F0aW9uIGNoZWNrcyB0byBkZXRlY3QgaWYgdGhlIGRldmljZSBpcyBhY3R1YWxseSBwcmVzZW50LCBvciBkb2VzIGl0IGp1c3QgYXNzdW1lIGl0JiMzOTtzIHRoZXJlIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZT8gVW5kZXJzdGFuZGluZyB0aGF0IGZsb3cgaXMga2V5LiBJZiBpdCYjMzk7cyBhIHNpbXBsZSwgcHJlZGljdGFibGUgc2VxdWVuY2UgdGhlbiB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHRvIGNyYWZ0IGEgc3l6a2FsbGVyIHRlbXBsYXRlIHRvIHRyaWdnZXIgdGhlIGNhbGwuIE90aGVyd2lzZSwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGEgbW9yZSBpbnZvbHZlZCBhcHByb2FjaCwgc3VjaCBhcyB1c2luZyBhIG1vcmUgc29waGlzdGljYXRlZCBlbXVsYXRpb24gc3RyYXRlZ3kgaWYgdGhlIGhhcmR3YXJlIGNoZWNrcyBhcmUgY29tcGxleC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3NTEwMF9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDIxPXN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XHRyZXR1cm4gdzUxMDBfcHJvYmUoXHUwMDI2c3BpLVx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVx1MDAzZWlycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03Mzk9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NzQxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0Mi1cdFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODgyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjg4MzpFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg9Mjk9dm9pZCAqdzUxMDBfb3BzX3ByaXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaDozMTppbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMi1cdFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjU4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBpbiBgdzUxMDBfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFc1MTAwIGhhcmR3YXJlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGFueSB0aG9yb3VnaCBkcml2ZXIgd291bGQgaW5jbHVkZSBzb21lIGtpbmQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHNhbml0eSBjaGVja3Mgd2l0aGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gSSYjMzk7bSBob3BpbmcgdG8gZmluZCBjbGVhciBpbmRpY2F0b3JzIG9mIHJlZ2lzdGVyIHJlYWRzLCB3cml0ZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBleHBlY3RlZCByZXNwb25zZXMgdGhhdCB3b3VsZCBjb25maXJtIHRoZSBkZXZpY2UmIzM5O3MgcHJlc2VuY2UgYW5kIGJhc2ljIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaW5pdGlhbCBwcm9iaW5nIGlzIGNydWNpYWwg4oCTIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGZvciBldmVyeXRoaW5nIGVsc2UuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlICYjMzQ7aGVsbG8gd29ybGQmIzM0OyBvZiB0aGlzIGRyaXZlciwgdGhlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBoYXJkd2FyZSBpcyBhbGl2ZSBhbmQga2lja2luZy4gSG9wZWZ1bGx5LCBpdCBpcyB0aGVyZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYmVpbmcgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQxOlx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIDc0MjpcdFx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbiA3NDM6XHR7XG4gNzQ0Olx0XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcbiA3NDU6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDc0NjpcdFx0aW50IGVycjtcbiA3NDc6XHRcdHNpemVfdCBhbGxvY19zaXplO1xuIDc0ODpcdFxuIDc0OTpcdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XG4gNzUwOlx0XHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XG4gNzUxOlx0XHRcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xuIDc1MjpcdFx0XHRhbGxvY19zaXplICYjNDM7PSBzaXplb2Zfb3BzX3ByaXY7XG4gNzUzOlx0XHR9XG4gNzU0Olx0XHRhbGxvY19zaXplICYjNDM7PSBORVRERVZfQUxJR04gLSAxO1xuIDc1NTpcdFxuIDc1NjpcdFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KGFsbG9jX3NpemUpO1xuIDc1NzpcdFx0aWYgKCFuZGV2KVxuIDc1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NTk6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XG4gNzYwOlx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcbiA3NjE6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiA3NjI6XHRcbiA3NjM6XHRcdHN3aXRjaCAob3BzLVx1MDAzZWNoaXBfaWQpIHtcbiA3NjQ6XHRcdGNhc2UgVzUxMDA6XG4gNzY1Olx0XHRcdHByaXYtXHUwMDNlczBfcmVncyA9IFc1MTAwX1MwX1JFR1M7XG4gNzY2Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xuIDc2NzpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XG4gNzY4Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmID0gVzUxMDBfUlhfTUVNX1NUQVJUO1xuIDc2OTpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XG4gNzcwOlx0XHRcdGJyZWFrO1xuIDc3MTpcdFx0Y2FzZSBXNTIwMDpcbiA3NzI6XHRcdFx0cHJpdi1cdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcbiA3NzM6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XG4gNzc0Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTIwMF9UWF9NRU1fU0laRTtcbiA3NzU6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XG4gNzc2Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcbiA3Nzc6XHRcdFx0YnJlYWs7XG4gNzc4Olx0XHRjYXNlIFc1NTAwOlxuIDc3OTpcdFx0XHRwcml2LVx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xuIDc4MDpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1ZiA9IFc1NTAwX1RYX01FTV9TVEFSVDtcbiA3ODE6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xuIDc4MjpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcbiA3ODM6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1NTAwX1JYX01FTV9TSVpFO1xuIDc4NDpcdFx0XHRicmVhaztcbiA3ODU6XHRcdGRlZmF1bHQ6XG4gNzg2Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4gNzg3Olx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDc4ODpcdFx0fVxuIDc4OTpcdFxuIDc5MDpcdFx0cHJpdi1cdTAwM2VuZGV2ID0gbmRldjtcbiA3OTE6XHRcdHByaXYtXHUwMDNlb3BzID0gb3BzO1xuIDc5MjpcdFx0cHJpdi1cdTAwM2VpcnEgPSBpcnE7XG4gNzkzOlx0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7bGlua1wmIzM0OywgR1BJT0RfSU4pO1xuIDc5NDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbiA3OTU6XHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pLFxuIDc5NjpcdFx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCYjMzQ7KTtcbiA3OTc6XHRcdFx0cHJpdi1cdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xuIDc5ODpcdFx0XHRnb3RvIGVycl9yZWdpc3RlcjtcbiA3OTk6XHRcdH1cbiA4MDA6XHRcbiA4MDE6XHRcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XG4gODAyOlx0XHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XG4gODAzOlx0XHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobmRldiwgXHUwMDI2cHJpdi1cdTAwM2VuYXBpLCB3NTEwMF9uYXBpX3BvbGwsIDE2KTtcbiA4MDQ6XHRcbiA4MDU6XHRcdC8qIFRoaXMgY2hpcCBkb2VzbiYjMzk7dCBzdXBwb3J0IFZMQU4gcGFja2V0cyB3aXRoIG5vcm1hbCBNVFUsXG4gODA2Olx0XHQgKiBzbyBkaXNhYmxlIFZMQU4gZm9yIHRoaXMgZGV2aWNlLlxuIDgwNzpcdFx0ICovXG4gODA4Olx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfVkxBTl9DSEFMTEVOR0VEO1xuIDgwOTpcdFxuIDgxMDpcdFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIDgxMTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA4MTI6XHRcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4gODEzOlx0XG4gODE0Olx0XHRwcml2LVx1MDAzZXhmZXJfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXNcJiMzNDssIFdRX01FTV9SRUNMQUlNIHwgV1FfUEVSQ1BVLCAwLFxuIDgxNTpcdFx0XHRcdFx0XHRuZXRkZXZfbmFtZShuZGV2KSk7XG4gODE2Olx0XHRpZiAoIXByaXYtXHUwMDNleGZlcl93cSkge1xuIDgxNzpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDgxODpcdFx0XHRnb3RvIGVycl93cTtcbiA4MTk6XHRcdH1cbiA4MjA6XHRcbiA4MjE6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXJ4X3dvcmssIHc1MTAwX3J4X3dvcmspO1xuIDgyMjpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNldHhfd29yaywgdzUxMDBfdHhfd29yayk7XG4gODIzOlx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrLCB3NTEwMF9zZXRyeF93b3JrKTtcbiA4MjQ6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfd29yaywgdzUxMDBfcmVzdGFydF93b3JrKTtcbiA4MjU6XHRcbiA4MjY6XHRcdGlmIChtYWNfYWRkcilcbiA4Mjc6XHRcdFx0ZXRoX2h3X2FkZHJfc2V0KG5kZXYsIG1hY19hZGRyKTtcbiA4Mjg6XHRcdGVsc2VcbiA4Mjk6XHRcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKG5kZXYpO1xuIDgzMDpcdFxuIDgzMTpcdFx0aWYgKHByaXYtXHUwMDNlb3BzLVx1MDAzZWluaXQpIHtcbiA4MzI6XHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VvcHMtXHUwMDNlaW5pdChwcml2LVx1MDAzZW5kZXYpO1xuIDgzMzpcdFx0XHRpZiAoZXJyKVxuIDgzNDpcdFx0XHRcdGdvdG8gZXJyX2h3O1xuIDgzNTpcdFx0fVxuIDgzNjpcdFxuIDgzNzpcdFx0ZXJyID0gdzUxMDBfaHdfcmVzZXQocHJpdik7XG4gODM4Olx0XHRpZiAoZXJyKVxuIDgzOTpcdFx0XHRnb3RvIGVycl9odztcbiA4NDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyNTYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgdzUxMDBfaHdfcmVzZXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBgdzUxMDBfaHdfcmVzZXRgIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW4gYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSByZXNldCBpcyBiZWluZyBoYW5kbGVkIGhlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgYW5kIGFueSByZWdpc3RlciBtYW5pcHVsYXRpb25zIGludm9sdmVkLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgY3J1Y2lhbCBpbiBkZXRlcm1pbmluZyBob3cgcm9idXN0IGFuZCByZWxpYWJsZSB0aGUgb3ZlcmFsbCBXNTEwMCBpbml0aWFsaXphdGlvbiBpcy4gSG9wZWZ1bGx5IHRoZXJlIGFyZW4mIzM5O3QgYW55IGdvdGNoYXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MDpcdHN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzUxOlx0e1xuIDM1MjpcdFx0dTMyIHJ0cjtcbiAzNTM6XHRcbiAzNTQ6XHRcdHc1MTAwX3Jlc2V0KHByaXYpO1xuIDM1NTpcdFxuIDM1NjpcdFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xuIDM1NzpcdFx0dzUxMDBfd3JpdGVfbWFjYWRkcihwcml2KTtcbiAzNTg6XHRcbiAzNTk6XHRcdHN3aXRjaCAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCkge1xuIDM2MDpcdFx0Y2FzZSBXNTEwMDpcbiAzNjE6XHRcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbiAzNjI6XHRcdFx0cnRyID0gVzUxMDBfUlRSO1xuIDM2MzpcdFx0XHRicmVhaztcbiAzNjQ6XHRcdGNhc2UgVzUyMDA6XG4gMzY1Olx0XHRcdHc1MjAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG4gMzY2Olx0XHRcdHJ0ciA9IFc1MTAwX1JUUjtcbiAzNjc6XHRcdFx0YnJlYWs7XG4gMzY4Olx0XHRjYXNlIFc1NTAwOlxuIDM2OTpcdFx0XHR3NTUwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xuIDM3MDpcdFx0XHRydHIgPSBXNTUwMF9SVFI7XG4gMzcxOlx0XHRcdGJyZWFrO1xuIDM3MjpcdFx0ZGVmYXVsdDpcbiAzNzM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzc0Olx0XHR9XG4gMzc1Olx0XG4gMzc2Olx0XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG4gMzc3Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM3ODpcdFxuIDM3OTpcdFx0cmV0dXJuIDA7XG4gMzgwOlx0fVxuIDM4MTpcdFxuIDM4MjpcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuIDM4MzpcdHtcbiAzODQ6XHRcdHU4IG1vZGUgPSBTMF9NUl9NQUNSQVc7XG4gMzg1Olx0XG4gMzg2Olx0XHRpZiAoIXByaXYtXHUwMDNlcHJvbWlzYykge1xuIDM4NzpcdFx0XHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCA9PSBXNTUwMClcbiAzODg6XHRcdFx0XHRtb2RlIHw9IFc1NTAwX1MwX01SX01GO1xuIDM4OTpcdFx0XHRlbHNlXG4gMzkwOlx0XHRcdFx0bW9kZSB8PSBTMF9NUl9NRjtcbiAzOTE6XHRcdH1cbiAzOTI6XHRcbiAzOTM6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcbiAzOTQ6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XG4gMzk1Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbiAzOTY6XHR9XG4gMzk3Olx0XG4gMzk4Olx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzk5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIyNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFc1MTAwIEhhcmR3YXJlIFJlc2V0IEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHJlc2V0IHJvdXRpbmUgcmVsaWVzIG9uIHJlYWRpbmcgYSByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHVzaW5nIGB3NTEwMF9yZWFkMTYocHJpdiwgcnRyKWAuICBJdCYjMzk7cyBleHBlY3RpbmcgdGhpcyByZWdpc3RlciwgcHJvYmFibHkgc29tZSBzb3J0IG9mIHN0YXR1cyBvciBjb250cm9sIHJlZ2lzdGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgVzUxMDAsIHRvIGhvbGQgYSBzcGVjaWZpYyB2YWx1ZSwgYFJUUl9ERUZBVUxUYC4gSWYgdGhlIHZhbHVlIGRvZXNuJiMzOTt0IG1hdGNoIHRoaXMgZXhwZWN0ZWQgZGVmYXVsdCwgdGhlIGZ1bmN0aW9uIGZsYWdzIGEgaGFyZHdhcmUgZmFpbHVyZSB3aXRoIGAtRU5PREVWYC4KCkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uICBTaW5jZSB0aGlzIGlzIGEgcGh5c2ljYWwgU1BJIGRldmljZSBhbmQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIHRoYXQgcmVnaXN0ZXIgcmVhZCBpcyB2ZXJ5IGxpa2VseSB0byBmYWlsLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgcHJvYmFibHkgZ29pbmcgdG8gcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIGBSVFJfREVGQVVMVGAg4oCTIG1heWJlIHplcm8sIG1heWJlIHdoYXRldmVyIGdhcmJhZ2UgdGhlIGR1bW15IFNQSSBkcml2ZXIgaXMgc3BpdHRpbmcgb3V0LiAgSXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBzdGF0ZSwgZ2l2ZW4gYSBsYWNrIG9mIHByb3BlciBpbml0aWFsaXphdGlvbiBhbmQgZW11bGF0aW9uLgoKQnV0IHdhaXQsIHdoYXQgZXhhY3RseSAqaXMqIGBSVFJfREVGQVVMVGA/ICBJIG5lZWQgdG8gZ28gYW5kIGZpbmQgd2hlcmUgdGhhdCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgbWlnaHQgaGF2ZSBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgKlIqZXRyeSAqVCppbWUgKlIqZWdpc3Rlciwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG1heWJlPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYXNzdW1lZCBpbml0aWFsIHN0YXRlIG9mIHRoZSBoYXJkd2FyZSBpbiBvcmRlciB0byB0cm91Ymxlc2hvb3QgdGhpcywgYW5kIHRvIGRldmVsb3Agc3RyYXRlZ2llcyB0byBjaXJjdW12ZW50IHRoaXMgZXhwZWN0ZWQgaW5pdGlhbCB2YWx1ZSBpbiB0aGUgZW11bGF0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUUl9ERUZBVUxUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcdFx0MHgwMDE3IC8qIFJldHJ5IFRpbWUtdmFsdWUgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFx0XHQgIDIwMDAgLyogPTB4MDdkMCAoMjAwMCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1MD1zdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NjpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ny1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTk2CgkJCQkJCQlvdXRwdXQ6IDEyNwoJCQkJCQkJdGhvdWdodHM6IDQ0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEFuIEFuYWx5c2lzIG9mIHRoZSBXNTEwMCBTUEkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudC4gVGhlIGBSVFJfREVGQVVMVGAgcmVnaXN0ZXIgaXMgc2V0IHRvIDIwMDAgKDB4MDdkMCkuIFVubGVzcyBzeXprYWxsZXIgY2FuIHNvbWVob3cgc3BlY2lmaWNhbGx5IG1vY2sgU1BJIHJlYWRzIHRvIHJldHVybiB0aGlzIHZhbHVlIGR1cmluZyB0aGUgcHJvYmUsIHRoZSBwcm9iZSBpdHNlbGYgd2lsbCBmYWlsLCB3aGljaCBpcyB0aGUgaW1tZWRpYXRlIGlzc3VlLiBJIGtub3cgdGhhdCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgU1BJIG1vY2tpbmcgZnJhbWV3b3JrIGNvbmZpZ3VyYWJsZSBvbiBhIHBlci1kZXZpY2UgYmFzaXMuIEl0IG9mZmVycyBsaW1pdGVkIFNQSSBzdXBwb3J0IHRocm91Z2ggYHNwaWRldmAgYW5kIHNpbWlsYXIsIGJ1dCB0aGF0IGlzIGludGVuZGVkIGZvciB1c2Vyc3BhY2UgaW50ZXJhY3Rpb25zIHdpdGggU1BJLCBub3QgZm9yIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgZm9yIGEga2VybmVsIGRyaXZlci4gRXNzZW50aWFsbHksIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIFNQSSBkZXZpY2VzIGF0IGFsbC4KCkJlY2F1c2Ugb2YgdGhpcywgdGhlIGB3NTEwMF9wcm9iZWAgY2FsbCB3aWxsIGludmFyaWFibHkgZmFpbCwgbWVhbmluZyB0aGUgbmV3IGNvZGUgYWRkZWQgZm9yIElSUSByZXF1ZXN0cyBhbmQgdGhlIGB3NTEwMF9kZXRlY3RfbGlua2AgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBseSBhZGRpbmcgYSBHUElPIHBpbiBmb3IgbGluayBkZXRlY3Rpb24sIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljLgoKQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIEl0IGFsc28gYWxpZ25zIHdpdGggdGhlIHJhdGlvbmFsZSBvZiBjb2RlIHRoYXQgJiMzNDtyZXF1aXJlW3NdIHBoeXNpY2FsIC4uLiBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBXaGlsZSB0aGlzIGlzIFNQSSBhbmQgbm90IFBDSWUsIHRoZSBwcmluY2lwbGUgaXMgdGhlIHNhbWUuIEl0IGlzIGEgdmVyeSBoYXJkd2FyZS1kZXBlbmRlbnQgcGF0Y2guCgpOb3csIGxldCBtZSBkb3VibGUgY2hlY2s7IGlzIHRoZXJlIGFueSBvdGhlciB3YXkgdGhpcyBjb2RlIGNvdWxkIHBvc3NpYmx5IGJlIHJlYWNoZWQ/IEkgd2lsbCBxdWlja2x5IHZlcmlmeS4gVGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYHc1MTAwX3NwaV9wcm9iZWAsIHdoaWNoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGB3NTEwMF9zcGlfZHJpdmVyYC4gVGhlIGRyaXZlciBzcGVjaWZpY2FsbHkgYmluZHMgdG8gU1BJIGRldmljZXMgd2l0aCBjb21wYXRpYmxlIHN0cmluZ3MgJiMzNDt3aXpuZXQsdzUxMDAmIzM0OywgJiMzNDt3aXpuZXQsdzUyMDAmIzM0OywgYW5kICYjMzQ7d2l6bmV0LHc1NTAwJiMzNDsuIFdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gZXF1aXZhbGVudCBlbXVsYXRpb24sIHRoZSBwcm9iZSB3aWxsIGZhaWwgYXQgYHc1MTAwX2h3X3Jlc2V0YC4gSXQgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4KClRoZXJlZm9yZSwgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6Mjk6MzQuNzE1NzgzOTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4NDA4MTE3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6Mjk6MzQuNzE1NzkwNzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU3MTU2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDA3MTg1MjlkYmFmOTk0OGM0ZmEwZmEyOTE2ZWQzNGMyYmRjZmMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMTg6Mjk6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZTk2NjU3OThjNGJlNi4uMDAwMDAwMDAwMDAwMFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxcbisrKyAvZGV2L251bGxcXG5AQCAtMSw1MCArMCwwIEBAXFxuLSogV2l6bmV0IHc1eDAwXFxuLVxcbi1UaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cXG4tXFxuLUZvciBlYWNoIGRldmljZSBjb25uZWN0ZWQgdG8gYSBTUEkgYnVzLCBkZWZpbmUgYSBjaGlsZCBub2RlIHdpdGhpblxcbi10aGUgU1BJIG1hc3RlciBub2RlLlxcbi1cXG4tUmVxdWlyZWQgcHJvcGVydGllczpcXG4tLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczpcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTEwMFxcXCJcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTIwMFxcXCJcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTUwMFxcXCJcXG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cXG4tLSBpbnRlcnJ1cHRzOiBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWRcXG4tICAgICAgICAgICAgICB0byBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5XFxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXFxuLSAgICAgICAgICAgICAgbWlnaHQgaW52ZXJ0IHRoZSBzaWduYWwuXFxuLS0gcGluY3RybC1uYW1lczogTGlzdCBvZiBhc3NpZ25lZCBzdGF0ZSBuYW1lcywgc2VlIHBpbmN0cmwgYmluZGluZyBkb2N1bWVudGF0aW9uLlxcbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXFxuLSAgICAgICAgICAgICBzZWUgYWxzbyBnZW5lcmljIGFuZCB5b3VyIHBsYXRmb3JtIHNwZWNpZmljIHBpbmN0cmwgYmluZGluZ1xcbi0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi5cXG4tXFxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XFxuLS0gc3BpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC5cXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXFxuLSAgYm9hcmQgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLlxcbi0tIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cXG4tXFxuLVxcbi1FeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcXG4tXFxuLVxcdTAwMjZzcGkge1xcbi1cXHRldGhlcm5ldEAwOiB3NTUwMEAwIHtcXG4tXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzU1MDBcXFwiO1xcbi1cXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuLVxcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLVxcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2ZXRoMV9waW5zXFx1MDAzZTtcXG4tXFx0XFx0aW50ZXJydXB0LXBhcmVudCA9IFxcdTAwM2NcXHUwMDI2Z3Bpb1xcdTAwM2U7XFxuLVxcdFxcdGludGVycnVwdHMgPSBcXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXFx1MDAzZTtcXG4tXFx0XFx0c3BpLW1heC1mcmVxdWVuY3kgPSBcXHUwMDNjMzAwMDAwMDBcXHUwMDNlO1xcbi1cXHR9O1xcbi19O1xcbi1cXG4tXFx1MDAyNmdwaW8ge1xcbi1cXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XFxuLVxcdFxcdGJyY20scGlucyA9IFxcdTAwM2MyNVxcdTAwM2U7XFxuLVxcdFxcdGJyY20sZnVuY3Rpb24gPSBcXHUwMDNjMFxcdTAwM2U7IC8qIGluICovXFxuLVxcdFxcdGJyY20scHVsbCA9IFxcdTAwM2MwXFx1MDAzZTsgLyogbm9uZSAqL1xcbi1cXHR9O1xcbi19O1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGY0NWE1ZDc3M2ZlM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sXFxuQEAgLTAsMCArMSwxMDMgQEBcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxcbitcXG4rZGVzY3JpcHRpb246IHxcXG4rICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cXG4rXFxuKyAgRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluIHRoZSBTUEkgbWFzdGVyIG5vZGUuXFxuK1xcbithbGxPZjpcXG4rICAtICRyZWY6IC9zY2hlbWFzL25ldC9ldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjXFxuKyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGVudW06XFxuKyAgICAgIC0gd2l6bmV0LHc1MTAwXFxuKyAgICAgIC0gd2l6bmV0LHc1MjAwXFxuKyAgICAgIC0gd2l6bmV0LHc1NTAwXFxuK1xcbisgIHJlZzpcXG4rICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uXFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rXFxuKyAgaW50ZXJydXB0czpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG9cXG4rICAgICAgYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseSBnZW5lcmF0ZXNcXG4rICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxcbisgICAgICBzaWduYWwuXFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rXFxuKyAgcGluY3RybC1uYW1lczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uXFxuKyAgICBlbnVtOlxcbisgICAgICAtIGRlZmF1bHRcXG4rICAgIG1pbkl0ZW1zOiAxXFxuK1xcbisgIHBpbmN0cmwtMDpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBMaXN0IG9mIHBoYW5kbGVzIHRvIGNvbmZpZ3VyZSB0aGUgR1BJTyBwaW4gdXNlZCBhcyBpbnRlcnJ1cHQgbGluZSwgc2VlXFxuKyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cXG4rICAgIG1pbkl0ZW1zOiAxXFxuK1xcbisgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXFxuK1xcbisgIHNwaS1tYXgtZnJlcXVlbmN5OlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvXFxuKyAgICAgIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLCBib2FyZFxcbisgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXFxuKyAgICBtYXhpbXVtOiA4MDAwMDAwMFxcbitcXG4rICBsaW5rLWdwaW9zOlxcbisgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rcmVxdWlyZWQ6XFxuKyAgLSBjb21wYXRpYmxlXFxuKyAgLSByZWdcXG4rICAtIGludGVycnVwdHNcXG4rICAtIHBpbmN0cmwtbmFtZXNcXG4rICAtIHBpbmN0cmwtMFxcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xcbitcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG4rXFxuKyAgICBzcGkge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBldGhlcm5ldEAwOiB3NTUwMEAwIHtcXG4rICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1NTAwXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbisgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbisgICAgICAgICAgICBwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmV0aDFfcGluc1xcdTAwM2U7XFxuKyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNmdwaW9cXHUwMDNlO1xcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1xcdTAwM2U7XFxuKyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gXFx1MDAzYzMwMDAwMDAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgbGluay1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbisgICAgICAgICAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFsgYTAgYjAgYzAgZDAgZTAgZjAgXTtcXG4rICAgICAgICB9O1xcbisgICAgfTtcXG4rXFxuKyAgICBcXHUwMDI2Z3BpbyB7XFxuKyAgICAgIGV0aDFfcGluczogZXRoMV9waW5zIHtcXG4rICAgICAgICBicmNtLHBpbnMgPSBcXHUwMDNjMjUgNFxcdTAwM2U7XFxuKyAgICAgICAgYnJjbSxmdW5jdGlvbiA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBpbiAqL1xcbisgICAgICAgIGJyY20scHVsbCA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBub25lICovXFxuKyAgICB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuaW5kZXggNTNkOGRjNjQyZmJkNi4uMTQxMGE5ZmNmYTkyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuQEAgLTIyLDYgKzIyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnEuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJ3NTEwMC5oXFxcIlxcbiBcXG5AQCAtMTU0LDYgKzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcXG4gXFx0dTE2IHMwX3J4X2J1Zl9zaXplO1xcbiBcXG4gXFx0aW50IGlycTtcXG4rXFx0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xcbiBcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbkBAIC00MTQsNiArNDE2LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4gfVxcbiBcXG4rc3RhdGljIHUzMiB3NTEwMF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4re1xcbitcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3BpbylcXG4rXFx0XFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcbitcXHRyZXR1cm4gMTtcXG4rfVxcbitcXG4gc3RhdGljIHUzMiB3NTEwMF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuIHtcXG4gXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNjE2LDYgKzYyOCwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXFxuIFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gfVxcbiBcXG4rc3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXFxuK3tcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xcbitcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXG4rXFx0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcXG4rXFx0XFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApIHtcXG4rXFx0XFx0XFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcXFwibGluayBpcyB1cFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXFxcImxpbmsgaXMgZG93blxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBJUlFfSEFORExFRDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdzUxMDBfc2V0cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXFxuQEAgLTY1OSw2ICs2ODksMTQgQEAgc3RhdGljIGludCB3NTEwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG4gXFx0bmFwaV9lbmFibGUoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbiBcXHRuZXRpZl9zdGFydF9xdWV1ZShuZGV2KTtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VsaW5rX2dwaW8pIHtcXG4rXFx0XFx0aWYgKGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYobmRldik7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC02NzgsNiArNzE2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0PSB3NTEwMF9nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9tc2dsZXZlbFxcdFxcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxcbiBcXHQuc2V0X21zZ2xldmVsXFx0XFx0PSB3NTEwMF9zZXRfbXNnbGV2ZWwsXFxuK1xcdC5nZXRfbGlua1xcdFxcdD0gdzUxMDBfZ2V0X2xpbmssXFxuIFxcdC5nZXRfcmVnc19sZW5cXHRcXHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcXG4gXFx0LmdldF9yZWdzXFx0XFx0PSB3NTEwMF9nZXRfcmVncyxcXG4gfTtcXG5AQCAtNzUxLDYgKzc5MCwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdHByaXYtXFx1MDAzZW5kZXYgPSBuZGV2O1xcbiBcXHRwcml2LVxcdTAwM2VvcHMgPSBvcHM7XFxuIFxcdHByaXYtXFx1MDAzZWlycSA9IGlycTtcXG4rXFx0cHJpdi1cXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcXFwibGlua1xcXCIsIEdQSU9EX0lOKTtcXG4rXFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pKSB7XFxuK1xcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbyksXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXFxcblxcXCIpO1xcbitcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4rXFx0fVxcbiBcXG4gXFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xcbiBcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcXG5AQCAtODAzLDggKzg0OSwyOSBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2h3O1xcbiBcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbykge1xcbitcXHRcXHRpbnQgbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi1cXHUwMDNlbGlua19ncGlvKTtcXG4rXFxuK1xcdFxcdGlmIChsaW5rX2lycSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIGxpbmtfaXJxLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgXFxcIk5vIGNvcnJlc3BvbmRpbmcgaXJxIGZvciBsaW5rIGdwaW9cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgbGlua19pcnEsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHc1MTAwX2RldGVjdF9saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRJUlFGX1RSSUdHRVJfUklTSU5HIHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9UUklHR0VSX0ZBTExJTkcgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRJUlFGX09ORVNIT1QsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJ3NTEwMC1saW5rXFxcIiwgcHJpdi1cXHUwMDNlbmRldik7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl9ncGlvOlxcbitcXHRmcmVlX2lycShwcml2LVxcdTAwM2VpcnEsIG5kZXYpO1xcbiBlcnJfaHc6XFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXFx1MDAzZXhmZXJfd3EpO1xcbiBlcnJfd3E6XFxuQEAgLTg1Nyw2ICs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG4gXFxuIFxcdFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XFxuK1xcbitcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWxpbmtfZ3BpbyB8fFxcbitcXHRcXHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykgIT0gMClcXG4rXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTozNS4yMTI1MDE0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcxMzQ0MDg1NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBwZXJmb3JtcyBoYXJkd2FyZSByZWdpc3RlciBjaGVja3MgKGUuZy4sIHZlcmlmeWluZyB0aGUgUlRSIHJlZ2lzdGVyIHZhbHVlKSB0aGF0IHdpbGwgZmFpbCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI0MDcxODUyOWRiYWY5OTQ4YzRmYTBmYTI5MTZlZDM0YzJiZGNmYzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjI5OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGU5NjY1Nzk4YzRiZTYuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsNTAgKzAsMCBAQFxuLSogV2l6bmV0IHc1eDAwXG4tXG4tVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuXG4tXG4tRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluXG4tdGhlIFNQSSBtYXN0ZXIgbm9kZS5cbi1cbi1SZXF1aXJlZCBwcm9wZXJ0aWVzOlxuLS0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6XG4tXHQgICAgICBcIndpem5ldCx3NTEwMFwiXG4tXHQgICAgICBcIndpem5ldCx3NTIwMFwiXG4tXHQgICAgICBcIndpem5ldCx3NTUwMFwiXG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZFxuLSAgICAgICAgICAgICAgdG8gYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseVxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXG4tICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC5cbi0tIHBpbmN0cmwtbmFtZXM6IExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXG4tICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nXG4tICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIGZyZXF1ZW5jeSBvZiB0aGUgU1BJIGJ1cyB3aGVuIGFjY2Vzc2luZyB0aGUgdzU1MDAuXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXG4tICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4tLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4tXG4tXG4tRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4tXG4tXHUwMDI2c3BpIHtcbi1cdGV0aGVybmV0QDA6IHc1NTAwQDAge1xuLVx0XHRjb21wYXRpYmxlID0gXCJ3aXpuZXQsdzU1MDBcIjtcbi1cdFx0cmVnID0gXHUwMDNjMFx1MDAzZTtcbi1cdFx0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuLVx0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZldGgxX3BpbnNcdTAwM2U7XG4tXHRcdGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvXHUwMDNlO1xuLVx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuLVx0XHRzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzMwMDAwMDAwXHUwMDNlO1xuLVx0fTtcbi19O1xuLVxuLVx1MDAyNmdwaW8ge1xuLVx0ZXRoMV9waW5zOiBldGgxX3BpbnMge1xuLVx0XHRicmNtLHBpbnMgPSBcdTAwM2MyNVx1MDAzZTtcbi1cdFx0YnJjbSxmdW5jdGlvbiA9IFx1MDAzYzBcdTAwM2U7IC8qIGluICovXG4tXHRcdGJyY20scHVsbCA9IFx1MDAzYzBcdTAwM2U7IC8qIG5vbmUgKi9cbi1cdH07XG4tfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNDVhNWQ3NzNmZTNcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWxcbkBAIC0wLDAgKzEsMTAzIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4rXG4rdGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxuK1xuK2Rlc2NyaXB0aW9uOiB8XG4rICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cbitcbisgIEZvciBlYWNoIGRldmljZSBjb25uZWN0ZWQgdG8gYSBTUEkgYnVzLCBkZWZpbmUgYSBjaGlsZCBub2RlIHdpdGhpbiB0aGUgU1BJIG1hc3RlciBub2RlLlxuK1xuK2FsbE9mOlxuKyAgLSAkcmVmOiAvc2NoZW1hcy9uZXQvZXRoZXJuZXQtY29udHJvbGxlci55YW1sI1xuKyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgZW51bTpcbisgICAgICAtIHdpem5ldCx3NTEwMFxuKyAgICAgIC0gd2l6bmV0LHc1MjAwXG4rICAgICAgLSB3aXpuZXQsdzU1MDBcbitcbisgIHJlZzpcbisgICAgZGVzY3JpcHRpb246IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbisgICAgbWF4SXRlbXM6IDFcbisgICAgbWluSXRlbXM6IDFcbitcbisgIGludGVycnVwdHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZCB0b1xuKyAgICAgIGFib3ZlIGluIGludGVycnVwdC1wYXJlbnQpIGFuZCBpbnRlcnJ1cHQgdHlwZS4gdzV4MDAgbmF0aXZlbHkgZ2VuZXJhdGVzXG4rICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxuKyAgICAgIHNpZ25hbC5cbisgICAgbWF4SXRlbXM6IDFcbisgICAgbWluSXRlbXM6IDFcbitcbisgIHBpbmN0cmwtbmFtZXM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbisgICAgZW51bTpcbisgICAgICAtIGRlZmF1bHRcbisgICAgbWluSXRlbXM6IDFcbitcbisgIHBpbmN0cmwtMDpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsIHNlZVxuKyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbisgICAgbWluSXRlbXM6IDFcbitcbisgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXG4rXG4rICBzcGktbWF4LWZyZXF1ZW5jeTpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgTWF4aW11bSBmcmVxdWVuY3kgb2YgdGhlIFNQSSBidXMgd2hlbiBhY2Nlc3NpbmcgdGhlIHc1NTAwLiBBY2NvcmRpbmcgdG9cbisgICAgICB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlciwgYm9hcmRcbisgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4rICAgIG1heGltdW06IDgwMDAwMDAwXG4rXG4rICBsaW5rLWdwaW9zOlxuKyAgICBkZXNjcmlwdGlvbjogQSBHUElPIGxpbmUgdXNlZCBmb3IgdGhlIGxpbmsgZGV0ZWN0aW9uIGludGVycnVwdC5cbisgICAgbWF4SXRlbXM6IDFcbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWdcbisgIC0gaW50ZXJydXB0c1xuKyAgLSBwaW5jdHJsLW5hbWVzXG4rICAtIHBpbmN0cmwtMFxuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xuK1xuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuK1xuKyAgICBzcGkge1xuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuKyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XG4rICAgICAgICAgIGNvbXBhdGlibGUgPSBcIndpem5ldCx3NTUwMFwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmV0aDFfcGluc1x1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuKyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gXHUwMDNjMzAwMDAwMDBcdTAwM2U7XG4rICAgICAgICAgICAgbGluay1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuKyAgICAgICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWyBhMCBiMCBjMCBkMCBlMCBmMCBdO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbisgICAgXHUwMDI2Z3BpbyB7XG4rICAgICAgZXRoMV9waW5zOiBldGgxX3BpbnMge1xuKyAgICAgICAgYnJjbSxwaW5zID0gXHUwMDNjMjUgNFx1MDAzZTtcbisgICAgICAgIGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwIDBcdTAwM2U7IC8qIGluICovXG4rICAgICAgICBicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbisgICAgfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li4xNDEwYTlmY2ZhOTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiArMjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidzUxMDAuaFwiXG4gXG5AQCAtMTU0LDYgKzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4rXHRzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87XG4gXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuQEAgLTQxNCw2ICs0MTYsMTYgQEAgc3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdHJldHVybiAxO1xuK31cbitcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICs2MjgsMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbitzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfZGV0ZWN0X2xpbmsoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbit7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG4rXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuK1xuK1x0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbitcdFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMCkge1xuK1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCJsaW5rIGlzIHVwXFxuXCIpO1xuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcImxpbmsgaXMgZG93blxcblwiKTtcbitcdFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbkBAIC02NTksNiArNjg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKSB7XG4rXHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4rXHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbitcdFx0ZWxzZVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTY3OCw2ICs3MTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbitcdC5nZXRfbGlua1x0XHQ9IHc1MTAwX2dldF9saW5rLFxuIFx0LmdldF9yZWdzX2xlblx0XHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHQ9IHc1MTAwX2dldF9yZWdzLFxuIH07XG5AQCAtNzUxLDYgKzc5MCwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRwcml2LVx1MDAzZWlycSA9IGlycTtcbitcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcImxpbmtcIiwgR1BJT0RfSU4pO1xuK1x0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbitcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pLFxuK1x0XHRcdFx0ICAgIFwiZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXG5cIik7XG4rXHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbitcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4rXHR9XG4gXG4gXHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xuIFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xuQEAgLTgwMyw4ICs4NDksMjkgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfaHc7XG4gXG4rXHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbitcdFx0aW50IGxpbmtfaXJxID0gZ3Bpb2RfdG9faXJxKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdFx0aWYgKGxpbmtfaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIGxpbmtfaXJxLFxuK1x0XHRcdFx0XHQgICAgXCJObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXFxuXCIpO1xuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHRcdH1cbitcbitcdFx0ZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGxpbmtfaXJxLCBOVUxMLFxuK1x0XHRcdFx0XHRcdHc1MTAwX2RldGVjdF9saW5rLFxuK1x0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfFxuK1x0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9GQUxMSU5HIHxcbitcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsXG4rXHRcdFx0XHRcdFx0XCJ3NTEwMC1saW5rXCIsIHByaXYtXHUwMDNlbmRldik7XG4rXHRcdGlmIChlcnIgXHUwMDNjIDApXG4rXHRcdFx0Z290byBlcnJfZ3BpbztcbitcdH1cbitcbiBcdHJldHVybiAwO1xuIFxuK2Vycl9ncGlvOlxuK1x0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuIGVycl9odzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXHUwMDNleGZlcl93cSk7XG4gZXJyX3dxOlxuQEAgLTg1Nyw2ICs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbitcbitcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuK1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTozNS4yMTI1MDMzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTkyNzkxNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIFdpem5ldCBXNTEwMCBMaW5rIEdQSU8gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQgYWRkcyBhIGBsaW5rLWdwaW9zYCBlbnRyeSB0byB0aGUgVzUxMDAgRXRoZXJuZXQgZHJpdmVyJ3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEl0IGxvb2tzIGxpa2UgaXQncyBnb2luZyB0byB1c2UgdGhpcyBHUElPIHRvIG1vbml0b3IgdGhlIGxpbmsgc3RhdHVzIGFuZCB1cGRhdGUgdGhlIGNhcnJpZXIgc3RhdGUgaW4gYHc1MTAwLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cblRoaXMgZHJpdmVyIHRhcmdldHMgdGhvc2UgV2l6bmV0IFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyDigJMgdGhlIFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZXZlbiAqZWFzaWx5KiBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdHlwaWNhbGx5IGRvbid0IHJlYWRpbHkgZXhwb3NlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRob3V0IGEgbG90IG9mIHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gU1BJIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSB0b3VnaCB0byBnZXQgYXQgZm9yIGZ1enppbmcgd2l0aG91dCBhIGxvdCBvZiBleHRyYSB3b3JrLlxuXG5IbW0uLi4gaXMgdGhlcmUgYSB3b3JrYXJvdW5kIHRvIGZ1enogU1BJIGRldmljZXM/IEkgc2VlbSB0byByZWNhbGwgc3l6a2FsbGVyIGhhcyBzb21lIFNQSSBzdXBwb3J0LCBtYXliZSB0aHJvdWdoIGBzcGlkZXZgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgZ2V0dGluZyAqc3BlY2lmaWMqIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGZ1enppbmcgdG8gd29yayBpcyB1c3VhbGx5IGRpZmZpY3VsdCB1bmxlc3MgaXQncyBiZWVuIGV4cGxpY2l0bHkgc2V0IHVwLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgYnVpbHQtaW4gc3VwcG9ydCBmb3Igd2l6bmV0LiBJJ20gZ29pbmcgdG8gcnVuIGEgYGRlZmF1bHRfYXBpOmdyZXBwZXJgIHNlYXJjaCBhbmQgbG9vayBmb3IgXCJ3aXpuZXRcIiBvciBcInc1MTAwXCIgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgdGhlcmUncyBhbnkgZXhpc3RpbmcgZ3JvdW5kd29yayB0byBsZXZlcmFnZS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTo1MC44MDUyOTg2MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyODAzOTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3NTEwMFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbD0xOD1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yMC0gICAgZW51bTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIxOiAgICAgIC0gd2l6bmV0LHc1MTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yMi0gICAgICAtIHdpem5ldCx3NTIwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc6MzA6XFx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZDE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXFx0ZGF0YSA9IHJldCBcXHUwMDNjXFx1MDAzYyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyICsgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2MDpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZTE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XFx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY4OlxcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIDEsIGRhdGEgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cXHRcXHRcXHQgICAgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcXHRcXHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXFx0XFx0XFx0ICAgICAgIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlxcdFxcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIGksIGJ1ZltpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVxcdC5jaGlwX2lkID0gVzUxMDAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNTpcXHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XFx0LndyaXRlID0gdzUxMDBfc3BpX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XFx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwODpcXHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XFx0LnJlYWRidWxrID0gdzUxMDBfc3BpX3JlYWRidWxrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XFx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTExMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3OlxcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI0NC1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yNzA9c3RhdGljIHN0cnVjdCB3NTUwMF9zcGlfcHJpdiAqdzU1MDBfc3BpX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcXHRyZXR1cm4gdzUxMDBfb3BzX3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MzcyPXN0YXRpYyBpbnQgdzU1MDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MDE6c3RhdGljIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgdzU1MDBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXFx0Lm1heV9zbGVlcCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MTAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTIwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMTpzdGF0aWMgaW50IHc1MTAwX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXFx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVxcdGNhc2UgVzUxMDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQzODpcXHRcXHRvcHMgPSBcXHUwMDI2dzUxMDBfc3BpX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVxcdFxcdHByaXZfc2l6ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1ODpcXHR3NTEwMF9yZW1vdmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHc1MTAwX3NwaV9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlxcdHsgXFxcInc1MTAwXFxcIiwgVzUxMDAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVxcdHsgXFxcInc1MjAwXFxcIiwgVzUyMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cXHQuZHJpdmVyXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MTpcXHRcXHQubmFtZVxcdD0gXFxcInc1MTAwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcyOlxcdFxcdC5wbVxcdD0gXFx1MDAyNnc1MTAwX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1OlxcdC5wcm9iZVxcdFxcdD0gdzUxMDBfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XFx0LnJlbW92ZVxcdFxcdD0gdzUxMDBfc3BpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc3OlxcdC5pZF90YWJsZVxcdD0gdzUxMDBfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk6I2RlZmluZSBEUlZfTkFNRVxcdFxcXCJ3NTEwMFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXFx0XFxcIjIwMTItMDQtMDRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDY6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzM6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3ODpzdGF0aWMgaW50IHc1MTAwX3dyaXRlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4MzpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODg6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTM6c3RhdGljIGludCB3NTEwMF9yZWFkYnVsayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTg6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OS1cXHRcXHRcXHQgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNDpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjA6XFx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMS1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI0OlxcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiArIGxlbiwgcmVtYWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjc6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjgtXFx0XFx0XFx0ICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NDpcXHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0NS1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ4OlxcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgKyBsZW4sIHJlbWFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUxOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1JTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU3LVxcdG1kZWxheSg1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTg6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjYzOnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI2NzpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcxOlxcdHdoaWxlICh3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0NSKHByaXYpKSAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjcyLVxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4MDpzdGF0aWMgdm9pZCB3NTEwMF93cml0ZV9tYWNhZGRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg0OlxcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVxcdTAwM2VkZXZfYWRkciwgRVRIX0FMRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4NzpzdGF0aWMgdm9pZCB3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1OCBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk2OlxcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk5OnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAxOlxcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNDpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDY6XFx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDk6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzEzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNDpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTU6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE4OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjU6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjgtXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMyOTpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzA6XFx0XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzQ6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MTpcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NC1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgODsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ1OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NjpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MDpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU0OlxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTY6XFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1NzpcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MC1cXHRjYXNlIFc1MTAwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MTpcXHRcXHR3NTEwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2Mi1cXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc2OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgyOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzkzOlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTQ6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk4OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDAwOlxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDE6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9DTE9TRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTA6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDExLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDE5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjE6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDI5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNjpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzODpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDM6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDg6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ5LVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1MTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTMtXFx0cmVncy1cXHUwMDNldmVyc2lvbiA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU0OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU1LVxcdGJ1ZiArPSBXNTEwMF9DT01NT05fUkVHU19MRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU2OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1OTpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDYxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2My1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NDpcXHR3NTEwMF9od19yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjU6XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDY2LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Vycm9ycysrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3MTpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDczOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NC1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmVzdGFydF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc2OlxcdHc1MTAwX3Jlc3RhcnQocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc5OnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODY6XFx0XFx0dzUxMDBfcmVzdGFydChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODk6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkyLVxcdHUxNiBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NDpcXHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcXHR3NTEwMF93cml0ZWJ1Zihwcml2LCBvZmZzZXQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NjpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgKyBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk3LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMTpcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNDpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHR4X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTEzLVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTQ6XFx0dzUxMDBfdHhfc2tiKHByaXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE3OnN0YXRpYyBuZXRkZXZfdHhfdCB3NTEwMF9zdGFydF90eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxOTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyNy1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyODpcXHRcXHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnc1MTAwX3J4X3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQwLVxcdHU4IGhlYWRlclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDE6XFx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ2OlxcdG9mZnNldCA9IHc1MTAwX3JlYWQxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ3OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0OC1cXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTEtXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUyOlxcdFxcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCArIHJ4X2J1Zl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1MzpcXHRcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NC1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTgtXFx0c2tiX3B1dChza2IsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTU5OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICsgMiwgc2tiLVxcdTAwM2VkYXRhLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgKyAyICsgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjE6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjItXFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcwOnN0YXRpYyB2b2lkIHc1MTAwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3My1cXHRcXHRcXHRcXHRcXHQgICAgICAgcnhfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc2OlxcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXFx1MDAzZW5kZXYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzctXFx0XFx0bmV0aWZfcngoc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc5OlxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MjpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODQ6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4NS1cXHRpbnQgcnhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODctXFx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFxcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2IgPSB3NTEwMF9yeF9za2IocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk3LVxcdFxcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk4OlxcdFxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA0OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA3OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYwOTpcXHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTAtXFx0aWYgKCFpcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTEtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMjpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxOS1cXHRpZiAoaXIgXFx1MDAyNiBTMF9JUl9SRUNWKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIwOlxcdFxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMxOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzQ6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjQ5OnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICAgc2V0cnhfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NDpcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTUtfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTo1My4yMzMzNDU0OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM4OTAzODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgIGRyaXZlci4gVGhpcyBpcyBmb3IgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycywgcmlnaHQ/IFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBgbGlua19ncGlvYCB3aGljaCwgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgbWVhbnMgaXQncyByZXF1ZXN0aW5nIGEgR1BJTyBwaW4sIGFuZCByZWdpc3RlcmluZyBhbiBpbnRlcnJ1cHQgZm9yIGl0IHRvIG1vbml0b3IgdGhlIGxpbmsgc3RhdGUuIE1ha2VzIHNlbnNlLiBHUElPIGZvciBsaW5rIHN0YXRlIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aWxsIHRoaXMgZXZlbiBiZSBoaXQgaW4gUUVNVT8gVGhlc2UgU1BJIGRldmljZXMsIGdlbmVyYWxseSwgeW91J2QgY29uZmlndXJlIHRoZW0gdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSB0b3VjaCBTUEkgRXRoZXJuZXQgY29udHJvbGxlcnMgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBzZXR1cCBmb3IgdGhlbS4gQnV0IHdhaXQuLi4gZG9lc24ndCBzeXprYWxsZXIgKmhhdmUqIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydCBmb3IgU1BJPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgdGhhdC4gT2theSwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHRvIGluc3RhbnRpYXRlIGEgV2l6bmV0IGRldmljZSBpbiBpdHMgY29uZmlndXJhdGlvbnMuIFdlIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHdpem5ldCBvciBTUEkuIFRoYXQnbGwgdGVsbCB1cyBpZiB3ZSdyZSBldmVuIHRlc3RpbmcgdGhpcyBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQ2LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjI5OjU5LjI3MjI1MzQ0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2MzUwNzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpem5ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9MTg9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtMjAtICAgIGVudW06XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMTogICAgICAtIHdpem5ldCx3NTEwMFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw6MjI6ICAgICAgLSB3aXpuZXQsdzUyMDBcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIzOiAgICAgIC0gd2l6bmV0LHc1NTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9NzQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTg1LSAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo4NjogICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzU1MDBcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtODctICAgICAgICAgICAgcmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZz0xODg9c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxODk6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE5MC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU9MTAxPW9iai0kKENPTkZJR19ORVRfVkVORE9SX1dBTkdYVU4pICs9IHdhbmd4dW4vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU6MTAyOm9iai0kKENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCkgKz0gd2l6bmV0L1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlLTEwMy1vYmotJChDT05GSUdfTkVUX1ZFTkRPUl9YSUxJTlgpICs9IHhpbGlueC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03LSAqIERhdGFzaGVldDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODogKiBodHRwOi8vd3d3Lndpem5ldC5jby5rci93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MTAwL0RvY3VtZW50L1c1MTAwX0RhdGFzaGVldF92MS4yLjYucGRmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjk6ICogaHR0cDovL3dpem5ldGhvbWUuY2FmZTI0LmNvbS93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MjAwL0RvY3VtZW50cy9XNTIwMF9EU19WMTQwRS5wZGZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAtICogaHR0cDovL3dpendpa2kubmV0L3dpa2kvbGliL2V4ZS9mZXRjaC5waHA/bWVkaWE9cHJvZHVjdHM6dzU1MDA6dzU1MDBfZHNfdjEwNmVfMTQxMjMwLnBkZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTQxMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3NTEwMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTQ6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzUxMDBcXFwiLCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTEwMCwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MjAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUyMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxNjpcXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTUwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1NTAwLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTctXFx0eyB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDowMS4zNDg2MTIwMDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTA3MTc5Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2l6bmV0IERyaXZlciBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0YXJnZXRzIGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSDigJMgYSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0J3MgYSByZWFsLCBwaHlzaWNhbCBTUEkgZGV2aWNlLCB3aGljaCBpbW1lZGlhdGVseSBwcmVzZW50cyBhIGNoYWxsZW5nZS4gSSBrbm93IHRoYXQgdmFuaWxsYSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGVzZSBwcmVjaXNlbHkuIFRoZSBiaWcgcXVlc3Rpb24gaXMgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFN5emthbGxlcidzIHN0cmVuZ3RoIGlzIGl0cyBhYmlsaXR5IHRvIGZpbmQgYW5kIHRyaWdnZXIgYnVncyB0aHJvdWdoIGZ1enppbmcsIGJ1dCBpdHMgbW9kZWwgb2YgaG93IHRvICppbnN0YW50aWF0ZSogaGFyZHdhcmUgaXMga2V5IGhlcmUuXG5cblRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGdldHRpbmcgdGhlIGRyaXZlciB0byBhY3R1YWxseSAqc2VlKiB0aGUgaGFyZHdhcmUuIFRoZSBnb2FsIGlzIHRvIHJlYWNoIGVpdGhlciB0aGUgYHc1MTAwX2RldGVjdF9saW5rYCBpbnRlcnJ1cHQgb3IgdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIFRoZSBrZXkgZGVwZW5kZW5jeSBpcyBhICp2YWxpZCogU1BJIGRldmljZSB0aGF0IGhhcyBhIGBsaW5rLWdwaW9zYCBwcm9wZXJ0eS4gVGhhdCBwcm9wZXJ0eSBpcyB0aGUga2V5IHRvIGxldHRpbmcgdGhlIGRyaXZlciBrbm93IGl0IGlzIGNvbm5lY3RlZCB0byBhIGxpbmsgdG8gd29yayB3aXRoLlxuXG5Ob3cgSSdtIHRoaW5raW5nLi4uIGNhbiBTeXprYWxsZXIgbGV2ZXJhZ2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgZXZlbiBuZXRsaW5rIGludGVyZmFjZXMgdG8gaW5zdGFudGlhdGUgYW4gU1BJIGRldmljZT8gSXQncyBwb3NzaWJsZSwgdGhvdWdoIEknbSBub3QgZW50aXJlbHkgY29uZmlkZW50LiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIHRoYXQgU1BJIGRldmljZSBpbiB0aGUgc2ltdWxhdGVkIGVudmlyb25tZW50LCB0aGUgaGFyZHdhcmUgaXNuJ3QgZW11bGF0ZWQuIFRoYXQgbWVhbnMgYW55IFNQSSByZWFkcyBvciB3cml0ZXMgd291bGQgZWl0aGVyIGZhaWwgb3V0cmlnaHQgb3IgdGltZSBvdXQuIFRoYXQgd291bGQgcHJldmVudCB0aGUgZHJpdmVyIGZyb20gaW5pdGlhbGl6aW5nIHByb3Blcmx5IGFueXdheS5cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgdzUxMDAuY2AgYW5kIHNwZWNpZmljYWxseSBsb29rIGF0IHRoZSBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcmR3YXJlIGNoZWNrcyBpdCBwZXJmb3Jtcy4gRG9lcyBpdCBkbyBhbnkga2luZCBvZiBpZGVudGlmaWNhdGlvbiBjaGVja3MgdG8gZGV0ZWN0IGlmIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgcHJlc2VudCwgb3IgZG9lcyBpdCBqdXN0IGFzc3VtZSBpdCdzIHRoZXJlIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZT8gVW5kZXJzdGFuZGluZyB0aGF0IGZsb3cgaXMga2V5LiBJZiBpdCdzIGEgc2ltcGxlLCBwcmVkaWN0YWJsZSBzZXF1ZW5jZSB0aGVuIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSB0byBjcmFmdCBhIHN5emthbGxlciB0ZW1wbGF0ZSB0byB0cmlnZ2VyIHRoZSBjYWxsLiBPdGhlcndpc2UsIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBhIG1vcmUgaW52b2x2ZWQgYXBwcm9hY2gsIHN1Y2ggYXMgdXNpbmcgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgZW11bGF0aW9uIHN0cmF0ZWd5IGlmIHRoZSBoYXJkd2FyZSBjaGVja3MgYXJlIGNvbXBsZXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDQ1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjA4LjI1NTgxMTUwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc3MDc1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInc1MTAwX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcXHRyZXR1cm4gdzUxMDBfcHJvYmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXFx1MDAzZWlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03Mzk9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0Mi1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg4Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODgzOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg6MzE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MTAuNTMyOTQ4MjA3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTcwNDI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBpbiBgdzUxMDBfcHJvYmVgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBXNTEwMCBoYXJkd2FyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgdGhvcm91Z2ggZHJpdmVyIHdvdWxkIGluY2x1ZGUgc29tZSBraW5kIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGFuZCBzYW5pdHkgY2hlY2tzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIEknbSBob3BpbmcgdG8gZmluZCBjbGVhciBpbmRpY2F0b3JzIG9mIHJlZ2lzdGVyIHJlYWRzLCB3cml0ZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBleHBlY3RlZCByZXNwb25zZXMgdGhhdCB3b3VsZCBjb25maXJtIHRoZSBkZXZpY2UncyBwcmVzZW5jZSBhbmQgYmFzaWMgZnVuY3Rpb25hbGl0eS4gVGhpcyBpbml0aWFsIHByb2JpbmcgaXMgY3J1Y2lhbCDigJMgaXQncyB0aGUgZm91bmRhdGlvbiBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJ20gbG9va2luZyBmb3IgdGhlIFwiaGVsbG8gd29ybGRcIiBvZiB0aGlzIGRyaXZlciwgdGhlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBoYXJkd2FyZSBpcyBhbGl2ZSBhbmQga2lja2luZy4gSG9wZWZ1bGx5LCBpdCBpcyB0aGVyZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYmVpbmcgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI1OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjE0LjY2ODY2MTg2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc0MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NDE6XFx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbiA3NDI6XFx0XFx0XFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXFxuIDc0MzpcXHR7XFxuIDc0NDpcXHRcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcXG4gNzQ1OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiA3NDY6XFx0XFx0aW50IGVycjtcXG4gNzQ3OlxcdFxcdHNpemVfdCBhbGxvY19zaXplO1xcbiA3NDg6XFx0XFxuIDc0OTpcXHRcXHRhbGxvY19zaXplID0gc2l6ZW9mKCpwcml2KTtcXG4gNzUwOlxcdFxcdGlmIChzaXplb2Zfb3BzX3ByaXYpIHtcXG4gNzUxOlxcdFxcdFxcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xcbiA3NTI6XFx0XFx0XFx0YWxsb2Nfc2l6ZSArPSBzaXplb2Zfb3BzX3ByaXY7XFxuIDc1MzpcXHRcXHR9XFxuIDc1NDpcXHRcXHRhbGxvY19zaXplICs9IE5FVERFVl9BTElHTiAtIDE7XFxuIDc1NTpcXHRcXG4gNzU2OlxcdFxcdG5kZXYgPSBhbGxvY19ldGhlcmRldihhbGxvY19zaXplKTtcXG4gNzU3OlxcdFxcdGlmICghbmRldilcXG4gNzU4OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTk6XFx0XFx0U0VUX05FVERFVl9ERVYobmRldiwgZGV2KTtcXG4gNzYwOlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIG5kZXYpO1xcbiA3NjE6XFx0XFx0cHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRzd2l0Y2ggKG9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiA3NjQ6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gNzY1OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3JlZ3MgPSBXNTEwMF9TMF9SRUdTO1xcbiA3NjY6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xcbiA3Njc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTEwMF9UWF9NRU1fU0laRTtcXG4gNzY4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1ZiA9IFc1MTAwX1JYX01FTV9TVEFSVDtcXG4gNzY5OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XFxuIDc3MDpcXHRcXHRcXHRicmVhaztcXG4gNzcxOlxcdFxcdGNhc2UgVzUyMDA6XFxuIDc3MjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcXG4gNzczOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1ZiA9IFc1MjAwX1RYX01FTV9TVEFSVDtcXG4gNzc0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUyMDBfVFhfTUVNX1NJWkU7XFxuIDc3NTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XFxuIDc3NjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1MjAwX1JYX01FTV9TSVpFO1xcbiA3Nzc6XFx0XFx0XFx0YnJlYWs7XFxuIDc3ODpcXHRcXHRjYXNlIFc1NTAwOlxcbiA3Nzk6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcmVncyA9IFc1NTAwX1MwX1JFR1M7XFxuIDc4MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWYgPSBXNTUwMF9UWF9NRU1fU1RBUlQ7XFxuIDc4MTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xcbiA3ODI6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmID0gVzU1MDBfUlhfTUVNX1NUQVJUO1xcbiA3ODM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTUwMF9SWF9NRU1fU0laRTtcXG4gNzg0OlxcdFxcdFxcdGJyZWFrO1xcbiA3ODU6XFx0XFx0ZGVmYXVsdDpcXG4gNzg2OlxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIDc4NzpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gNzg4OlxcdFxcdH1cXG4gNzg5OlxcdFxcbiA3OTA6XFx0XFx0cHJpdi1cXHUwMDNlbmRldiA9IG5kZXY7XFxuIDc5MTpcXHRcXHRwcml2LVxcdTAwM2VvcHMgPSBvcHM7XFxuIDc5MjpcXHRcXHRwcml2LVxcdTAwM2VpcnEgPSBpcnE7XFxuIDc5MzpcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJsaW5rXFxcIiwgR1BJT0RfSU4pO1xcbiA3OTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pKSB7XFxuIDc5NTpcXHRcXHRcXHRlcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pLFxcbiA3OTY6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcXFxuXFxcIik7XFxuIDc5NzpcXHRcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xcbiA3OTg6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDc5OTpcXHRcXHR9XFxuIDgwMDpcXHRcXG4gODAxOlxcdFxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcXG4gODAyOlxcdFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xcbiA4MDM6XFx0XFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpLCB3NTEwMF9uYXBpX3BvbGwsIDE2KTtcXG4gODA0OlxcdFxcbiA4MDU6XFx0XFx0LyogVGhpcyBjaGlwIGRvZXNuJ3Qgc3VwcG9ydCBWTEFOIHBhY2tldHMgd2l0aCBub3JtYWwgTVRVLFxcbiA4MDY6XFx0XFx0ICogc28gZGlzYWJsZSBWTEFOIGZvciB0aGlzIGRldmljZS5cXG4gODA3OlxcdFxcdCAqL1xcbiA4MDg6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9WTEFOX0NIQUxMRU5HRUQ7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gODExOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA4MTI6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdHByaXYtXFx1MDAzZXhmZXJfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzXFxcIiwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9QRVJDUFUsIDAsXFxuIDgxNTpcXHRcXHRcXHRcXHRcXHRcXHRuZXRkZXZfbmFtZShuZGV2KSk7XFxuIDgxNjpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZXhmZXJfd3EpIHtcXG4gODE3OlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDgxODpcXHRcXHRcXHRnb3RvIGVycl93cTtcXG4gODE5OlxcdFxcdH1cXG4gODIwOlxcdFxcbiA4MjE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VyeF93b3JrLCB3NTEwMF9yeF93b3JrKTtcXG4gODIyOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNldHhfd29yaywgdzUxMDBfdHhfd29yayk7XFxuIDgyMzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXNldHJ4X3dvcmssIHc1MTAwX3NldHJ4X3dvcmspO1xcbiA4MjQ6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3dvcmssIHc1MTAwX3Jlc3RhcnRfd29yayk7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdGlmIChtYWNfYWRkcilcXG4gODI3OlxcdFxcdFxcdGV0aF9od19hZGRyX3NldChuZGV2LCBtYWNfYWRkcik7XFxuIDgyODpcXHRcXHRlbHNlXFxuIDgyOTpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmRldik7XFxuIDgzMDpcXHRcXG4gODMxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VvcHMtXFx1MDAzZWluaXQpIHtcXG4gODMyOlxcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdChwcml2LVxcdTAwM2VuZGV2KTtcXG4gODMzOlxcdFxcdFxcdGlmIChlcnIpXFxuIDgzNDpcXHRcXHRcXHRcXHRnb3RvIGVycl9odztcXG4gODM1OlxcdFxcdH1cXG4gODM2OlxcdFxcbiA4Mzc6XFx0XFx0ZXJyID0gdzUxMDBfaHdfcmVzZXQocHJpdik7XFxuIDgzODpcXHRcXHRpZiAoZXJyKVxcbiA4Mzk6XFx0XFx0XFx0Z290byBlcnJfaHc7XFxuIDg0MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MTQuNjcwODkxMDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTUwMDQ2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCdzIGEga2V5IHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IGl0J3MgZG9pbmcuIExldCdzIGRlbHZlIGluIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgcmVzZXQgaXMgYmVpbmcgaGFuZGxlZCBoZXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgYW5kIGFueSByZWdpc3RlciBtYW5pcHVsYXRpb25zIGludm9sdmVkLiBUaGlzIGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBjcnVjaWFsIGluIGRldGVybWluaW5nIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoZSBvdmVyYWxsIFc1MTAwIGluaXRpYWxpemF0aW9uIGlzLiBIb3BlZnVsbHkgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1NiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MjAuNDg1ODk4MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNTA6XFx0c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4gMzUxOlxcdHtcXG4gMzUyOlxcdFxcdHUzMiBydHI7XFxuIDM1MzpcXHRcXG4gMzU0OlxcdFxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbiAzNTU6XFx0XFxuIDM1NjpcXHRcXHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XFxuIDM1NzpcXHRcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbiAzNTg6XFx0XFxuIDM1OTpcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiAzNjA6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gMzYxOlxcdFxcdFxcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XFxuIDM2MjpcXHRcXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuIDM2MzpcXHRcXHRcXHRicmVhaztcXG4gMzY0OlxcdFxcdGNhc2UgVzUyMDA6XFxuIDM2NTpcXHRcXHRcXHR3NTIwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbiAzNjY6XFx0XFx0XFx0cnRyID0gVzUxMDBfUlRSO1xcbiAzNjc6XFx0XFx0XFx0YnJlYWs7XFxuIDM2ODpcXHRcXHRjYXNlIFc1NTAwOlxcbiAzNjk6XFx0XFx0XFx0dzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcXG4gMzcwOlxcdFxcdFxcdHJ0ciA9IFc1NTAwX1JUUjtcXG4gMzcxOlxcdFxcdFxcdGJyZWFrO1xcbiAzNzI6XFx0XFx0ZGVmYXVsdDpcXG4gMzczOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNzQ6XFx0XFx0fVxcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXFxuIDM3NzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzc4OlxcdFxcbiAzNzk6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MDpcXHR9XFxuIDM4MTpcXHRcXG4gMzgyOlxcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbiAzODM6XFx0e1xcbiAzODQ6XFx0XFx0dTggbW9kZSA9IFMwX01SX01BQ1JBVztcXG4gMzg1OlxcdFxcbiAzODY6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vwcm9taXNjKSB7XFxuIDM4NzpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VjaGlwX2lkID09IFc1NTAwKVxcbiAzODg6XFx0XFx0XFx0XFx0bW9kZSB8PSBXNTUwMF9TMF9NUl9NRjtcXG4gMzg5OlxcdFxcdFxcdGVsc2VcXG4gMzkwOlxcdFxcdFxcdFxcdG1vZGUgfD0gUzBfTVJfTUY7XFxuIDM5MTpcXHRcXHR9XFxuIDM5MjpcXHRcXG4gMzkzOlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG4gMzk0OlxcdFxcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XFxuIDM5NTpcXHRcXHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcXG4gMzk2OlxcdH1cXG4gMzk3OlxcdFxcbiAzOTg6XFx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuIDM5OTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjIwLjQ4NjA1NTg3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU2NjUwMzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgSGFyZHdhcmUgUmVzZXQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHJlc2V0IHJvdXRpbmUgcmVsaWVzIG9uIHJlYWRpbmcgYSByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHVzaW5nIGB3NTEwMF9yZWFkMTYocHJpdiwgcnRyKWAuICBJdCdzIGV4cGVjdGluZyB0aGlzIHJlZ2lzdGVyLCBwcm9iYWJseSBzb21lIHNvcnQgb2Ygc3RhdHVzIG9yIGNvbnRyb2wgcmVnaXN0ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBXNTEwMCwgdG8gaG9sZCBhIHNwZWNpZmljIHZhbHVlLCBgUlRSX0RFRkFVTFRgLiBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB0aGlzIGV4cGVjdGVkIGRlZmF1bHQsIHRoZSBmdW5jdGlvbiBmbGFncyBhIGhhcmR3YXJlIGZhaWx1cmUgd2l0aCBgLUVOT0RFVmAuXG5cbkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uICBTaW5jZSB0aGlzIGlzIGEgcGh5c2ljYWwgU1BJIGRldmljZSBhbmQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3l6a2FsbGVyIGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZSwgdGhhdCByZWdpc3RlciByZWFkIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwuIE15IGd1dCB0ZWxscyBtZSBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIHJldHVybiBzb21ldGhpbmcgb3RoZXIgdGhhbiBgUlRSX0RFRkFVTFRgIOKAkyBtYXliZSB6ZXJvLCBtYXliZSB3aGF0ZXZlciBnYXJiYWdlIHRoZSBkdW1teSBTUEkgZHJpdmVyIGlzIHNwaXR0aW5nIG91dC4gIEl0J3MgdW5saWtlbHkgdG8gYmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBzdGF0ZSwgZ2l2ZW4gYSBsYWNrIG9mIHByb3BlciBpbml0aWFsaXphdGlvbiBhbmQgZW11bGF0aW9uLlxuXG5CdXQgd2FpdCwgd2hhdCBleGFjdGx5ICppcyogYFJUUl9ERUZBVUxUYD8gIEkgbmVlZCB0byBnbyBhbmQgZmluZCB3aGVyZSB0aGF0IGlzIGRlZmluZWQuIFRoYXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiAgSSdtIGd1ZXNzaW5nIHRoaXMgbWlnaHQgaGF2ZSBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgKlIqZXRyeSAqVCppbWUgKlIqZWdpc3Rlciwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG1heWJlPyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBhc3N1bWVkIGluaXRpYWwgc3RhdGUgb2YgdGhlIGhhcmR3YXJlIGluIG9yZGVyIHRvIHRyb3VibGVzaG9vdCB0aGlzLCBhbmQgdG8gZGV2ZWxvcCBzdHJhdGVnaWVzIHRvIGNpcmN1bXZlbnQgdGhpcyBleHBlY3RlZCBpbml0aWFsIHZhbHVlIGluIHRoZSBlbXVsYXRvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDoyNS43NDI3MTA3NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjE0MzY3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRSX0RFRkFVTFRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcXHRcXHQweDAwMTcgLyogUmV0cnkgVGltZS12YWx1ZSBSZWdpc3RlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFxcdFxcdCAgMjAwMCAvKiA9MHgwN2QwICgyMDAwKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzUwPXN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc2OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjI3Ljg2NDE1Mzc4N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODY5MjM5MDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IEFuIEFuYWx5c2lzIG9mIHRoZSBXNTEwMCBTUEkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQuIFRoZSBgUlRSX0RFRkFVTFRgIHJlZ2lzdGVyIGlzIHNldCB0byAyMDAwICgweDA3ZDApLiBVbmxlc3Mgc3l6a2FsbGVyIGNhbiBzb21laG93IHNwZWNpZmljYWxseSBtb2NrIFNQSSByZWFkcyB0byByZXR1cm4gdGhpcyB2YWx1ZSBkdXJpbmcgdGhlIHByb2JlLCB0aGUgcHJvYmUgaXRzZWxmIHdpbGwgZmFpbCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBpc3N1ZS4gSSBrbm93IHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGdlbmVyaWMgU1BJIG1vY2tpbmcgZnJhbWV3b3JrIGNvbmZpZ3VyYWJsZSBvbiBhIHBlci1kZXZpY2UgYmFzaXMuIEl0IG9mZmVycyBsaW1pdGVkIFNQSSBzdXBwb3J0IHRocm91Z2ggYHNwaWRldmAgYW5kIHNpbWlsYXIsIGJ1dCB0aGF0IGlzIGludGVuZGVkIGZvciB1c2Vyc3BhY2UgaW50ZXJhY3Rpb25zIHdpdGggU1BJLCBub3QgZm9yIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgZm9yIGEga2VybmVsIGRyaXZlci4gRXNzZW50aWFsbHksIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIFNQSSBkZXZpY2VzIGF0IGFsbC5cblxuQmVjYXVzZSBvZiB0aGlzLCB0aGUgYHc1MTAwX3Byb2JlYCBjYWxsIHdpbGwgaW52YXJpYWJseSBmYWlsLCBtZWFuaW5nIHRoZSBuZXcgY29kZSBhZGRlZCBmb3IgSVJRIHJlcXVlc3RzIGFuZCB0aGUgYHc1MTAwX2RldGVjdF9saW5rYCBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGx5IGFkZGluZyBhIEdQSU8gcGluIGZvciBsaW5rIGRldGVjdGlvbiwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMuXG5cbkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBJdCBhbHNvIGFsaWducyB3aXRoIHRoZSByYXRpb25hbGUgb2YgY29kZSB0aGF0IFwicmVxdWlyZVtzXSBwaHlzaWNhbCAuLi4gaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gV2hpbGUgdGhpcyBpcyBTUEkgYW5kIG5vdCBQQ0llLCB0aGUgcHJpbmNpcGxlIGlzIHRoZSBzYW1lLiBJdCBpcyBhIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50IHBhdGNoLlxuXG5Ob3csIGxldCBtZSBkb3VibGUgY2hlY2s7IGlzIHRoZXJlIGFueSBvdGhlciB3YXkgdGhpcyBjb2RlIGNvdWxkIHBvc3NpYmx5IGJlIHJlYWNoZWQ/IEkgd2lsbCBxdWlja2x5IHZlcmlmeS4gVGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYHc1MTAwX3NwaV9wcm9iZWAsIHdoaWNoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGB3NTEwMF9zcGlfZHJpdmVyYC4gVGhlIGRyaXZlciBzcGVjaWZpY2FsbHkgYmluZHMgdG8gU1BJIGRldmljZXMgd2l0aCBjb21wYXRpYmxlIHN0cmluZ3MgXCJ3aXpuZXQsdzUxMDBcIiwgXCJ3aXpuZXQsdzUyMDBcIiwgYW5kIFwid2l6bmV0LHc1NTAwXCIuIFdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gZXF1aXZhbGVudCBlbXVsYXRpb24sIHRoZSBwcm9iZSB3aWxsIGZhaWwgYXQgYHc1MTAwX2h3X3Jlc2V0YC4gSXQgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci5cblxuVGhlcmVmb3JlLCBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTk2LCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDo0Ni41NTY1NDg4M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBTUEkgRXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgYSBsaW5rIEdQSU8uIFRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgU1BJIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcjvsc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 18:05:29 +0000 UTC FinishedAt: 2026-08-04 18:30:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBwZXJmb3JtcyBoYXJkd2FyZSByZWdpc3RlciBjaGVja3MgKGUuZy4sIHZlcmlmeWluZyB0aGUgUlRSIHJlZ2lzdGVyIHZhbHVlKSB0aGF0IHdpbGwgZmFpbCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6Mjk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNDA3MTg1MjlkYmFmOTk0OGM0ZmEwZmEyOTE2ZWQzNGMyYmRjZmMxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxODoyOTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC50eHRcbmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggZTk2NjU3OThjNGJlNi4uMDAwMDAwMDAwMDAwMFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG4mIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsXG5AQCAtMSw1MCAmIzQzOzAsMCBAQFxuLSogV2l6bmV0IHc1eDAwXG4tXG4tVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuXG4tXG4tRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluXG4tdGhlIFNQSSBtYXN0ZXIgbm9kZS5cbi1cbi1SZXF1aXJlZCBwcm9wZXJ0aWVzOlxuLS0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6XG4tXHQgICAgICBcJiMzNDt3aXpuZXQsdzUxMDBcJiMzNDtcbi1cdCAgICAgIFwmIzM0O3dpem5ldCx3NTIwMFwmIzM0O1xuLVx0ICAgICAgXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7XG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZFxuLSAgICAgICAgICAgICAgdG8gYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseVxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXG4tICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC5cbi0tIHBpbmN0cmwtbmFtZXM6IExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXG4tICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nXG4tICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIGZyZXF1ZW5jeSBvZiB0aGUgU1BJIGJ1cyB3aGVuIGFjY2Vzc2luZyB0aGUgdzU1MDAuXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXG4tICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4tLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4tXG4tXG4tRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4tXG4tXHUwMDI2c3BpIHtcbi1cdGV0aGVybmV0QDA6IHc1NTAwQDAge1xuLVx0XHRjb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7O1xuLVx0XHRyZWcgPSBcdTAwM2MwXHUwMDNlO1xuLVx0XHRwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0Oztcbi1cdFx0cGluY3RybC0wID0gXHUwMDNjXHUwMDI2ZXRoMV9waW5zXHUwMDNlO1xuLVx0XHRpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbi1cdFx0aW50ZXJydXB0cyA9IFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1x1MDAzZTtcbi1cdFx0c3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MzMDAwMDAwMFx1MDAzZTtcbi1cdH07XG4tfTtcbi1cbi1cdTAwMjZncGlvIHtcbi1cdGV0aDFfcGluczogZXRoMV9waW5zIHtcbi1cdFx0YnJjbSxwaW5zID0gXHUwMDNjMjVcdTAwM2U7XG4tXHRcdGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwXHUwMDNlOyAvKiBpbiAqL1xuLVx0XHRicmNtLHB1bGwgPSBcdTAwM2MwXHUwMDNlOyAvKiBub25lICovXG4tXHR9O1xuLX07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44ZjQ1YTVkNzczZmUzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sXG5AQCAtMCwwICYjNDM7MSwxMDMgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXG4mIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuJiM0MztcbiYjNDM7dGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxuJiM0MztcbiYjNDM7ZGVzY3JpcHRpb246IHxcbiYjNDM7ICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cbiYjNDM7XG4mIzQzOyAgRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluIHRoZSBTUEkgbWFzdGVyIG5vZGUuXG4mIzQzO1xuJiM0MzthbGxPZjpcbiYjNDM7ICAtICRyZWY6IC9zY2hlbWFzL25ldC9ldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjXG4mIzQzOyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcbiYjNDM7XG4mIzQzO3Byb3BlcnRpZXM6XG4mIzQzOyAgY29tcGF0aWJsZTpcbiYjNDM7ICAgIGVudW06XG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1MTAwXG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1MjAwXG4mIzQzOyAgICAgIC0gd2l6bmV0LHc1NTAwXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgaW50ZXJydXB0czpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG9cbiYjNDM7ICAgICAgYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseSBnZW5lcmF0ZXNcbiYjNDM7ICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxuJiM0MzsgICAgICBzaWduYWwuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MzsgICAgbWluSXRlbXM6IDFcbiYjNDM7XG4mIzQzOyAgcGluY3RybC1uYW1lczpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uXG4mIzQzOyAgICBlbnVtOlxuJiM0MzsgICAgICAtIGRlZmF1bHRcbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHBpbmN0cmwtMDpcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBMaXN0IG9mIHBoYW5kbGVzIHRvIGNvbmZpZ3VyZSB0aGUgR1BJTyBwaW4gdXNlZCBhcyBpbnRlcnJ1cHQgbGluZSwgc2VlXG4mIzQzOyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbiYjNDM7ICAgIG1pbkl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXG4mIzQzO1xuJiM0MzsgIHNwaS1tYXgtZnJlcXVlbmN5OlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvXG4mIzQzOyAgICAgIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLCBib2FyZFxuJiM0MzsgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4mIzQzOyAgICBtYXhpbXVtOiA4MDAwMDAwMFxuJiM0MztcbiYjNDM7ICBsaW5rLWdwaW9zOlxuJiM0MzsgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuXG4mIzQzOyAgICBtYXhJdGVtczogMVxuJiM0MztcbiYjNDM7cmVxdWlyZWQ6XG4mIzQzOyAgLSBjb21wYXRpYmxlXG4mIzQzOyAgLSByZWdcbiYjNDM7ICAtIGludGVycnVwdHNcbiYjNDM7ICAtIHBpbmN0cmwtbmFtZXNcbiYjNDM7ICAtIHBpbmN0cmwtMFxuJiM0MztcbiYjNDM7dW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuJiM0MztcbiYjNDM7ZXhhbXBsZXM6XG4mIzQzOyAgLSB8XG4mIzQzOyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xuJiM0MztcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4mIzQzOyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuJiM0MztcbiYjNDM7ICAgIHNwaSB7XG4mIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gXHUwMDNjMFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XG4mIzQzOyAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1NTAwXCYjMzQ7O1xuJiM0MzsgICAgICAgICAgICByZWcgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXCYjMzQ7ZGVmYXVsdFwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcGluY3RybC0wID0gXHUwMDNjXHUwMDI2ZXRoMV9waW5zXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1x1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgc3BpLW1heC1mcmVxdWVuY3kgPSBcdTAwM2MzMDAwMDAwMFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgbGluay1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFsgYTAgYjAgYzAgZDAgZTAgZjAgXTtcbiYjNDM7ICAgICAgICB9O1xuJiM0MzsgICAgfTtcbiYjNDM7XG4mIzQzOyAgICBcdTAwMjZncGlvIHtcbiYjNDM7ICAgICAgZXRoMV9waW5zOiBldGgxX3BpbnMge1xuJiM0MzsgICAgICAgIGJyY20scGlucyA9IFx1MDAzYzI1IDRcdTAwM2U7XG4mIzQzOyAgICAgICAgYnJjbSxmdW5jdGlvbiA9IFx1MDAzYzAgMFx1MDAzZTsgLyogaW4gKi9cbiYjNDM7ICAgICAgICBicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xuaW5kZXggNTNkOGRjNjQyZmJkNi4uMTQxMGE5ZmNmYTkyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xuQEAgLTIyLDYgJiM0MzsyMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW9wb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3c1MTAwLmhcJiMzNDtcbiBcbkBAIC0xNTQsNiAmIzQzOzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4mIzQzO1x0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xuIFxuIFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbkBAIC00MTQsNiAmIzQzOzQxNiwxNiBAQCBzdGF0aWMgdm9pZCB3NTEwMF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0c2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pXG4mIzQzO1x0XHRyZXR1cm4gISFncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICYjNDM7NjI4LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbiBcdHJldHVybiBJUlFfSEFORExFRDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xuJiM0MztcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4mIzQzO1xuJiM0MztcdGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7XG4mIzQzO1x0XHRpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKSB7XG4mIzQzO1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCYjMzQ7bGluayBpcyB1cFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRuZXRpZl9pbmZvKHByaXYsIGxpbmssIG5kZXYsIFwmIzM0O2xpbmsgaXMgZG93blxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuQEAgLTY1OSw2ICYjNDM7Njg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNjc4LDYgJiM0Mzs3MTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbiYjNDM7XHQuZ2V0X2xpbmtcdFx0PSB3NTEwMF9nZXRfbGluayxcbiBcdC5nZXRfcmVnc19sZW5cdFx0PSB3NTEwMF9nZXRfcmVnc19sZW4sXG4gXHQuZ2V0X3JlZ3NcdFx0PSB3NTEwMF9nZXRfcmVncyxcbiB9O1xuQEAgLTc1MSw2ICYjNDM7NzkwLDEzIEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbiBcdHByaXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gXHRwcml2LVx1MDAzZW9wcyA9IG9wcztcbiBcdHByaXYtXHUwMDNlaXJxID0gaXJxO1xuJiM0MztcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcJiMzNDtsaW5rXCYjMzQ7LCBHUElPRF9JTik7XG4mIzQzO1x0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbiYjNDM7XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXHUwMDNlbGlua19ncGlvKSxcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXG5cJiMzNDspO1xuJiM0MztcdFx0cHJpdi1cdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xuJiM0MztcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4mIzQzO1x0fVxuIFxuIFx0bmRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcbiBcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcbkBAIC04MDMsOCAmIzQzOzg0OSwyOSBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9odztcbiBcbiYjNDM7XHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbiYjNDM7XHRcdGludCBsaW5rX2lycSA9IGdwaW9kX3RvX2lycShwcml2LVx1MDAzZWxpbmtfZ3Bpbyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGxpbmtfaXJxIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBsaW5rX2lycSxcbiYjNDM7XHRcdFx0XHRcdCAgICBcJiMzNDtObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBlcnJfZ3BpbztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgbGlua19pcnEsIE5VTEwsXG4mIzQzO1x0XHRcdFx0XHRcdHc1MTAwX2RldGVjdF9saW5rLFxuJiM0MztcdFx0XHRcdFx0XHRJUlFGX1RSSUdHRVJfUklTSU5HIHxcbiYjNDM7XHRcdFx0XHRcdFx0SVJRRl9UUklHR0VSX0ZBTExJTkcgfFxuJiM0MztcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsXG4mIzQzO1x0XHRcdFx0XHRcdFwmIzM0O3c1MTAwLWxpbmtcJiMzNDssIHByaXYtXHUwMDNlbmRldik7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRnb3RvIGVycl9ncGlvO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiYjNDM7ZXJyX2dwaW86XG4mIzQzO1x0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuIGVycl9odzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXHUwMDNleGZlcl93cSk7XG4gZXJyX3dxOlxuQEAgLTg1Nyw2ICYjNDM7OTI0LDEwIEBAIHN0YXRpYyBpbnQgdzUxMDBfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XG4gXG4gXHRcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XG4mIzQzO1xuJiM0MztcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuJiM0MztcdFx0ICAgIGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMClcbiYjNDM7XHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbiBcdH1cbiBcdHJldHVybiAwO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBTUEkgRXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgYSBsaW5rIEdQSU8uIFRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgU1BJIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI0MDcxODUyOWRiYWY5OTQ4YzRmYTBmYTI5MTZlZDM0YzJiZGNmYzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjI5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTY2NTc5OGM0YmU2Li4wMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dAomIzQzOyYjNDM7JiM0MzsgL2Rldi9udWxsCkBAIC0xLDUwICYjNDM7MCwwIEBACi0qIFdpem5ldCB3NXgwMAotCi1UaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS4KLQotRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluCi10aGUgU1BJIG1hc3RlciBub2RlLgotCi1SZXF1aXJlZCBwcm9wZXJ0aWVzOgotLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLQkgICAgICAmIzM0O3dpem5ldCx3NTEwMCYjMzQ7Ci0JICAgICAgJiMzNDt3aXpuZXQsdzUyMDAmIzM0OwotCSAgICAgICYjMzQ7d2l6bmV0LHc1NTAwJiMzNDsKLS0gcmVnOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uCi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZAotICAgICAgICAgICAgICB0byBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5Ci0gICAgICAgICAgICAgIGdlbmVyYXRlcyBmYWxsaW5nIGVkZ2UgaW50ZXJydXB0cywgaG93ZXZlciwgYWRkaXRpb25hbCBib2FyZCBsb2dpYwotICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC4KLS0gcGluY3RybC1uYW1lczogTGlzdCBvZiBhc3NpZ25lZCBzdGF0ZSBuYW1lcywgc2VlIHBpbmN0cmwgYmluZGluZyBkb2N1bWVudGF0aW9uLgotLSBwaW5jdHJsLTA6IExpc3Qgb2YgcGhhbmRsZXMgdG8gY29uZmlndXJlIHRoZSBHUElPIHBpbiB1c2VkIGFzIGludGVycnVwdCBsaW5lLAotICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nCi0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi4KLQotT3B0aW9uYWwgcHJvcGVydGllczoKLS0gc3BpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4KLSAgQWNjb3JkaW5nIHRvIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLAotICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuCi0tIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLQotCi1FeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKToKLQotJmFtcDtzcGkgewotCWV0aGVybmV0QDA6IHc1NTAwQDAgewotCQljb21wYXRpYmxlID0gJiMzNDt3aXpuZXQsdzU1MDAmIzM0OzsKLQkJcmVnID0gJmx0OzAmZ3Q7OwotCQlwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7Ci0JCXBpbmN0cmwtMCA9ICZsdDsmYW1wO2V0aDFfcGlucyZndDs7Ci0JCWludGVycnVwdC1wYXJlbnQgPSAmbHQ7JmFtcDtncGlvJmd0OzsKLQkJaW50ZXJydXB0cyA9ICZsdDsyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkcmZ3Q7OwotCQlzcGktbWF4LWZyZXF1ZW5jeSA9ICZsdDszMDAwMDAwMCZndDs7Ci0JfTsKLX07Ci0KLSZhbXA7Z3BpbyB7Ci0JZXRoMV9waW5zOiBldGgxX3BpbnMgewotCQlicmNtLHBpbnMgPSAmbHQ7MjUmZ3Q7OwotCQlicmNtLGZ1bmN0aW9uID0gJmx0OzAmZ3Q7OyAvKiBpbiAqLwotCQlicmNtLHB1bGwgPSAmbHQ7MCZndDs7IC8qIG5vbmUgKi8KLQl9OwotfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNDVhNWQ3NzNmZTMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sCkBAIC0wLDAgJiM0MzsxLDEwMyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKQomIzQzOyVZQU1MIDEuMgomIzQzOy0tLQomIzQzOyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBXaXpuZXQgdzV4MDAgU1BJIEV0aGVybmV0IENvbnRyb2xsZXIKJiM0MzsKJiM0MztkZXNjcmlwdGlvbjogfAomIzQzOyAgVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuCiYjNDM7CiYjNDM7ICBGb3IgZWFjaCBkZXZpY2UgY29ubmVjdGVkIHRvIGEgU1BJIGJ1cywgZGVmaW5lIGEgY2hpbGQgbm9kZSB3aXRoaW4gdGhlIFNQSSBtYXN0ZXIgbm9kZS4KJiM0MzsKJiM0MzthbGxPZjoKJiM0MzsgIC0gJHJlZjogL3NjaGVtYXMvbmV0L2V0aGVybmV0LWNvbnRyb2xsZXIueWFtbCMKJiM0MzsgIC0gJHJlZjogL3NjaGVtYXMvc3BpL3NwaS1wZXJpcGhlcmFsLXByb3BzLnlhbWwjCiYjNDM7CiYjNDM7cHJvcGVydGllczoKJiM0MzsgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGVudW06CiYjNDM7ICAgICAgLSB3aXpuZXQsdzUxMDAKJiM0MzsgICAgICAtIHdpem5ldCx3NTIwMAomIzQzOyAgICAgIC0gd2l6bmV0LHc1NTAwCiYjNDM7CiYjNDM7ICByZWc6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBpbnRlcnJ1cHRzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG8KJiM0MzsgICAgICBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5IGdlbmVyYXRlcwomIzQzOyAgICAgIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljIG1pZ2h0IGludmVydCB0aGUKJiM0MzsgICAgICBzaWduYWwuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBwaW5jdHJsLW5hbWVzOgomIzQzOyAgICBkZXNjcmlwdGlvbjoKJiM0MzsgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uCiYjNDM7ICAgIGVudW06CiYjNDM7ICAgICAgLSBkZWZhdWx0CiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBwaW5jdHJsLTA6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIExpc3Qgb2YgcGhhbmRsZXMgdG8gY29uZmlndXJlIHRoZSBHUElPIHBpbiB1c2VkIGFzIGludGVycnVwdCBsaW5lLCBzZWUKJiM0MzsgICAgICBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uCiYjNDM7ICAgIG1pbkl0ZW1zOiAxCiYjNDM7CiYjNDM7ICBsb2NhbC1tYWMtYWRkcmVzczogdHJ1ZQomIzQzOwomIzQzOyAgc3BpLW1heC1mcmVxdWVuY3k6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvCiYjNDM7ICAgICAgdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsIGJvYXJkCiYjNDM7ICAgICAgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLgomIzQzOyAgICBtYXhpbXVtOiA4MDAwMDAwMAomIzQzOwomIzQzOyAgbGluay1ncGlvczoKJiM0MzsgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuCiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7CiYjNDM7cmVxdWlyZWQ6CiYjNDM7ICAtIGNvbXBhdGlibGUKJiM0MzsgIC0gcmVnCiYjNDM7ICAtIGludGVycnVwdHMKJiM0MzsgIC0gcGluY3RybC1uYW1lcwomIzQzOyAgLSBwaW5jdHJsLTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgLyogRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSkgKi8KJiM0MzsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oJmd0OwomIzQzOyAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgmZ3Q7CiYjNDM7CiYjNDM7ICAgIHNwaSB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7CiYjNDM7ICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O3dpem5ldCx3NTUwMCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDswJmd0OzsKJiM0MzsgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gJiMzNDtkZWZhdWx0JiMzNDs7CiYjNDM7ICAgICAgICAgICAgcGluY3RybC0wID0gJmx0OyZhbXA7ZXRoMV9waW5zJmd0OzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbyZndDs7CiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9ICZsdDsyNSBJUlFfVFlQRV9FREdFX0ZBTExJTkcmZ3Q7OwomIzQzOyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gJmx0OzMwMDAwMDAwJmd0OzsKJiM0MzsgICAgICAgICAgICBsaW5rLWdwaW9zID0gJmx0OyZhbXA7Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOyAgICAgICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWyBhMCBiMCBjMCBkMCBlMCBmMCBdOwomIzQzOyAgICAgICAgfTsKJiM0MzsgICAgfTsKJiM0MzsKJiM0MzsgICAgJmFtcDtncGlvIHsKJiM0MzsgICAgICBldGgxX3BpbnM6IGV0aDFfcGlucyB7CiYjNDM7ICAgICAgICBicmNtLHBpbnMgPSAmbHQ7MjUgNCZndDs7CiYjNDM7ICAgICAgICBicmNtLGZ1bmN0aW9uID0gJmx0OzAgMCZndDs7IC8qIGluICovCiYjNDM7ICAgICAgICBicmNtLHB1bGwgPSAmbHQ7MCAwJmd0OzsgLyogbm9uZSAqLwomIzQzOyAgICB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwppbmRleCA1M2Q4ZGM2NDJmYmQ2Li4xNDEwYTlmY2ZhOTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYwpAQCAtMjIsNiAmIzQzOzIyLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pb3BvcnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pcnEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvZ3Bpby9jb25zdW1lci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O3c1MTAwLmgmIzM0OwogCkBAIC0xNTQsNiAmIzQzOzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHsKIAl1MTYgczBfcnhfYnVmX3NpemU7CiAKIAlpbnQgaXJxOwomIzQzOwlzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87CiAKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKQEAgLTQxNCw2ICYjNDM7NDE2LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCQlzaXplb2YoaW5mby0mZ3Q7YnVzX2luZm8pKTsKIH0KIAomIzQzO3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKQomIzQzOwkJcmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3Bpbyk7CiYjNDM7CiYjNDM7CXJldHVybiAxOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CkBAIC02MTYsNiAmIzQzOzYyOCwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCiYjNDM7c3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7CiYjNDM7CXN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7CiYjNDM7CiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkgewomIzQzOwkJCW5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgJiMzNDtsaW5rIGlzIHVwXG4mIzM0Oyk7CiYjNDM7CQkJbmV0aWZfY2Fycmllcl9vbihuZGV2KTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJbmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCAmIzM0O2xpbmsgaXMgZG93blxuJiMzNDspOwomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBJUlFfSEFORExFRDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdiwKQEAgLTY1OSw2ICYjNDM7Njg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAl3NTEwMF9od19zdGFydChwcml2KTsKIAluYXBpX2VuYWJsZSgmYW1wO3ByaXYtJmd0O25hcGkpOwogCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwomIzQzOwomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpZiAoZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtJmd0O2xpbmtfZ3BpbykgIT0gMCkKJiM0MzsJCQluZXRpZl9jYXJyaWVyX29uKG5kZXYpOwomIzQzOwkJZWxzZQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpOwomIzQzOwl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTY3OCw2ICYjNDM7NzE2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHsKIAkuZ2V0X2RydmluZm8JCT0gdzUxMDBfZ2V0X2RydmluZm8sCiAJLmdldF9tc2dsZXZlbAkJPSB3NTEwMF9nZXRfbXNnbGV2ZWwsCiAJLnNldF9tc2dsZXZlbAkJPSB3NTEwMF9zZXRfbXNnbGV2ZWwsCiYjNDM7CS5nZXRfbGluawkJPSB3NTEwMF9nZXRfbGluaywKIAkuZ2V0X3JlZ3NfbGVuCQk9IHc1MTAwX2dldF9yZWdzX2xlbiwKIAkuZ2V0X3JlZ3MJCT0gdzUxMDBfZ2V0X3JlZ3MsCiB9OwpAQCAtNzUxLDYgJiM0Mzs3OTAsMTMgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLAogCXByaXYtJmd0O25kZXYgPSBuZGV2OwogCXByaXYtJmd0O29wcyA9IG9wczsKIAlwcml2LSZndDtpcnEgPSBpcnE7CiYjNDM7CXByaXYtJmd0O2xpbmtfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgJiMzNDtsaW5rJiMzNDssIEdQSU9EX0lOKTsKJiM0MzsJaWYgKElTX0VSUihwcml2LSZndDtsaW5rX2dwaW8pKSB7CiYjNDM7CQllcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LSZndDtsaW5rX2dwaW8pLAomIzQzOwkJCQkgICAgJiMzNDtmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xuJiMzNDspOwomIzQzOwkJcHJpdi0mZ3Q7bGlua19ncGlvID0gTlVMTDsKJiM0MzsJCWdvdG8gZXJyX3JlZ2lzdGVyOwomIzQzOwl9CiAKIAluZGV2LSZndDtuZXRkZXZfb3BzID0gJmFtcDt3NTEwMF9uZXRkZXZfb3BzOwogCW5kZXYtJmd0O2V0aHRvb2xfb3BzID0gJmFtcDt3NTEwMF9ldGh0b29sX29wczsKQEAgLTgwMyw4ICYjNDM7ODQ5LDI5IEBAIGludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcywKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9odzsKIAomIzQzOwlpZiAocHJpdi0mZ3Q7bGlua19ncGlvKSB7CiYjNDM7CQlpbnQgbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi0mZ3Q7bGlua19ncGlvKTsKJiM0MzsKJiM0MzsJCWlmIChsaW5rX2lycSAmbHQ7IDApIHsKJiM0MzsJCQllcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgbGlua19pcnEsCiYjNDM7CQkJCQkgICAgJiMzNDtObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXG4mIzM0Oyk7CiYjNDM7CQkJZ290byBlcnJfZ3BpbzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBsaW5rX2lycSwgTlVMTCwKJiM0MzsJCQkJCQl3NTEwMF9kZXRlY3RfbGluaywKJiM0MzsJCQkJCQlJUlFGX1RSSUdHRVJfUklTSU5HIHwKJiM0MzsJCQkJCQlJUlFGX1RSSUdHRVJfRkFMTElORyB8CiYjNDM7CQkJCQkJSVJRRl9PTkVTSE9ULAomIzQzOwkJCQkJCSYjMzQ7dzUxMDAtbGluayYjMzQ7LCBwcml2LSZndDtuZGV2KTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKQomIzQzOwkJCWdvdG8gZXJyX2dwaW87CiYjNDM7CX0KJiM0MzsKIAlyZXR1cm4gMDsKIAomIzQzO2Vycl9ncGlvOgomIzQzOwlmcmVlX2lycShwcml2LSZndDtpcnEsIG5kZXYpOwogZXJyX2h3OgogCWRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtJmd0O3hmZXJfd3EpOwogZXJyX3dxOgpAQCAtODU3LDYgJiM0Mzs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCQl3NTEwMF9od19zdGFydChwcml2KTsKIAogCQluZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOwomIzQzOwomIzQzOwkJaWYgKCFwcml2LSZndDtsaW5rX2dwaW8gfHwKJiM0MzsJCSAgICBncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi0mZ3Q7bGlua19ncGlvKSAhPSAwKQomIzQzOwkJCW5ldGlmX2NhcnJpZXJfb24obmRldik7CiAJfQogCXJldHVybiAwOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDQwCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFdpem5ldCBXNTEwMCBMaW5rIEdQSU8gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCBhZGRzIGEgYGxpbmstZ3Bpb3NgIGVudHJ5IHRvIHRoZSBXNTEwMCBFdGhlcm5ldCBkcml2ZXImIzM5O3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgZ29pbmcgdG8gdXNlIHRoaXMgR1BJTyB0byBtb25pdG9yIHRoZSBsaW5rIHN0YXR1cyBhbmQgdXBkYXRlIHRoZSBjYXJyaWVyIHN0YXRlIGluIGB3NTEwMC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKVGhpcyBkcml2ZXIgdGFyZ2V0cyB0aG9zZSBXaXpuZXQgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXJzIOKAkyB0aGUgVzUxMDAsIFc1MjAwLCBhbmQgVzU1MDAuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuICplYXNpbHkqIGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBTdGFuZGFyZCBRRU1VIHNldHVwcyB0eXBpY2FsbHkgZG9uJiMzOTt0IHJlYWRpbHkgZXhwb3NlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRob3V0IGEgbG90IG9mIHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gU1BJIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSB0b3VnaCB0byBnZXQgYXQgZm9yIGZ1enppbmcgd2l0aG91dCBhIGxvdCBvZiBleHRyYSB3b3JrLgoKSG1tLi4uIGlzIHRoZXJlIGEgd29ya2Fyb3VuZCB0byBmdXp6IFNQSSBkZXZpY2VzPyBJIHNlZW0gdG8gcmVjYWxsIHN5emthbGxlciBoYXMgc29tZSBTUEkgc3VwcG9ydCwgbWF5YmUgdGhyb3VnaCBgc3BpZGV2YCBvciBzb21ldGhpbmcgc2ltaWxhciwgYnV0IGdldHRpbmcgKnNwZWNpZmljKiBTUEkgRXRoZXJuZXQgY29udHJvbGxlciBmdXp6aW5nIHRvIHdvcmsgaXMgdXN1YWxseSBkaWZmaWN1bHQgdW5sZXNzIGl0JiMzOTtzIGJlZW4gZXhwbGljaXRseSBzZXQgdXAuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIHN5emthbGxlciBoYXMgYW55IGJ1aWx0LWluIHN1cHBvcnQgZm9yIHdpem5ldC4gSSYjMzk7bSBnb2luZyB0byBydW4gYSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgc2VhcmNoIGFuZCBsb29rIGZvciAmIzM0O3dpem5ldCYjMzQ7IG9yICYjMzQ7dzUxMDAmIzM0OyBpbiB0aGUga2VybmVsIHNvdXJjZS4gVGhhdCBzaG91bGQgdGVsbCBtZSBpZiB0aGVyZSYjMzk7cyBhbnkgZXhpc3RpbmcgZ3JvdW5kd29yayB0byBsZXZlcmFnZS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dzUxMDAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbD0xOD1wcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtMjAtICAgIGVudW06XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIxOiAgICAgIC0gd2l6bmV0LHc1MTAwXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTIyLSAgICAgIC0gd2l6bmV0LHc1MjAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnLTI5LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZzozMDpcdCAgd2lsbCBiZSBjYWxsZWQgdzUxMDAuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICYjNDM7PSB3NTEwMC5vIHc1MTAwLXNwaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjIxOiNpbmNsdWRlIFwmIzM0O3c1MTAwLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0zNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkMTYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NTE6XHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy01Mi1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU0LVx0ZGF0YSA9IHJldCBcdTAwM2NcdTAwM2MgODtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcdHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIgJiM0MzsgMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjYwOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlMTYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY0Olx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXHUwMDNlXHUwMDNlIDgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6Njg6XHRyZXR1cm4gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIgJiM0MzsgMSwgZGF0YSBcdTAwMjYgMHhmZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjcxOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3JlYWRidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cdFx0XHQgICAgICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbjsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcdFx0aW50IHJldCA9IHc1MTAwX3NwaV9yZWFkKG5kZXYsIGFkZHIgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjg3OnN0YXRpYyBpbnQgdzUxMDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXHRcdFx0ICAgICAgIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTkyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbGVuOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlx0XHRpbnQgcmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIgJiM0MzsgaSwgYnVmW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy05NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTEwMF9zcGlfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cdC5tYXlfc2xlZXAgPSB0cnVlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwNC1cdC5jaGlwX2lkID0gVzUxMDAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA1Olx0LnJlYWQgPSB3NTEwMF9zcGlfcmVhZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XHQud3JpdGUgPSB3NTEwMF9zcGlfd3JpdGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA3Olx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTA4Olx0LndyaXRlMTYgPSB3NTEwMF9zcGlfd3JpdGUxNixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XHQucmVhZGJ1bGsgPSB3NTEwMF9zcGlfcmVhZGJ1bGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTEwOlx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTExLX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMjYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEyNzpcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0xMjgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjQ0LVx0Lm1heV9zbGVlcCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTI3MD1zdGF0aWMgc3RydWN0IHc1NTAwX3NwaV9wcml2ICp3NTUwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNzMtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0zNzI9c3RhdGljIGludCB3NTUwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQwMTpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTUwMF9vcHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAyLVx0Lm1heV9zbGVlcCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTQ6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1MTAwXCYjMzQ7LCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTEwMCwgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTUtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7d2l6bmV0LHc1MjAwXCYjMzQ7LCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTIwMCwgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDE4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHc1MTAwX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDIxOnN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDIyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XHRjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDI0LVx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQzNy1cdGNhc2UgVzUxMDA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDM4Olx0XHRvcHMgPSBcdTAwMjZ3NTEwMF9zcGlfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQzOS1cdFx0cHJpdl9zaXplID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcdHJldHVybiB3NTEwMF9wcm9iZShcdTAwMjZzcGktXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXHUwMDNlaXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTY6c3RhdGljIHZvaWQgdzUxMDBfc3BpX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDU4Olx0dzUxMDBfcmVtb3ZlKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1OS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2MTpzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgdzUxMDBfc3BpX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ2MjpcdHsgXCYjMzQ7dzUxMDBcJiMzNDssIFc1MTAwIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVx0eyBcJiMzNDt3NTIwMFwmIzM0OywgVzUyMDAgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY5OnN0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciB3NTEwMF9zcGlfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cdC5kcml2ZXJcdFx0PSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcxOlx0XHQubmFtZVx0PSBcJiMzNDt3NTEwMFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzI6XHRcdC5wbVx0PSBcdTAwMjZ3NTEwMF9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlx0XHQub2ZfbWF0Y2hfdGFibGUgPSB3NTEwMF9vZl9tYXRjaCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3NTpcdC5wcm9iZVx0XHQ9IHc1MTAwX3NwaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XHQucmVtb3ZlXHRcdD0gdzUxMDBfc3BpX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Nzc6XHQuaWRfdGFibGVcdD0gdzUxMDBfc3BpX2lkcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzgtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Nzk6bW9kdWxlX3NwaV9kcml2ZXIodzUxMDBfc3BpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXCYjMzQ7dzUxMDAuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyOTojZGVmaW5lIERSVl9OQU1FXHRcJiMzNDt3NTEwMFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAtI2RlZmluZSBEUlZfVkVSU0lPTlx0XCYjMzQ7MjAxMi0wNC0wNFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE0NjpcdGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzM6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTc4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODM6c3RhdGljIGludCB3NTEwMF9yZWFkMTYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODg6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE5MzpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWxrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggKmJ1ZiwgaW50IGxlbilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTk4OnN0YXRpYyBpbnQgdzUxMDBfd3JpdGVidWxrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OS1cdFx0XHQgICBpbnQgbGVuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNDpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyMDpcdHJldCA9IHc1MTAwX3JlYWRidWxrKHByaXYsIGFkZHIsIGJ1ZiwgbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMS1cdGlmIChyZXQgfHwgIXJlbWFpbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjQ6XHRyZXR1cm4gdzUxMDBfcmVhZGJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgJiM0MzsgbGVuLCByZW1haW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI1LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIyNzpzdGF0aWMgaW50IHc1MTAwX3dyaXRlYnVmKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MTYgb2Zmc2V0LCBjb25zdCB1OCAqYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjI4LVx0XHRcdCAgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNDQ6XHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ1LVx0aWYgKHJldCB8fCAhcmVtYWluKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0ODpcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgJiM0MzsgbGVuLCByZW1haW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ5LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1MTpzdGF0aWMgaW50IHc1MTAwX3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTY6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9NUiwgTVJfUlNUKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1Ny1cdG1kZWxheSg1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI1ODpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX01SLCBNUl9QQik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjYzOnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI2NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjY3Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfUzBfQ1IocHJpdiksIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcxOlx0d2hpbGUgKHc1MTAwX3JlYWQocHJpdiwgVzUxMDBfUzBfQ1IocHJpdikpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI3Mi1cdFx0aWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjgwOnN0YXRpYyB2b2lkIHc1MTAwX3dyaXRlX21hY2FkZHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4NDpcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVx1MDAzZWRldl9hZGRyLCBFVEhfQUxFTik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg3OnN0YXRpYyB2b2lkIHc1MTAwX3NvY2tldF9pbnRyX21hc2soc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHU4IG1hc2spXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI5NjpcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTctfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk5OnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwMTpcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNDpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzA2Olx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwNy19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDk6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzEzLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTQ6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1RNU1IsIDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxODpzdGF0aWMgdm9pZCB3NTIwMF9tZW1vcnlfY29uZmlndXJlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMyNTpcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1JYTUVNX1NJWkUoMCksIDB4MTApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2Olx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjgtXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyA4OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI5Olx0XHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMzMDpcdFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzEtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzM0OnN0YXRpYyB2b2lkIHc1NTAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0MC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQxOlx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKDApLCAweDEwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NC1cdGZvciAoaSA9IDE7IGkgXHUwMDNjIDg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDU6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ2Olx0XHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTA6c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU0Olx0dzUxMDBfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTY6XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTc6XHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MC1cdGNhc2UgVzUxMDA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNjE6XHRcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNjItXHRcdHJ0ciA9IFc1MTAwX1JUUjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNzY6XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM4MjpzdGF0aWMgdm9pZCB3NTEwMF9od19zdGFydChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzkzOlx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfUzBfTVIocHJpdiksIG1vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk0Olx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM5NTpcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk2LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM5ODpzdGF0aWMgdm9pZCB3NTEwMF9od19jbG9zZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDA6XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX0NMT1NFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwMi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDEwOnN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDExLVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDE5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDIxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQyMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0Mjk6c3RhdGljIHUzMiB3NTEwMF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MzY6c3RhdGljIHZvaWQgdzUxMDBfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgdmFsdWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDM4Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDM6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NDQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ0ODpzdGF0aWMgdm9pZCB3NTEwMF9nZXRfcmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0OS1cdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLCB2b2lkICpidWYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDUxOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1My1cdHJlZ3MtXHUwMDNldmVyc2lvbiA9IDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTQ6XHR3NTEwMF9yZWFkYnVsayhwcml2LCBXNTEwMF9DT01NT05fUkVHUywgYnVmLCBXNTEwMF9DT01NT05fUkVHU19MRU4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU1LVx0YnVmICYjNDM7PSBXNTEwMF9DT01NT05fUkVHU19MRU47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTY6XHR3NTEwMF9yZWFkYnVsayhwcml2LCBTMF9SRUdTKHByaXYpLCBidWYsIFc1MTAwX1MwX1JFR1NfTEVOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NTk6c3RhdGljIHZvaWQgdzUxMDBfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjE6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYzLVx0bmV0aWZfc3RvcF9xdWV1ZShuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NDpcdHc1MTAwX2h3X3Jlc2V0KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDY1Olx0dzUxMDBfaHdfc3RhcnQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NjYtXHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDcxOnN0YXRpYyB2b2lkIHc1MTAwX3Jlc3RhcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDczOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzQtXHRcdFx0XHRcdCAgICAgICByZXN0YXJ0X3dvcmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc2Olx0dzUxMDBfcmVzdGFydChwcml2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3OTpzdGF0aWMgdm9pZCB3NTEwMF90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODE6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4NS1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ4NjpcdFx0dzUxMDBfcmVzdGFydChuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODk6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5MTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00OTItXHR1MTYgb2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk0Olx0b2Zmc2V0ID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcdHc1MTAwX3dyaXRlYnVmKHByaXYsIG9mZnNldCwgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDk2Olx0dzUxMDBfd3JpdGUxNihwcml2LCBXNTEwMF9TMF9UWF9XUihwcml2KSwgb2Zmc2V0ICYjNDM7IHNrYi1cdTAwM2VsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk3LVx0bmRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyAmIzQzOz0gc2tiLVx1MDAzZWxlbjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MDE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNDpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MDY6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwNy1cdFx0XHRcdFx0ICAgICAgIHR4X3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxMy1cdFx0cmV0dXJuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE0Olx0dzUxMDBfdHhfc2tiKHByaXYtXHUwMDNlbmRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUxNS19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTc6c3RhdGljIG5ldGRldl90eF90IHc1MTAwX3N0YXJ0X3R4KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxOTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTI3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyODpcdFx0dzUxMDBfdHhfc2tiKG5kZXYsIHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTM0OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdzUxMDBfcnhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNjpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0MC1cdHU4IGhlYWRlclsyXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU0MTpcdHUxNiByeF9idWZfbGVuID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1JYX1JTUihwcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ2Olx0b2Zmc2V0ID0gdzUxMDBfcmVhZDE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU0NzpcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQ4LVx0cnhfbGVuID0gZ2V0X3VuYWxpZ25lZF9iZTE2KGhlYWRlcikgLSAyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1MS1cdGlmICh1bmxpa2VseSghc2tiKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUyOlx0XHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgJiM0MzsgcnhfYnVmX2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTM6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfUkVDVik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTQtXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTU4LVx0c2tiX3B1dChza2IsIHJ4X2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NTk6XHR3NTEwMF9yZWFkYnVmKHByaXYsIG9mZnNldCAmIzQzOyAyLCBza2ItXHUwMDNlZGF0YSwgcnhfbGVuKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCAmIzQzOyAyICYjNDM7IHJ4X2xlbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjE6XHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTYyLVx0c2tiLVx1MDAzZXByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2tiLCBuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzA6c3RhdGljIHZvaWQgdzUxMDBfcnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcyOlx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzMtXHRcdFx0XHRcdCAgICAgICByeF93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NzY6XHR3aGlsZSAoKHNrYiA9IHc1MTAwX3J4X3NrYihwcml2LVx1MDAzZW5kZXYpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3Ny1cdFx0bmV0aWZfcngoc2tiKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU3OTpcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgwLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MjpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg0Olx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg1LVx0aW50IHJ4X2NvdW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4Ny1cdGZvciAocnhfY291bnQgPSAwOyByeF9jb3VudCBcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4ODpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHc1MTAwX3J4X3NrYihwcml2LVx1MDAzZW5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU5Ny1cdFx0bmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJ4X2NvdW50KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU5ODpcdFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA0OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MDc6XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA5Olx0aW50IGlyID0gdzUxMDBfcmVhZChwcml2LCBXNTEwMF9TMF9JUihwcml2KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTAtXHRpZiAoIWlyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjExLVx0XHRyZXR1cm4gSVJRX05PTkU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MTI6XHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxOS1cdGlmIChpciBcdTAwMjYgUzBfSVJfUkVDVikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIwOlx0XHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMxOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMy1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYzNDpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjQ5OnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1MTpcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUyLVx0XHRcdFx0XHQgICAgICAgc2V0cnhfd29yayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2NTQ6XHR3NTEwMF9od19zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1NS19XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ0NgoJCQkJCQkJb3V0cHV0OiAxNgoJCQkJCQkJdGhvdWdodHM6IDE2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFc1MTAwIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgIGRyaXZlci4gVGhpcyBpcyBmb3IgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycywgcmlnaHQ/IFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBgbGlua19ncGlvYCB3aGljaCwgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgbWVhbnMgaXQmIzM5O3MgcmVxdWVzdGluZyBhIEdQSU8gcGluLCBhbmQgcmVnaXN0ZXJpbmcgYW4gaW50ZXJydXB0IGZvciBpdCB0byBtb25pdG9yIHRoZSBsaW5rIHN0YXRlLiBNYWtlcyBzZW5zZS4gR1BJTyBmb3IgbGluayBzdGF0ZSBpcyBwcmV0dHkgc3RhbmRhcmQgcHJhY3RpY2UuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIHdpbGwgdGhpcyBldmVuIGJlIGhpdCBpbiBRRU1VPyBUaGVzZSBTUEkgZGV2aWNlcywgZ2VuZXJhbGx5LCB5b3UmIzM5O2QgY29uZmlndXJlIHRoZW0gdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFN5emthbGxlciBkb2VzbiYjMzk7dCB0eXBpY2FsbHkgdG91Y2ggU1BJIEV0aGVybmV0IGNvbnRyb2xsZXJzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHNldHVwIGZvciB0aGVtLiBCdXQgd2FpdC4uLiBkb2VzbiYjMzk7dCBzeXprYWxsZXIgKmhhdmUqIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydCBmb3IgU1BJPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgdGhhdC4gT2theSwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHRvIGluc3RhbnRpYXRlIGEgV2l6bmV0IGRldmljZSBpbiBpdHMgY29uZmlndXJhdGlvbnMuIFdlIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHdpem5ldCBvciBTUEkuIFRoYXQmIzM5O2xsIHRlbGwgdXMgaWYgd2UmIzM5O3JlIGV2ZW4gdGVzdGluZyB0aGlzIGNvZGUgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3aXpuZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9MTg9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTIwLSAgICBlbnVtOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMTogICAgICAtIHdpem5ldCx3NTEwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMjogICAgICAtIHdpem5ldCx3NTIwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMzogICAgICAtIHdpem5ldCx3NTUwMFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yNC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sPTc0PWV4YW1wbGVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtODUtICAgICAgICBldGhlcm5ldEAwOiB3NTUwMEAwIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw6ODY6ICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDt3aXpuZXQsdzU1MDBcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTg3LSAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZz0xODg9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxODk6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE5MC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZT0xMDE9b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfV0FOR1hVTikgJiM0Mzs9IHdhbmd4dW4vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZToxMDI6b2JqLSQoQ09ORklHX05FVF9WRU5ET1JfV0laTkVUKSAmIzQzOz0gd2l6bmV0L1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUtMTAzLW9iai0kKENPTkZJR19ORVRfVkVORE9SX1hJTElOWCkgJiM0Mzs9IHhpbGlueC9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNy0gKiBEYXRhc2hlZXQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODogKiBodHRwOi8vd3d3Lndpem5ldC5jby5rci93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MTAwL0RvY3VtZW50L1c1MTAwX0RhdGFzaGVldF92MS4yLjYucGRmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6OTogKiBodHRwOi8vd2l6bmV0aG9tZS5jYWZlMjQuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy93aXpuZXRob21lL0NoaXAvVzUyMDAvRG9jdW1lbnRzL1c1MjAwX0RTX1YxNDBFLnBkZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwLSAqIGh0dHA6Ly93aXp3aWtpLm5ldC93aWtpL2xpYi9leGUvZmV0Y2gucGhwP21lZGlhPXByb2R1Y3RzOnc1NTAwOnc1NTAwX2RzX3YxMDZlXzE0MTIzMC5wZGZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDEzPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHc1MTAwX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTEwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE1Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTIwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUyMDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE2Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3dpem5ldCx3NTUwMFwmIzM0OywgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzU1MDAsIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDE3LVx0eyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDQ1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2l6bmV0IERyaXZlciBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggdGFyZ2V0cyBhIHZlcnkgc3BlY2lmaWMgcGllY2Ugb2YgaGFyZHdhcmUg4oCTIGEgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyLiBJdCYjMzk7cyBhIHJlYWwsIHBoeXNpY2FsIFNQSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IHByZXNlbnRzIGEgY2hhbGxlbmdlLiBJIGtub3cgdGhhdCB2YW5pbGxhIFFFTVUgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBwcmVjaXNlbHkuIFRoZSBiaWcgcXVlc3Rpb24gaXMgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFN5emthbGxlciYjMzk7cyBzdHJlbmd0aCBpcyBpdHMgYWJpbGl0eSB0byBmaW5kIGFuZCB0cmlnZ2VyIGJ1Z3MgdGhyb3VnaCBmdXp6aW5nLCBidXQgaXRzIG1vZGVsIG9mIGhvdyB0byAqaW5zdGFudGlhdGUqIGhhcmR3YXJlIGlzIGtleSBoZXJlLgoKVGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gYmUgZ2V0dGluZyB0aGUgZHJpdmVyIHRvIGFjdHVhbGx5ICpzZWUqIHRoZSBoYXJkd2FyZS4gVGhlIGdvYWwgaXMgdG8gcmVhY2ggZWl0aGVyIHRoZSBgdzUxMDBfZGV0ZWN0X2xpbmtgIGludGVycnVwdCBvciB0aGUgYHc1MTAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGtleSBkZXBlbmRlbmN5IGlzIGEgKnZhbGlkKiBTUEkgZGV2aWNlIHRoYXQgaGFzIGEgYGxpbmstZ3Bpb3NgIHByb3BlcnR5LiBUaGF0IHByb3BlcnR5IGlzIHRoZSBrZXkgdG8gbGV0dGluZyB0aGUgZHJpdmVyIGtub3cgaXQgaXMgY29ubmVjdGVkIHRvIGEgbGluayB0byB3b3JrIHdpdGguCgpOb3cgSSYjMzk7bSB0aGlua2luZy4uLiBjYW4gU3l6a2FsbGVyIGxldmVyYWdlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIGV2ZW4gbmV0bGluayBpbnRlcmZhY2VzIHRvIGluc3RhbnRpYXRlIGFuIFNQSSBkZXZpY2U/IEl0JiMzOTtzIHBvc3NpYmxlLCB0aG91Z2ggSSYjMzk7bSBub3QgZW50aXJlbHkgY29uZmlkZW50LiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIHRoYXQgU1BJIGRldmljZSBpbiB0aGUgc2ltdWxhdGVkIGVudmlyb25tZW50LCB0aGUgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkLiBUaGF0IG1lYW5zIGFueSBTUEkgcmVhZHMgb3Igd3JpdGVzIHdvdWxkIGVpdGhlciBmYWlsIG91dHJpZ2h0IG9yIHRpbWUgb3V0LiBUaGF0IHdvdWxkIHByZXZlbnQgdGhlIGRyaXZlciBmcm9tIGluaXRpYWxpemluZyBwcm9wZXJseSBhbnl3YXkuCgpJIG5lZWQgdG8gZGl2ZSBpbnRvIGB3NTEwMC5jYCBhbmQgc3BlY2lmaWNhbGx5IGxvb2sgYXQgdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFyZHdhcmUgY2hlY2tzIGl0IHBlcmZvcm1zLiBEb2VzIGl0IGRvIGFueSBraW5kIG9mIGlkZW50aWZpY2F0aW9uIGNoZWNrcyB0byBkZXRlY3QgaWYgdGhlIGRldmljZSBpcyBhY3R1YWxseSBwcmVzZW50LCBvciBkb2VzIGl0IGp1c3QgYXNzdW1lIGl0JiMzOTtzIHRoZXJlIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZT8gVW5kZXJzdGFuZGluZyB0aGF0IGZsb3cgaXMga2V5LiBJZiBpdCYjMzk7cyBhIHNpbXBsZSwgcHJlZGljdGFibGUgc2VxdWVuY2UgdGhlbiB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIHRvIGNyYWZ0IGEgc3l6a2FsbGVyIHRlbXBsYXRlIHRvIHRyaWdnZXIgdGhlIGNhbGwuIE90aGVyd2lzZSwgSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGEgbW9yZSBpbnZvbHZlZCBhcHByb2FjaCwgc3VjaCBhcyB1c2luZyBhIG1vcmUgc29waGlzdGljYXRlZCBlbXVsYXRpb24gc3RyYXRlZ3kgaWYgdGhlIGhhcmR3YXJlIGNoZWNrcyBhcmUgY29tcGxleC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3NTEwMF9wcm9iZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9NDIxPXN0YXRpYyBpbnQgdzUxMDBfc3BpX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XHRyZXR1cm4gdzUxMDBfcHJvYmUoXHUwMDI2c3BpLVx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVx1MDAzZWlycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03Mzk9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NzQxOmludCB3NTEwMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgKm9wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0Mi1cdFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODgyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjg4MzpFWFBPUlRfU1lNQk9MX0dQTCh3NTEwMF9wcm9iZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg9Mjk9dm9pZCAqdzUxMDBfb3BzX3ByaXYoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaDozMTppbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaC0zMi1cdFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjU4CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBpbiBgdzUxMDBfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIFc1MTAwIGhhcmR3YXJlLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGFueSB0aG9yb3VnaCBkcml2ZXIgd291bGQgaW5jbHVkZSBzb21lIGtpbmQgb2YgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHNhbml0eSBjaGVja3Mgd2l0aGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gSSYjMzk7bSBob3BpbmcgdG8gZmluZCBjbGVhciBpbmRpY2F0b3JzIG9mIHJlZ2lzdGVyIHJlYWRzLCB3cml0ZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBleHBlY3RlZCByZXNwb25zZXMgdGhhdCB3b3VsZCBjb25maXJtIHRoZSBkZXZpY2UmIzM5O3MgcHJlc2VuY2UgYW5kIGJhc2ljIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaW5pdGlhbCBwcm9iaW5nIGlzIGNydWNpYWwg4oCTIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGZvciBldmVyeXRoaW5nIGVsc2UuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlICYjMzQ7aGVsbG8gd29ybGQmIzM0OyBvZiB0aGlzIGRyaXZlciwgdGhlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBoYXJkd2FyZSBpcyBhbGl2ZSBhbmQga2lja2luZy4gSG9wZWZ1bGx5LCBpdCBpcyB0aGVyZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYmVpbmcgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzQxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzQxOlx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIDc0MjpcdFx0XHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcbiA3NDM6XHR7XG4gNzQ0Olx0XHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcbiA3NDU6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDc0NjpcdFx0aW50IGVycjtcbiA3NDc6XHRcdHNpemVfdCBhbGxvY19zaXplO1xuIDc0ODpcdFxuIDc0OTpcdFx0YWxsb2Nfc2l6ZSA9IHNpemVvZigqcHJpdik7XG4gNzUwOlx0XHRpZiAoc2l6ZW9mX29wc19wcml2KSB7XG4gNzUxOlx0XHRcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xuIDc1MjpcdFx0XHRhbGxvY19zaXplICYjNDM7PSBzaXplb2Zfb3BzX3ByaXY7XG4gNzUzOlx0XHR9XG4gNzU0Olx0XHRhbGxvY19zaXplICYjNDM7PSBORVRERVZfQUxJR04gLSAxO1xuIDc1NTpcdFxuIDc1NjpcdFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2KGFsbG9jX3NpemUpO1xuIDc1NzpcdFx0aWYgKCFuZGV2KVxuIDc1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA3NTk6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGRldik7XG4gNzYwOlx0XHRkZXZfc2V0X2RydmRhdGEoZGV2LCBuZGV2KTtcbiA3NjE6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbiA3NjI6XHRcbiA3NjM6XHRcdHN3aXRjaCAob3BzLVx1MDAzZWNoaXBfaWQpIHtcbiA3NjQ6XHRcdGNhc2UgVzUxMDA6XG4gNzY1Olx0XHRcdHByaXYtXHUwMDNlczBfcmVncyA9IFc1MTAwX1MwX1JFR1M7XG4gNzY2Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xuIDc2NzpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUxMDBfVFhfTUVNX1NJWkU7XG4gNzY4Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmID0gVzUxMDBfUlhfTUVNX1NUQVJUO1xuIDc2OTpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XG4gNzcwOlx0XHRcdGJyZWFrO1xuIDc3MTpcdFx0Y2FzZSBXNTIwMDpcbiA3NzI6XHRcdFx0cHJpdi1cdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcbiA3NzM6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWYgPSBXNTIwMF9UWF9NRU1fU1RBUlQ7XG4gNzc0Olx0XHRcdHByaXYtXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTIwMF9UWF9NRU1fU0laRTtcbiA3NzU6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XG4gNzc2Olx0XHRcdHByaXYtXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTIwMF9SWF9NRU1fU0laRTtcbiA3Nzc6XHRcdFx0YnJlYWs7XG4gNzc4Olx0XHRjYXNlIFc1NTAwOlxuIDc3OTpcdFx0XHRwcml2LVx1MDAzZXMwX3JlZ3MgPSBXNTUwMF9TMF9SRUdTO1xuIDc4MDpcdFx0XHRwcml2LVx1MDAzZXMwX3R4X2J1ZiA9IFc1NTAwX1RYX01FTV9TVEFSVDtcbiA3ODE6XHRcdFx0cHJpdi1cdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xuIDc4MjpcdFx0XHRwcml2LVx1MDAzZXMwX3J4X2J1ZiA9IFc1NTAwX1JYX01FTV9TVEFSVDtcbiA3ODM6XHRcdFx0cHJpdi1cdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1NTAwX1JYX01FTV9TSVpFO1xuIDc4NDpcdFx0XHRicmVhaztcbiA3ODU6XHRcdGRlZmF1bHQ6XG4gNzg2Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4gNzg3Olx0XHRcdGdvdG8gZXJyX3JlZ2lzdGVyO1xuIDc4ODpcdFx0fVxuIDc4OTpcdFxuIDc5MDpcdFx0cHJpdi1cdTAwM2VuZGV2ID0gbmRldjtcbiA3OTE6XHRcdHByaXYtXHUwMDNlb3BzID0gb3BzO1xuIDc5MjpcdFx0cHJpdi1cdTAwM2VpcnEgPSBpcnE7XG4gNzkzOlx0XHRwcml2LVx1MDAzZWxpbmtfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7bGlua1wmIzM0OywgR1BJT0RfSU4pO1xuIDc5NDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbiA3OTU6XHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pLFxuIDc5NjpcdFx0XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBnZXQgbGluayBHUElPXFxuXCYjMzQ7KTtcbiA3OTc6XHRcdFx0cHJpdi1cdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xuIDc5ODpcdFx0XHRnb3RvIGVycl9yZWdpc3RlcjtcbiA3OTk6XHRcdH1cbiA4MDA6XHRcbiA4MDE6XHRcdG5kZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnc1MTAwX25ldGRldl9vcHM7XG4gODAyOlx0XHRuZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2dzUxMDBfZXRodG9vbF9vcHM7XG4gODAzOlx0XHRuZXRpZl9uYXBpX2FkZF93ZWlnaHQobmRldiwgXHUwMDI2cHJpdi1cdTAwM2VuYXBpLCB3NTEwMF9uYXBpX3BvbGwsIDE2KTtcbiA4MDQ6XHRcbiA4MDU6XHRcdC8qIFRoaXMgY2hpcCBkb2VzbiYjMzk7dCBzdXBwb3J0IFZMQU4gcGFja2V0cyB3aXRoIG5vcm1hbCBNVFUsXG4gODA2Olx0XHQgKiBzbyBkaXNhYmxlIFZMQU4gZm9yIHRoaXMgZGV2aWNlLlxuIDgwNzpcdFx0ICovXG4gODA4Olx0XHRuZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfVkxBTl9DSEFMTEVOR0VEO1xuIDgwOTpcdFxuIDgxMDpcdFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIDgxMTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA4MTI6XHRcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4gODEzOlx0XG4gODE0Olx0XHRwcml2LVx1MDAzZXhmZXJfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXNcJiMzNDssIFdRX01FTV9SRUNMQUlNIHwgV1FfUEVSQ1BVLCAwLFxuIDgxNTpcdFx0XHRcdFx0XHRuZXRkZXZfbmFtZShuZGV2KSk7XG4gODE2Olx0XHRpZiAoIXByaXYtXHUwMDNleGZlcl93cSkge1xuIDgxNzpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDgxODpcdFx0XHRnb3RvIGVycl93cTtcbiA4MTk6XHRcdH1cbiA4MjA6XHRcbiA4MjE6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXJ4X3dvcmssIHc1MTAwX3J4X3dvcmspO1xuIDgyMjpcdFx0SU5JVF9XT1JLKFx1MDAyNnByaXYtXHUwMDNldHhfd29yaywgdzUxMDBfdHhfd29yayk7XG4gODIzOlx0XHRJTklUX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzZXRyeF93b3JrLCB3NTEwMF9zZXRyeF93b3JrKTtcbiA4MjQ6XHRcdElOSVRfV09SSyhcdTAwMjZwcml2LVx1MDAzZXJlc3RhcnRfd29yaywgdzUxMDBfcmVzdGFydF93b3JrKTtcbiA4MjU6XHRcbiA4MjY6XHRcdGlmIChtYWNfYWRkcilcbiA4Mjc6XHRcdFx0ZXRoX2h3X2FkZHJfc2V0KG5kZXYsIG1hY19hZGRyKTtcbiA4Mjg6XHRcdGVsc2VcbiA4Mjk6XHRcdFx0ZXRoX2h3X2FkZHJfcmFuZG9tKG5kZXYpO1xuIDgzMDpcdFxuIDgzMTpcdFx0aWYgKHByaXYtXHUwMDNlb3BzLVx1MDAzZWluaXQpIHtcbiA4MzI6XHRcdFx0ZXJyID0gcHJpdi1cdTAwM2VvcHMtXHUwMDNlaW5pdChwcml2LVx1MDAzZW5kZXYpO1xuIDgzMzpcdFx0XHRpZiAoZXJyKVxuIDgzNDpcdFx0XHRcdGdvdG8gZXJyX2h3O1xuIDgzNTpcdFx0fVxuIDgzNjpcdFxuIDgzNzpcdFx0ZXJyID0gdzUxMDBfaHdfcmVzZXQocHJpdik7XG4gODM4Olx0XHRpZiAoZXJyKVxuIDgzOTpcdFx0XHRnb3RvIGVycl9odztcbiA4NDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyNTYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBgdzUxMDBfaHdfcmVzZXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBgdzUxMDBfaHdfcmVzZXRgIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGR1cmluZyB0aGUgcHJvYmUgcHJvY2Vzcywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IGl0JiMzOTtzIGRvaW5nLiBMZXQmIzM5O3MgZGVsdmUgaW4gYW5kIHVuZGVyc3RhbmQgaG93IHRoZSBoYXJkd2FyZSByZXNldCBpcyBiZWluZyBoYW5kbGVkIGhlcmUuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgYW5kIGFueSByZWdpc3RlciBtYW5pcHVsYXRpb25zIGludm9sdmVkLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgY3J1Y2lhbCBpbiBkZXRlcm1pbmluZyBob3cgcm9idXN0IGFuZCByZWxpYWJsZSB0aGUgb3ZlcmFsbCBXNTEwMCBpbml0aWFsaXphdGlvbiBpcy4gSG9wZWZ1bGx5IHRoZXJlIGFyZW4mIzM5O3QgYW55IGdvdGNoYXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM1MDpcdHN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzUxOlx0e1xuIDM1MjpcdFx0dTMyIHJ0cjtcbiAzNTM6XHRcbiAzNTQ6XHRcdHc1MTAwX3Jlc2V0KHByaXYpO1xuIDM1NTpcdFxuIDM1NjpcdFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xuIDM1NzpcdFx0dzUxMDBfd3JpdGVfbWFjYWRkcihwcml2KTtcbiAzNTg6XHRcbiAzNTk6XHRcdHN3aXRjaCAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCkge1xuIDM2MDpcdFx0Y2FzZSBXNTEwMDpcbiAzNjE6XHRcdFx0dzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcbiAzNjI6XHRcdFx0cnRyID0gVzUxMDBfUlRSO1xuIDM2MzpcdFx0XHRicmVhaztcbiAzNjQ6XHRcdGNhc2UgVzUyMDA6XG4gMzY1Olx0XHRcdHc1MjAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XG4gMzY2Olx0XHRcdHJ0ciA9IFc1MTAwX1JUUjtcbiAzNjc6XHRcdFx0YnJlYWs7XG4gMzY4Olx0XHRjYXNlIFc1NTAwOlxuIDM2OTpcdFx0XHR3NTUwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xuIDM3MDpcdFx0XHRydHIgPSBXNTUwMF9SVFI7XG4gMzcxOlx0XHRcdGJyZWFrO1xuIDM3MjpcdFx0ZGVmYXVsdDpcbiAzNzM6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzc0Olx0XHR9XG4gMzc1Olx0XG4gMzc2Olx0XHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXG4gMzc3Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM3ODpcdFxuIDM3OTpcdFx0cmV0dXJuIDA7XG4gMzgwOlx0fVxuIDM4MTpcdFxuIDM4MjpcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuIDM4MzpcdHtcbiAzODQ6XHRcdHU4IG1vZGUgPSBTMF9NUl9NQUNSQVc7XG4gMzg1Olx0XG4gMzg2Olx0XHRpZiAoIXByaXYtXHUwMDNlcHJvbWlzYykge1xuIDM4NzpcdFx0XHRpZiAocHJpdi1cdTAwM2VvcHMtXHUwMDNlY2hpcF9pZCA9PSBXNTUwMClcbiAzODg6XHRcdFx0XHRtb2RlIHw9IFc1NTAwX1MwX01SX01GO1xuIDM4OTpcdFx0XHRlbHNlXG4gMzkwOlx0XHRcdFx0bW9kZSB8PSBTMF9NUl9NRjtcbiAzOTE6XHRcdH1cbiAzOTI6XHRcbiAzOTM6XHRcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcbiAzOTQ6XHRcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XG4gMzk1Olx0XHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcbiAzOTY6XHR9XG4gMzk3Olx0XG4gMzk4Olx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXG4gMzk5Olx0e1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjIyNAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFc1MTAwIEhhcmR3YXJlIFJlc2V0IEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHJlc2V0IHJvdXRpbmUgcmVsaWVzIG9uIHJlYWRpbmcgYSByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHVzaW5nIGB3NTEwMF9yZWFkMTYocHJpdiwgcnRyKWAuICBJdCYjMzk7cyBleHBlY3RpbmcgdGhpcyByZWdpc3RlciwgcHJvYmFibHkgc29tZSBzb3J0IG9mIHN0YXR1cyBvciBjb250cm9sIHJlZ2lzdGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgVzUxMDAsIHRvIGhvbGQgYSBzcGVjaWZpYyB2YWx1ZSwgYFJUUl9ERUZBVUxUYC4gSWYgdGhlIHZhbHVlIGRvZXNuJiMzOTt0IG1hdGNoIHRoaXMgZXhwZWN0ZWQgZGVmYXVsdCwgdGhlIGZ1bmN0aW9uIGZsYWdzIGEgaGFyZHdhcmUgZmFpbHVyZSB3aXRoIGAtRU5PREVWYC4KCkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uICBTaW5jZSB0aGlzIGlzIGEgcGh5c2ljYWwgU1BJIGRldmljZSBhbmQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIHRoYXQgcmVnaXN0ZXIgcmVhZCBpcyB2ZXJ5IGxpa2VseSB0byBmYWlsLiBNeSBndXQgdGVsbHMgbWUgaXQmIzM5O3MgcHJvYmFibHkgZ29pbmcgdG8gcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIGBSVFJfREVGQVVMVGAg4oCTIG1heWJlIHplcm8sIG1heWJlIHdoYXRldmVyIGdhcmJhZ2UgdGhlIGR1bW15IFNQSSBkcml2ZXIgaXMgc3BpdHRpbmcgb3V0LiAgSXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBzdGF0ZSwgZ2l2ZW4gYSBsYWNrIG9mIHByb3BlciBpbml0aWFsaXphdGlvbiBhbmQgZW11bGF0aW9uLgoKQnV0IHdhaXQsIHdoYXQgZXhhY3RseSAqaXMqIGBSVFJfREVGQVVMVGA/ICBJIG5lZWQgdG8gZ28gYW5kIGZpbmQgd2hlcmUgdGhhdCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uICBJJiMzOTttIGd1ZXNzaW5nIHRoaXMgbWlnaHQgaGF2ZSBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgKlIqZXRyeSAqVCppbWUgKlIqZWdpc3Rlciwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG1heWJlPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgYXNzdW1lZCBpbml0aWFsIHN0YXRlIG9mIHRoZSBoYXJkd2FyZSBpbiBvcmRlciB0byB0cm91Ymxlc2hvb3QgdGhpcywgYW5kIHRvIGRldmVsb3Agc3RyYXRlZ2llcyB0byBjaXJjdW12ZW50IHRoaXMgZXhwZWN0ZWQgaW5pdGlhbCB2YWx1ZSBpbiB0aGUgZW11bGF0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1JUUl9ERUZBVUxUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcdFx0MHgwMDE3IC8qIFJldHJ5IFRpbWUtdmFsdWUgUmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFx0XHQgIDIwMDAgLyogPTB4MDdkMCAoMjAwMCkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jPTM1MD1zdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM3NjpcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM3Ny1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTk2CgkJCQkJCQlvdXRwdXQ6IDEyNwoJCQkJCQkJdGhvdWdodHM6IDQ0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEFuIEFuYWx5c2lzIG9mIHRoZSBXNTEwMCBTUEkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGhlcmUmIzM5O3MgbXkgYXNzZXNzbWVudC4gVGhlIGBSVFJfREVGQVVMVGAgcmVnaXN0ZXIgaXMgc2V0IHRvIDIwMDAgKDB4MDdkMCkuIFVubGVzcyBzeXprYWxsZXIgY2FuIHNvbWVob3cgc3BlY2lmaWNhbGx5IG1vY2sgU1BJIHJlYWRzIHRvIHJldHVybiB0aGlzIHZhbHVlIGR1cmluZyB0aGUgcHJvYmUsIHRoZSBwcm9iZSBpdHNlbGYgd2lsbCBmYWlsLCB3aGljaCBpcyB0aGUgaW1tZWRpYXRlIGlzc3VlLiBJIGtub3cgdGhhdCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgU1BJIG1vY2tpbmcgZnJhbWV3b3JrIGNvbmZpZ3VyYWJsZSBvbiBhIHBlci1kZXZpY2UgYmFzaXMuIEl0IG9mZmVycyBsaW1pdGVkIFNQSSBzdXBwb3J0IHRocm91Z2ggYHNwaWRldmAgYW5kIHNpbWlsYXIsIGJ1dCB0aGF0IGlzIGludGVuZGVkIGZvciB1c2Vyc3BhY2UgaW50ZXJhY3Rpb25zIHdpdGggU1BJLCBub3QgZm9yIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgZm9yIGEga2VybmVsIGRyaXZlci4gRXNzZW50aWFsbHksIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIFNQSSBkZXZpY2VzIGF0IGFsbC4KCkJlY2F1c2Ugb2YgdGhpcywgdGhlIGB3NTEwMF9wcm9iZWAgY2FsbCB3aWxsIGludmFyaWFibHkgZmFpbCwgbWVhbmluZyB0aGUgbmV3IGNvZGUgYWRkZWQgZm9yIElSUSByZXF1ZXN0cyBhbmQgdGhlIGB3NTEwMF9kZXRlY3RfbGlua2AgZnVuY3Rpb24gd2lsbCBuZXZlciBleGVjdXRlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBseSBhZGRpbmcgYSBHUElPIHBpbiBmb3IgbGluayBkZXRlY3Rpb24sIHdoaWNoIGlzIGhhcmR3YXJlLXNwZWNpZmljLgoKQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgZmFsbHMgc3F1YXJlbHkgdW5kZXIgdGhlIGNhdGVnb3J5IG9mICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlJiMzNDsuIEl0IGFsc28gYWxpZ25zIHdpdGggdGhlIHJhdGlvbmFsZSBvZiBjb2RlIHRoYXQgJiMzNDtyZXF1aXJlW3NdIHBoeXNpY2FsIC4uLiBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBXaGlsZSB0aGlzIGlzIFNQSSBhbmQgbm90IFBDSWUsIHRoZSBwcmluY2lwbGUgaXMgdGhlIHNhbWUuIEl0IGlzIGEgdmVyeSBoYXJkd2FyZS1kZXBlbmRlbnQgcGF0Y2guCgpOb3csIGxldCBtZSBkb3VibGUgY2hlY2s7IGlzIHRoZXJlIGFueSBvdGhlciB3YXkgdGhpcyBjb2RlIGNvdWxkIHBvc3NpYmx5IGJlIHJlYWNoZWQ/IEkgd2lsbCBxdWlja2x5IHZlcmlmeS4gVGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYHc1MTAwX3NwaV9wcm9iZWAsIHdoaWNoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGB3NTEwMF9zcGlfZHJpdmVyYC4gVGhlIGRyaXZlciBzcGVjaWZpY2FsbHkgYmluZHMgdG8gU1BJIGRldmljZXMgd2l0aCBjb21wYXRpYmxlIHN0cmluZ3MgJiMzNDt3aXpuZXQsdzUxMDAmIzM0OywgJiMzNDt3aXpuZXQsdzUyMDAmIzM0OywgYW5kICYjMzQ7d2l6bmV0LHc1NTAwJiMzNDsuIFdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gZXF1aXZhbGVudCBlbXVsYXRpb24sIHRoZSBwcm9iZSB3aWxsIGZhaWwgYXQgYHc1MTAwX2h3X3Jlc2V0YC4gSXQgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci4KClRoZXJlZm9yZSwgY29uc2lkZXJpbmcgYWxsIG9mIHRoaXMsIEkmIzM5O20gY29uZmlkZW50IGluIGNvbmNsdWRpbmcgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJIHdpbGwgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6Mjk6MzQuNzE1NzgzOTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE4NDA4MTE3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6Mjk6MzQuNzE1NzkwNzA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU3MTU2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDA3MTg1MjlkYmFmOTk0OGM0ZmEwZmEyOTE2ZWQzNGMyYmRjZmMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMTg6Mjk6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XFxuZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggZTk2NjU3OThjNGJlNi4uMDAwMDAwMDAwMDAwMFxcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxcbisrKyAvZGV2L251bGxcXG5AQCAtMSw1MCArMCwwIEBAXFxuLSogV2l6bmV0IHc1eDAwXFxuLVxcbi1UaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cXG4tXFxuLUZvciBlYWNoIGRldmljZSBjb25uZWN0ZWQgdG8gYSBTUEkgYnVzLCBkZWZpbmUgYSBjaGlsZCBub2RlIHdpdGhpblxcbi10aGUgU1BJIG1hc3RlciBub2RlLlxcbi1cXG4tUmVxdWlyZWQgcHJvcGVydGllczpcXG4tLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczpcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTEwMFxcXCJcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTIwMFxcXCJcXG4tXFx0ICAgICAgXFxcIndpem5ldCx3NTUwMFxcXCJcXG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cXG4tLSBpbnRlcnJ1cHRzOiBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWRcXG4tICAgICAgICAgICAgICB0byBhYm92ZSBpbiBpbnRlcnJ1cHQtcGFyZW50KSBhbmQgaW50ZXJydXB0IHR5cGUuIHc1eDAwIG5hdGl2ZWx5XFxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXFxuLSAgICAgICAgICAgICAgbWlnaHQgaW52ZXJ0IHRoZSBzaWduYWwuXFxuLS0gcGluY3RybC1uYW1lczogTGlzdCBvZiBhc3NpZ25lZCBzdGF0ZSBuYW1lcywgc2VlIHBpbmN0cmwgYmluZGluZyBkb2N1bWVudGF0aW9uLlxcbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXFxuLSAgICAgICAgICAgICBzZWUgYWxzbyBnZW5lcmljIGFuZCB5b3VyIHBsYXRmb3JtIHNwZWNpZmljIHBpbmN0cmwgYmluZGluZ1xcbi0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi5cXG4tXFxuLU9wdGlvbmFsIHByb3BlcnRpZXM6XFxuLS0gc3BpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC5cXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXFxuLSAgYm9hcmQgZGVzaWducyBtYXkgbmVlZCB0byBsaW1pdCB0aGlzIHZhbHVlLlxcbi0tIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cXG4tXFxuLVxcbi1FeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKTpcXG4tXFxuLVxcdTAwMjZzcGkge1xcbi1cXHRldGhlcm5ldEAwOiB3NTUwMEAwIHtcXG4tXFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzU1MDBcXFwiO1xcbi1cXHRcXHRyZWcgPSBcXHUwMDNjMFxcdTAwM2U7XFxuLVxcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuLVxcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2ZXRoMV9waW5zXFx1MDAzZTtcXG4tXFx0XFx0aW50ZXJydXB0LXBhcmVudCA9IFxcdTAwM2NcXHUwMDI2Z3Bpb1xcdTAwM2U7XFxuLVxcdFxcdGludGVycnVwdHMgPSBcXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXFx1MDAzZTtcXG4tXFx0XFx0c3BpLW1heC1mcmVxdWVuY3kgPSBcXHUwMDNjMzAwMDAwMDBcXHUwMDNlO1xcbi1cXHR9O1xcbi19O1xcbi1cXG4tXFx1MDAyNmdwaW8ge1xcbi1cXHRldGgxX3BpbnM6IGV0aDFfcGlucyB7XFxuLVxcdFxcdGJyY20scGlucyA9IFxcdTAwM2MyNVxcdTAwM2U7XFxuLVxcdFxcdGJyY20sZnVuY3Rpb24gPSBcXHUwMDNjMFxcdTAwM2U7IC8qIGluICovXFxuLVxcdFxcdGJyY20scHVsbCA9IFxcdTAwM2MwXFx1MDAzZTsgLyogbm9uZSAqL1xcbi1cXHR9O1xcbi19O1xcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGY0NWE1ZDc3M2ZlM1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sXFxuQEAgLTAsMCArMSwxMDMgQEBcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXFxuKyVZQU1MIDEuMlxcbistLS1cXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXFxuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbitcXG4rdGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxcbitcXG4rZGVzY3JpcHRpb246IHxcXG4rICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cXG4rXFxuKyAgRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluIHRoZSBTUEkgbWFzdGVyIG5vZGUuXFxuK1xcbithbGxPZjpcXG4rICAtICRyZWY6IC9zY2hlbWFzL25ldC9ldGhlcm5ldC1jb250cm9sbGVyLnlhbWwjXFxuKyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcXG4rXFxuK3Byb3BlcnRpZXM6XFxuKyAgY29tcGF0aWJsZTpcXG4rICAgIGVudW06XFxuKyAgICAgIC0gd2l6bmV0LHc1MTAwXFxuKyAgICAgIC0gd2l6bmV0LHc1MjAwXFxuKyAgICAgIC0gd2l6bmV0LHc1NTAwXFxuK1xcbisgIHJlZzpcXG4rICAgIGRlc2NyaXB0aW9uOiBTcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QgdGhlIGNoaXAgaXMgd2lyZWQgdG8uXFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rXFxuKyAgaW50ZXJydXB0czpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgaW5kZXggd2l0aGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAocmVmZXJyZWQgdG9cXG4rICAgICAgYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseSBnZW5lcmF0ZXNcXG4rICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxcbisgICAgICBzaWduYWwuXFxuKyAgICBtYXhJdGVtczogMVxcbisgICAgbWluSXRlbXM6IDFcXG4rXFxuKyAgcGluY3RybC1uYW1lczpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBMaXN0IG9mIGFzc2lnbmVkIHN0YXRlIG5hbWVzLCBzZWUgcGluY3RybCBiaW5kaW5nIGRvY3VtZW50YXRpb24uXFxuKyAgICBlbnVtOlxcbisgICAgICAtIGRlZmF1bHRcXG4rICAgIG1pbkl0ZW1zOiAxXFxuK1xcbisgIHBpbmN0cmwtMDpcXG4rICAgIGRlc2NyaXB0aW9uOlxcbisgICAgICBMaXN0IG9mIHBoYW5kbGVzIHRvIGNvbmZpZ3VyZSB0aGUgR1BJTyBwaW4gdXNlZCBhcyBpbnRlcnJ1cHQgbGluZSwgc2VlXFxuKyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cXG4rICAgIG1pbkl0ZW1zOiAxXFxuK1xcbisgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXFxuK1xcbisgIHNwaS1tYXgtZnJlcXVlbmN5OlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIE1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBTUEkgYnVzIHdoZW4gYWNjZXNzaW5nIHRoZSB3NTUwMC4gQWNjb3JkaW5nIHRvXFxuKyAgICAgIHRoZSB3NTUwMCBkYXRhc2hlZXQsIHRoZSBjaGlwIGFsbG93cyBhIG1heGltdW0gb2YgODAgTUh6LCBob3dldmVyLCBib2FyZFxcbisgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXFxuKyAgICBtYXhpbXVtOiA4MDAwMDAwMFxcbitcXG4rICBsaW5rLWdwaW9zOlxcbisgICAgZGVzY3JpcHRpb246IEEgR1BJTyBsaW5lIHVzZWQgZm9yIHRoZSBsaW5rIGRldGVjdGlvbiBpbnRlcnJ1cHQuXFxuKyAgICBtYXhJdGVtczogMVxcbitcXG4rcmVxdWlyZWQ6XFxuKyAgLSBjb21wYXRpYmxlXFxuKyAgLSByZWdcXG4rICAtIGludGVycnVwdHNcXG4rICAtIHBpbmN0cmwtbmFtZXNcXG4rICAtIHBpbmN0cmwtMFxcbitcXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxcbitcXG4rZXhhbXBsZXM6XFxuKyAgLSB8XFxuKyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xcbitcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG4rXFxuKyAgICBzcGkge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBldGhlcm5ldEAwOiB3NTUwMEAwIHtcXG4rICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1NTAwXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbisgICAgICAgICAgICBwaW5jdHJsLW5hbWVzID0gXFxcImRlZmF1bHRcXFwiO1xcbisgICAgICAgICAgICBwaW5jdHJsLTAgPSBcXHUwMDNjXFx1MDAyNmV0aDFfcGluc1xcdTAwM2U7XFxuKyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcXHUwMDNjXFx1MDAyNmdwaW9cXHUwMDNlO1xcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXFx1MDAzYzI1IElSUV9UWVBFX0VER0VfRkFMTElOR1xcdTAwM2U7XFxuKyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gXFx1MDAzYzMwMDAwMDAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgbGluay1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2Z3BpbyA0IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbisgICAgICAgICAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFsgYTAgYjAgYzAgZDAgZTAgZjAgXTtcXG4rICAgICAgICB9O1xcbisgICAgfTtcXG4rXFxuKyAgICBcXHUwMDI2Z3BpbyB7XFxuKyAgICAgIGV0aDFfcGluczogZXRoMV9waW5zIHtcXG4rICAgICAgICBicmNtLHBpbnMgPSBcXHUwMDNjMjUgNFxcdTAwM2U7XFxuKyAgICAgICAgYnJjbSxmdW5jdGlvbiA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBpbiAqL1xcbisgICAgICAgIGJyY20scHVsbCA9IFxcdTAwM2MwIDBcXHUwMDNlOyAvKiBub25lICovXFxuKyAgICB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuaW5kZXggNTNkOGRjNjQyZmJkNi4uMTQxMGE5ZmNmYTkyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXFxuQEAgLTIyLDYgKzIyLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9ydC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnEuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcXCJ3NTEwMC5oXFxcIlxcbiBcXG5AQCAtMTU0LDYgKzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcXG4gXFx0dTE2IHMwX3J4X2J1Zl9zaXplO1xcbiBcXG4gXFx0aW50IGlycTtcXG4rXFx0c3RydWN0IGdwaW9fZGVzYyAqbGlua19ncGlvO1xcbiBcXG4gXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbkBAIC00MTQsNiArNDE2LDE2IEBAIHN0YXRpYyB2b2lkIHc1MTAwX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4gfVxcbiBcXG4rc3RhdGljIHUzMiB3NTEwMF9nZXRfbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4re1xcbitcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3BpbylcXG4rXFx0XFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbyk7XFxuK1xcbitcXHRyZXR1cm4gMTtcXG4rfVxcbitcXG4gc3RhdGljIHUzMiB3NTEwMF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuIHtcXG4gXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5AQCAtNjE2LDYgKzYyOCwyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXFxuIFxcdHJldHVybiBJUlFfSEFORExFRDtcXG4gfVxcbiBcXG4rc3RhdGljIGlycXJldHVybl90IHc1MTAwX2RldGVjdF9saW5rKGludCBpcnEsIHZvaWQgKm5kZXZfaW5zdGFuY2UpXFxuK3tcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBuZGV2X2luc3RhbmNlO1xcbitcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbitcXG4rXFx0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcXG4rXFx0XFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApIHtcXG4rXFx0XFx0XFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcXFwibGluayBpcyB1cFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXFxcImxpbmsgaXMgZG93blxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBJUlFfSEFORExFRDtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgdzUxMDBfc2V0cnhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHc1MTAwX3ByaXYsXFxuQEAgLTY1OSw2ICs2ODksMTQgQEAgc3RhdGljIGludCB3NTEwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG4gXFx0bmFwaV9lbmFibGUoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbiBcXHRuZXRpZl9zdGFydF9xdWV1ZShuZGV2KTtcXG4rXFxuK1xcdGlmIChwcml2LVxcdTAwM2VsaW5rX2dwaW8pIHtcXG4rXFx0XFx0aWYgKGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChwcml2LVxcdTAwM2VsaW5rX2dwaW8pICE9IDApXFxuK1xcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vZmYobmRldik7XFxuK1xcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC02NzgsNiArNzE2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB3NTEwMF9ldGh0b29sX29wcyA9IHtcXG4gXFx0LmdldF9kcnZpbmZvXFx0XFx0PSB3NTEwMF9nZXRfZHJ2aW5mbyxcXG4gXFx0LmdldF9tc2dsZXZlbFxcdFxcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxcbiBcXHQuc2V0X21zZ2xldmVsXFx0XFx0PSB3NTEwMF9zZXRfbXNnbGV2ZWwsXFxuK1xcdC5nZXRfbGlua1xcdFxcdD0gdzUxMDBfZ2V0X2xpbmssXFxuIFxcdC5nZXRfcmVnc19sZW5cXHRcXHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcXG4gXFx0LmdldF9yZWdzXFx0XFx0PSB3NTEwMF9nZXRfcmVncyxcXG4gfTtcXG5AQCAtNzUxLDYgKzc5MCwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdHByaXYtXFx1MDAzZW5kZXYgPSBuZGV2O1xcbiBcXHRwcml2LVxcdTAwM2VvcHMgPSBvcHM7XFxuIFxcdHByaXYtXFx1MDAzZWlycSA9IGlycTtcXG4rXFx0cHJpdi1cXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcXFwibGlua1xcXCIsIEdQSU9EX0lOKTtcXG4rXFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pKSB7XFxuK1xcdFxcdGVyciA9IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtXFx1MDAzZWxpbmtfZ3BpbyksXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXFxcblxcXCIpO1xcbitcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xcbitcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4rXFx0fVxcbiBcXG4gXFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xcbiBcXHRuZGV2LVxcdTAwM2VldGh0b29sX29wcyA9IFxcdTAwMjZ3NTEwMF9ldGh0b29sX29wcztcXG5AQCAtODAzLDggKzg0OSwyOSBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZXJyX2h3O1xcbiBcXG4rXFx0aWYgKHByaXYtXFx1MDAzZWxpbmtfZ3Bpbykge1xcbitcXHRcXHRpbnQgbGlua19pcnEgPSBncGlvZF90b19pcnEocHJpdi1cXHUwMDNlbGlua19ncGlvKTtcXG4rXFxuK1xcdFxcdGlmIChsaW5rX2lycSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIGxpbmtfaXJxLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgXFxcIk5vIGNvcnJlc3BvbmRpbmcgaXJxIGZvciBsaW5rIGdwaW9cXFxcblxcXCIpO1xcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgbGlua19pcnEsIE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHc1MTAwX2RldGVjdF9saW5rLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRJUlFGX1RSSUdHRVJfUklTSU5HIHxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0SVJRRl9UUklHR0VSX0ZBTExJTkcgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHRJUlFGX09ORVNIT1QsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJ3NTEwMC1saW5rXFxcIiwgcHJpdi1cXHUwMDNlbmRldik7XFxuK1xcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHRnb3RvIGVycl9ncGlvO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuK2Vycl9ncGlvOlxcbitcXHRmcmVlX2lycShwcml2LVxcdTAwM2VpcnEsIG5kZXYpO1xcbiBlcnJfaHc6XFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXFx1MDAzZXhmZXJfd3EpO1xcbiBlcnJfd3E6XFxuQEAgLTg1Nyw2ICs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG4gXFxuIFxcdFxcdG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7XFxuK1xcbitcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWxpbmtfZ3BpbyB8fFxcbitcXHRcXHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZWxpbmtfZ3BpbykgIT0gMClcXG4rXFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTozNS4yMTI1MDE0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjcxMzQ0MDg1NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgV2l6bmV0IFc1MTAwL1c1MjAwL1c1NTAwIFNQSSBFdGhlcm5ldCBkcml2ZXIgdG8gc3VwcG9ydCBhIGxpbmsgR1BJTy4gVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBTUEkgZGV2aWNlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBwZXJmb3JtcyBoYXJkd2FyZSByZWdpc3RlciBjaGVja3MgKGUuZy4sIHZlcmlmeWluZyB0aGUgUlRSIHJlZ2lzdGVyIHZhbHVlKSB0aGF0IHdpbGwgZmFpbCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudCwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI0MDcxODUyOWRiYWY5OTQ4YzRmYTBmYTI5MTZlZDM0YzJiZGNmYzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjI5OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAudHh0XG5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IGU5NjY1Nzk4YzRiZTYuLjAwMDAwMDAwMDAwMDBcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnR4dFxuKysrIC9kZXYvbnVsbFxuQEAgLTEsNTAgKzAsMCBAQFxuLSogV2l6bmV0IHc1eDAwXG4tXG4tVGhpcyBpcyBhIHN0YW5kYWxvbmUgMTAvMTAwIE1CaXQgRXRoZXJuZXQgY29udHJvbGxlciB3aXRoIFNQSSBpbnRlcmZhY2UuXG4tXG4tRm9yIGVhY2ggZGV2aWNlIGNvbm5lY3RlZCB0byBhIFNQSSBidXMsIGRlZmluZSBhIGNoaWxkIG5vZGUgd2l0aGluXG4tdGhlIFNQSSBtYXN0ZXIgbm9kZS5cbi1cbi1SZXF1aXJlZCBwcm9wZXJ0aWVzOlxuLS0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6XG4tXHQgICAgICBcIndpem5ldCx3NTEwMFwiXG4tXHQgICAgICBcIndpem5ldCx3NTIwMFwiXG4tXHQgICAgICBcIndpem5ldCx3NTUwMFwiXG4tLSByZWc6IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbi0tIGludGVycnVwdHM6IFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZFxuLSAgICAgICAgICAgICAgdG8gYWJvdmUgaW4gaW50ZXJydXB0LXBhcmVudCkgYW5kIGludGVycnVwdCB0eXBlLiB3NXgwMCBuYXRpdmVseVxuLSAgICAgICAgICAgICAgZ2VuZXJhdGVzIGZhbGxpbmcgZWRnZSBpbnRlcnJ1cHRzLCBob3dldmVyLCBhZGRpdGlvbmFsIGJvYXJkIGxvZ2ljXG4tICAgICAgICAgICAgICBtaWdodCBpbnZlcnQgdGhlIHNpZ25hbC5cbi0tIHBpbmN0cmwtbmFtZXM6IExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbi0tIHBpbmN0cmwtMDogTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsXG4tICAgICAgICAgICAgIHNlZSBhbHNvIGdlbmVyaWMgYW5kIHlvdXIgcGxhdGZvcm0gc3BlY2lmaWMgcGluY3RybCBiaW5kaW5nXG4tICAgICAgICAgICAgIGRvY3VtZW50YXRpb24uXG4tXG4tT3B0aW9uYWwgcHJvcGVydGllczpcbi0tIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIGZyZXF1ZW5jeSBvZiB0aGUgU1BJIGJ1cyB3aGVuIGFjY2Vzc2luZyB0aGUgdzU1MDAuXG4tICBBY2NvcmRpbmcgdG8gdGhlIHc1NTAwIGRhdGFzaGVldCwgdGhlIGNoaXAgYWxsb3dzIGEgbWF4aW11bSBvZiA4MCBNSHosIGhvd2V2ZXIsXG4tICBib2FyZCBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4tLSBsb2NhbC1tYWMtYWRkcmVzczogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4tXG4tXG4tRXhhbXBsZSAoZm9yIFJhc3BiZXJyeSBQaSB3aXRoIHBpbiBjb250cm9sIHN0dWZmIGZvciBHUElPIGlycSk6XG4tXG4tXHUwMDI2c3BpIHtcbi1cdGV0aGVybmV0QDA6IHc1NTAwQDAge1xuLVx0XHRjb21wYXRpYmxlID0gXCJ3aXpuZXQsdzU1MDBcIjtcbi1cdFx0cmVnID0gXHUwMDNjMFx1MDAzZTtcbi1cdFx0cGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuLVx0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZldGgxX3BpbnNcdTAwM2U7XG4tXHRcdGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvXHUwMDNlO1xuLVx0XHRpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuLVx0XHRzcGktbWF4LWZyZXF1ZW5jeSA9IFx1MDAzYzMwMDAwMDAwXHUwMDNlO1xuLVx0fTtcbi19O1xuLVxuLVx1MDAyNmdwaW8ge1xuLVx0ZXRoMV9waW5zOiBldGgxX3BpbnMge1xuLVx0XHRicmNtLHBpbnMgPSBcdTAwM2MyNVx1MDAzZTtcbi1cdFx0YnJjbSxmdW5jdGlvbiA9IFx1MDAzYzBcdTAwM2U7IC8qIGluICovXG4tXHRcdGJyY20scHVsbCA9IFx1MDAzYzBcdTAwM2U7IC8qIG5vbmUgKi9cbi1cdH07XG4tfTtcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjhmNDVhNWQ3NzNmZTNcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWxcbkBAIC0wLDAgKzEsMTAzIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwjXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG4rXG4rdGl0bGU6IFdpem5ldCB3NXgwMCBTUEkgRXRoZXJuZXQgQ29udHJvbGxlclxuK1xuK2Rlc2NyaXB0aW9uOiB8XG4rICBUaGlzIGlzIGEgc3RhbmRhbG9uZSAxMC8xMDAgTUJpdCBFdGhlcm5ldCBjb250cm9sbGVyIHdpdGggU1BJIGludGVyZmFjZS5cbitcbisgIEZvciBlYWNoIGRldmljZSBjb25uZWN0ZWQgdG8gYSBTUEkgYnVzLCBkZWZpbmUgYSBjaGlsZCBub2RlIHdpdGhpbiB0aGUgU1BJIG1hc3RlciBub2RlLlxuK1xuK2FsbE9mOlxuKyAgLSAkcmVmOiAvc2NoZW1hcy9uZXQvZXRoZXJuZXQtY29udHJvbGxlci55YW1sI1xuKyAgLSAkcmVmOiAvc2NoZW1hcy9zcGkvc3BpLXBlcmlwaGVyYWwtcHJvcHMueWFtbCNcbitcbitwcm9wZXJ0aWVzOlxuKyAgY29tcGF0aWJsZTpcbisgICAgZW51bTpcbisgICAgICAtIHdpem5ldCx3NTEwMFxuKyAgICAgIC0gd2l6bmV0LHc1MjAwXG4rICAgICAgLSB3aXpuZXQsdzU1MDBcbitcbisgIHJlZzpcbisgICAgZGVzY3JpcHRpb246IFNwZWNpZnkgdGhlIFNQSSBjaGlwIHNlbGVjdCB0aGUgY2hpcCBpcyB3aXJlZCB0by5cbisgICAgbWF4SXRlbXM6IDFcbisgICAgbWluSXRlbXM6IDFcbitcbisgIGludGVycnVwdHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFNwZWNpZnkgdGhlIGludGVycnVwdCBpbmRleCB3aXRoaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyIChyZWZlcnJlZCB0b1xuKyAgICAgIGFib3ZlIGluIGludGVycnVwdC1wYXJlbnQpIGFuZCBpbnRlcnJ1cHQgdHlwZS4gdzV4MDAgbmF0aXZlbHkgZ2VuZXJhdGVzXG4rICAgICAgZmFsbGluZyBlZGdlIGludGVycnVwdHMsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgYm9hcmQgbG9naWMgbWlnaHQgaW52ZXJ0IHRoZVxuKyAgICAgIHNpZ25hbC5cbisgICAgbWF4SXRlbXM6IDFcbisgICAgbWluSXRlbXM6IDFcbitcbisgIHBpbmN0cmwtbmFtZXM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIExpc3Qgb2YgYXNzaWduZWQgc3RhdGUgbmFtZXMsIHNlZSBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbisgICAgZW51bTpcbisgICAgICAtIGRlZmF1bHRcbisgICAgbWluSXRlbXM6IDFcbitcbisgIHBpbmN0cmwtMDpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgTGlzdCBvZiBwaGFuZGxlcyB0byBjb25maWd1cmUgdGhlIEdQSU8gcGluIHVzZWQgYXMgaW50ZXJydXB0IGxpbmUsIHNlZVxuKyAgICAgIGFsc28gZ2VuZXJpYyBhbmQgeW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBwaW5jdHJsIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi5cbisgICAgbWluSXRlbXM6IDFcbitcbisgIGxvY2FsLW1hYy1hZGRyZXNzOiB0cnVlXG4rXG4rICBzcGktbWF4LWZyZXF1ZW5jeTpcbisgICAgZGVzY3JpcHRpb246XG4rICAgICAgTWF4aW11bSBmcmVxdWVuY3kgb2YgdGhlIFNQSSBidXMgd2hlbiBhY2Nlc3NpbmcgdGhlIHc1NTAwLiBBY2NvcmRpbmcgdG9cbisgICAgICB0aGUgdzU1MDAgZGF0YXNoZWV0LCB0aGUgY2hpcCBhbGxvd3MgYSBtYXhpbXVtIG9mIDgwIE1IeiwgaG93ZXZlciwgYm9hcmRcbisgICAgICBkZXNpZ25zIG1heSBuZWVkIHRvIGxpbWl0IHRoaXMgdmFsdWUuXG4rICAgIG1heGltdW06IDgwMDAwMDAwXG4rXG4rICBsaW5rLWdwaW9zOlxuKyAgICBkZXNjcmlwdGlvbjogQSBHUElPIGxpbmUgdXNlZCBmb3IgdGhlIGxpbmsgZGV0ZWN0aW9uIGludGVycnVwdC5cbisgICAgbWF4SXRlbXM6IDFcbitcbityZXF1aXJlZDpcbisgIC0gY29tcGF0aWJsZVxuKyAgLSByZWdcbisgIC0gaW50ZXJydXB0c1xuKyAgLSBwaW5jdHJsLW5hbWVzXG4rICAtIHBpbmN0cmwtMFxuK1xuK3VuZXZhbHVhdGVkUHJvcGVydGllczogZmFsc2VcbitcbitleGFtcGxlczpcbisgIC0gfFxuKyAgICAvKiBFeGFtcGxlIChmb3IgUmFzcGJlcnJ5IFBpIHdpdGggcGluIGNvbnRyb2wgc3R1ZmYgZm9yIEdQSU8gaXJxKSAqL1xuK1xuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuKyAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuK1xuKyAgICBzcGkge1xuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuKyAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XG4rICAgICAgICAgIGNvbXBhdGlibGUgPSBcIndpem5ldCx3NTUwMFwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzBcdTAwM2U7XG4rICAgICAgICAgICAgcGluY3RybC1uYW1lcyA9IFwiZGVmYXVsdFwiO1xuKyAgICAgICAgICAgIHBpbmN0cmwtMCA9IFx1MDAzY1x1MDAyNmV0aDFfcGluc1x1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXHUwMDNjXHUwMDI2Z3Bpb1x1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjMjUgSVJRX1RZUEVfRURHRV9GQUxMSU5HXHUwMDNlO1xuKyAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gXHUwMDNjMzAwMDAwMDBcdTAwM2U7XG4rICAgICAgICAgICAgbGluay1ncGlvcyA9IFx1MDAzY1x1MDAyNmdwaW8gNCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuKyAgICAgICAgICAgIGxvY2FsLW1hYy1hZGRyZXNzID0gWyBhMCBiMCBjMCBkMCBlMCBmMCBdO1xuKyAgICAgICAgfTtcbisgICAgfTtcbitcbisgICAgXHUwMDI2Z3BpbyB7XG4rICAgICAgZXRoMV9waW5zOiBldGgxX3BpbnMge1xuKyAgICAgICAgYnJjbSxwaW5zID0gXHUwMDNjMjUgNFx1MDAzZTtcbisgICAgICAgIGJyY20sZnVuY3Rpb24gPSBcdTAwM2MwIDBcdTAwM2U7IC8qIGluICovXG4rICAgICAgICBicmNtLHB1bGwgPSBcdTAwM2MwIDBcdTAwM2U7IC8qIG5vbmUgKi9cbisgICAgfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5pbmRleCA1M2Q4ZGM2NDJmYmQ2Li4xNDEwYTlmY2ZhOTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXG5AQCAtMjIsNiArMjIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9ydC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwidzUxMDAuaFwiXG4gXG5AQCAtMTU0LDYgKzE1NSw3IEBAIHN0cnVjdCB3NTEwMF9wcml2IHtcbiBcdHUxNiBzMF9yeF9idWZfc2l6ZTtcbiBcbiBcdGludCBpcnE7XG4rXHRzdHJ1Y3QgZ3Bpb19kZXNjICpsaW5rX2dwaW87XG4gXG4gXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuQEAgLTQxNCw2ICs0MTYsMTYgQEAgc3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdHNpemVvZihpbmZvLVx1MDAzZWJ1c19pbmZvKSk7XG4gfVxuIFxuK3N0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4re1xuK1x0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcbitcbitcdGlmIChwcml2LVx1MDAzZWxpbmtfZ3BpbylcbitcdFx0cmV0dXJuICEhZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdHJldHVybiAxO1xuK31cbitcbiBzdGF0aWMgdTMyIHc1MTAwX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTYxNiw2ICs2MjgsMjQgQEAgc3RhdGljIGlycXJldHVybl90IHc1MTAwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxuIFx0cmV0dXJuIElSUV9IQU5ETEVEO1xuIH1cbiBcbitzdGF0aWMgaXJxcmV0dXJuX3QgdzUxMDBfZGV0ZWN0X2xpbmsoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcbit7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XG4rXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuK1xuK1x0aWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHtcbitcdFx0aWYgKGdwaW9kX2dldF92YWx1ZShwcml2LVx1MDAzZWxpbmtfZ3BpbykgIT0gMCkge1xuK1x0XHRcdG5ldGlmX2luZm8ocHJpdiwgbGluaywgbmRldiwgXCJsaW5rIGlzIHVwXFxuXCIpO1xuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0bmV0aWZfaW5mbyhwcml2LCBsaW5rLCBuZGV2LCBcImxpbmsgaXMgZG93blxcblwiKTtcbitcdFx0XHRuZXRpZl9jYXJyaWVyX29mZihuZGV2KTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0cmV0dXJuIElSUV9IQU5ETEVEO1xuK31cbitcbiBzdGF0aWMgdm9pZCB3NTEwMF9zZXRyeF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcbkBAIC02NTksNiArNjg5LDE0IEBAIHN0YXRpYyBpbnQgdzUxMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbiBcdHc1MTAwX2h3X3N0YXJ0KHByaXYpO1xuIFx0bmFwaV9lbmFibGUoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbiBcdG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpO1xuK1xuK1x0aWYgKHByaXYtXHUwMDNlbGlua19ncGlvKSB7XG4rXHRcdGlmIChncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAocHJpdi1cdTAwM2VsaW5rX2dwaW8pICE9IDApXG4rXHRcdFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcbitcdFx0ZWxzZVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTY3OCw2ICs3MTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIHc1MTAwX2V0aHRvb2xfb3BzID0ge1xuIFx0LmdldF9kcnZpbmZvXHRcdD0gdzUxMDBfZ2V0X2RydmluZm8sXG4gXHQuZ2V0X21zZ2xldmVsXHRcdD0gdzUxMDBfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbFx0XHQ9IHc1MTAwX3NldF9tc2dsZXZlbCxcbitcdC5nZXRfbGlua1x0XHQ9IHc1MTAwX2dldF9saW5rLFxuIFx0LmdldF9yZWdzX2xlblx0XHQ9IHc1MTAwX2dldF9yZWdzX2xlbixcbiBcdC5nZXRfcmVnc1x0XHQ9IHc1MTAwX2dldF9yZWdzLFxuIH07XG5AQCAtNzUxLDYgKzc5MCwxMyBAQCBpbnQgdzUxMDBfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzICpvcHMsXG4gXHRwcml2LVx1MDAzZW5kZXYgPSBuZGV2O1xuIFx0cHJpdi1cdTAwM2VvcHMgPSBvcHM7XG4gXHRwcml2LVx1MDAzZWlycSA9IGlycTtcbitcdHByaXYtXHUwMDNlbGlua19ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCBcImxpbmtcIiwgR1BJT0RfSU4pO1xuK1x0aWYgKElTX0VSUihwcml2LVx1MDAzZWxpbmtfZ3BpbykpIHtcbitcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocHJpdi1cdTAwM2VsaW5rX2dwaW8pLFxuK1x0XHRcdFx0ICAgIFwiZmFpbGVkIHRvIGdldCBsaW5rIEdQSU9cXG5cIik7XG4rXHRcdHByaXYtXHUwMDNlbGlua19ncGlvID0gTlVMTDtcbitcdFx0Z290byBlcnJfcmVnaXN0ZXI7XG4rXHR9XG4gXG4gXHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ3NTEwMF9uZXRkZXZfb3BzO1xuIFx0bmRldi1cdTAwM2VldGh0b29sX29wcyA9IFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xuQEAgLTgwMyw4ICs4NDksMjkgQEAgaW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxuIFx0aWYgKGVycilcbiBcdFx0Z290byBlcnJfaHc7XG4gXG4rXHRpZiAocHJpdi1cdTAwM2VsaW5rX2dwaW8pIHtcbitcdFx0aW50IGxpbmtfaXJxID0gZ3Bpb2RfdG9faXJxKHByaXYtXHUwMDNlbGlua19ncGlvKTtcbitcbitcdFx0aWYgKGxpbmtfaXJxIFx1MDAzYyAwKSB7XG4rXHRcdFx0ZXJyID0gZGV2X2Vycl9wcm9iZShkZXYsIGxpbmtfaXJxLFxuK1x0XHRcdFx0XHQgICAgXCJObyBjb3JyZXNwb25kaW5nIGlycSBmb3IgbGluayBncGlvXFxuXCIpO1xuK1x0XHRcdGdvdG8gZXJyX2dwaW87XG4rXHRcdH1cbitcbitcdFx0ZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycShkZXYsIGxpbmtfaXJxLCBOVUxMLFxuK1x0XHRcdFx0XHRcdHc1MTAwX2RldGVjdF9saW5rLFxuK1x0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9SSVNJTkcgfFxuK1x0XHRcdFx0XHRcdElSUUZfVFJJR0dFUl9GQUxMSU5HIHxcbitcdFx0XHRcdFx0XHRJUlFGX09ORVNIT1QsXG4rXHRcdFx0XHRcdFx0XCJ3NTEwMC1saW5rXCIsIHByaXYtXHUwMDNlbmRldik7XG4rXHRcdGlmIChlcnIgXHUwMDNjIDApXG4rXHRcdFx0Z290byBlcnJfZ3BpbztcbitcdH1cbitcbiBcdHJldHVybiAwO1xuIFxuK2Vycl9ncGlvOlxuK1x0ZnJlZV9pcnEocHJpdi1cdTAwM2VpcnEsIG5kZXYpO1xuIGVycl9odzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKHByaXYtXHUwMDNleGZlcl93cSk7XG4gZXJyX3dxOlxuQEAgLTg1Nyw2ICs5MjQsMTAgQEAgc3RhdGljIGludCB3NTEwMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHR3NTEwMF9od19zdGFydChwcml2KTtcbiBcbiBcdFx0bmV0aWZfZGV2aWNlX2F0dGFjaChuZGV2KTtcbitcbitcdFx0aWYgKCFwcml2LVx1MDAzZWxpbmtfZ3BpbyB8fFxuK1x0XHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlbGlua19ncGlvKSAhPSAwKVxuK1x0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gXHR9XG4gXHRyZXR1cm4gMDtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTozNS4yMTI1MDMzN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTkyNzkxNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIFdpem5ldCBXNTEwMCBMaW5rIEdQSU8gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQgYWRkcyBhIGBsaW5rLWdwaW9zYCBlbnRyeSB0byB0aGUgVzUxMDAgRXRoZXJuZXQgZHJpdmVyJ3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEl0IGxvb2tzIGxpa2UgaXQncyBnb2luZyB0byB1c2UgdGhpcyBHUElPIHRvIG1vbml0b3IgdGhlIGxpbmsgc3RhdHVzIGFuZCB1cGRhdGUgdGhlIGNhcnJpZXIgc3RhdGUgaW4gYHc1MTAwLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cblRoaXMgZHJpdmVyIHRhcmdldHMgdGhvc2UgV2l6bmV0IFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyDigJMgdGhlIFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZXZlbiAqZWFzaWx5KiBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdHlwaWNhbGx5IGRvbid0IHJlYWRpbHkgZXhwb3NlIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRob3V0IGEgbG90IG9mIHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gU1BJIGRldmljZXMsIGluIGdlbmVyYWwsIGFyZSB0b3VnaCB0byBnZXQgYXQgZm9yIGZ1enppbmcgd2l0aG91dCBhIGxvdCBvZiBleHRyYSB3b3JrLlxuXG5IbW0uLi4gaXMgdGhlcmUgYSB3b3JrYXJvdW5kIHRvIGZ1enogU1BJIGRldmljZXM/IEkgc2VlbSB0byByZWNhbGwgc3l6a2FsbGVyIGhhcyBzb21lIFNQSSBzdXBwb3J0LCBtYXliZSB0aHJvdWdoIGBzcGlkZXZgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgZ2V0dGluZyAqc3BlY2lmaWMqIFNQSSBFdGhlcm5ldCBjb250cm9sbGVyIGZ1enppbmcgdG8gd29yayBpcyB1c3VhbGx5IGRpZmZpY3VsdCB1bmxlc3MgaXQncyBiZWVuIGV4cGxpY2l0bHkgc2V0IHVwLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgc3l6a2FsbGVyIGhhcyBhbnkgYnVpbHQtaW4gc3VwcG9ydCBmb3Igd2l6bmV0LiBJJ20gZ29pbmcgdG8gcnVuIGEgYGRlZmF1bHRfYXBpOmdyZXBwZXJgIHNlYXJjaCBhbmQgbG9vayBmb3IgXCJ3aXpuZXRcIiBvciBcInc1MTAwXCIgaW4gdGhlIGtlcm5lbCBzb3VyY2UuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgdGhlcmUncyBhbnkgZXhpc3RpbmcgZ3JvdW5kd29yayB0byBsZXZlcmFnZS4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBmZWFzaWJpbGl0eSBvZiBmdXp6aW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTo1MC44MDUyOTg2MDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyODAzOTI0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3NTEwMFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY1OCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbD0xOD1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yMC0gICAgZW51bTpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIxOiAgICAgIC0gd2l6bmV0LHc1MTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yMi0gICAgICAtIHdpem5ldCx3NTIwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc9MTk9Y29uZmlnIFdJWk5FVF9XNTEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWctMjktXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L0tjb25maWc6MzA6XFx0ICB3aWxsIGJlIGNhbGxlZCB3NTEwMC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19XSVpORVRfVzUxMDApICs9IHc1MTAwLm8gdzUxMDAtc3BpLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MjE6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTIyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoyNjpzdGF0aWMgaW50IHc1MTAwX3NwaV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzozODpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIHU4IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZDE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1MTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNTQtXFx0ZGF0YSA9IHJldCBcXHUwMDNjXFx1MDAzYyA4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo1NTpcXHRyZXQgPSB3NTEwMF9zcGlfcmVhZChuZGV2LCBhZGRyICsgMSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo2MDpzdGF0aWMgaW50IHc1MTAwX3NwaV93cml0ZTE2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy02My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NjQ6XFx0cmV0ID0gdzUxMDBfc3BpX3dyaXRlKG5kZXYsIGFkZHIsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTY1LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjY4OlxcdHJldHVybiB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIDEsIGRhdGEgXFx1MDAyNiAweGZmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNjktfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NzE6c3RhdGljIGludCB3NTEwMF9zcGlfcmVhZGJ1bGsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiBhZGRyLCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03Mi1cXHRcXHRcXHQgICAgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTc2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW47IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo3NzpcXHRcXHRpbnQgcmV0ID0gdzUxMDBfc3BpX3JlYWQobmRldiwgYWRkciArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy04Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODc6c3RhdGljIGludCB3NTEwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtODgtXFx0XFx0XFx0ICAgICAgIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtOTItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbjsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjkzOlxcdFxcdGludCByZXQgPSB3NTEwMF9zcGlfd3JpdGUobmRldiwgYWRkciArIGksIGJ1ZltpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTk0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdzUxMDBfb3BzIHc1MTAwX3NwaV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTEwMy1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTA0LVxcdC5jaGlwX2lkID0gVzUxMDAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwNTpcXHQucmVhZCA9IHc1MTAwX3NwaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDY6XFx0LndyaXRlID0gdzUxMDBfc3BpX3dyaXRlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDc6XFx0LnJlYWQxNiA9IHc1MTAwX3NwaV9yZWFkMTYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjEwODpcXHQud3JpdGUxNiA9IHc1MTAwX3NwaV93cml0ZTE2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMDk6XFx0LnJlYWRidWxrID0gdzUxMDBfc3BpX3JlYWRidWxrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzoxMTA6XFx0LndyaXRlYnVsayA9IHc1MTAwX3NwaV93cml0ZWJ1bGssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTExMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTEyNT1zdGF0aWMgc3RydWN0IHc1MjAwX3NwaV9wcml2ICp3NTIwMF9zcGlfcHJpdihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6MTI3OlxcdHJldHVybiB3NTEwMF9vcHNfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yMTM9c3RhdGljIGludCB3NTIwMF9zcGlfd3JpdGVidWxrKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgYWRkciwgY29uc3QgdTggKmJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHc1MTAwX29wcyB3NTIwMF9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI0NC1cXHQubWF5X3NsZWVwID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz0yNzA9c3RhdGljIHN0cnVjdCB3NTUwMF9zcGlfcHJpdiAqdzU1MDBfc3BpX3ByaXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjI3MjpcXHRyZXR1cm4gdzUxMDBfb3BzX3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTI3My19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM9MzcyPXN0YXRpYyBpbnQgdzU1MDBfc3BpX3dyaXRlYnVsayhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MDE6c3RhdGljIGNvbnN0IHN0cnVjdCB3NTEwMF9vcHMgdzU1MDBfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MDItXFx0Lm1heV9zbGVlcCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdzUxMDBfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE0OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MTAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUxMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxNS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTIwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1MjAwLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQxOC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTk6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdzUxMDBfb2ZfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQyMTpzdGF0aWMgaW50IHc1MTAwX3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MjM6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MjQtXFx0a2VybmVsX3Vsb25nX3QgZHJpdmVyX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM3LVxcdGNhc2UgVzUxMDA6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQzODpcXHRcXHRvcHMgPSBcXHUwMDI2dzUxMDBfc3BpX29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDM5LVxcdFxcdHByaXZfc2l6ZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NTM6XFx0cmV0dXJuIHc1MTAwX3Byb2JlKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgb3BzLCBwcml2X3NpemUsIG1hYywgc3BpLVxcdTAwM2VpcnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1NjpzdGF0aWMgdm9pZCB3NTEwMF9zcGlfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1ODpcXHR3NTEwMF9yZW1vdmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDU5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIHc1MTAwX3NwaV9pZHNbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDYyOlxcdHsgXFxcInc1MTAwXFxcIiwgVzUxMDAgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDYzLVxcdHsgXFxcInc1MjAwXFxcIiwgVzUyMDAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NjYtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDY3Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCB3NTEwMF9zcGlfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0Njk6c3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIHc1MTAwX3NwaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ3MC1cXHQuZHJpdmVyXFx0XFx0PSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3MTpcXHRcXHQubmFtZVxcdD0gXFxcInc1MTAwXFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDcyOlxcdFxcdC5wbVxcdD0gXFx1MDAyNnc1MTAwX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDczOlxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHc1MTAwX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NzQtXFx0fSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc1OlxcdC5wcm9iZVxcdFxcdD0gdzUxMDBfc3BpX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0NzY6XFx0LnJlbW92ZVxcdFxcdD0gdzUxMDBfc3BpX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDc3OlxcdC5pZF90YWJsZVxcdD0gdzUxMDBfc3BpX2lkcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDc4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ3OTptb2R1bGVfc3BpX2RyaXZlcih3NTEwMF9zcGlfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtNDgwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjc6I2luY2x1ZGUgXFxcInc1MTAwLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk6I2RlZmluZSBEUlZfTkFNRVxcdFxcXCJ3NTEwMFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMC0jZGVmaW5lIERSVl9WRVJTSU9OXFx0XFxcIjIwMTItMDQtMDRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz0zNT1NT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MTQ1OnN0cnVjdCB3NTEwMF9wcml2IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNDY6XFx0Y29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxNzM6c3RhdGljIGludCB3NTEwMF9yZWFkKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE3ODpzdGF0aWMgaW50IHc1MTAwX3dyaXRlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjE4MzpzdGF0aWMgaW50IHc1MTAwX3JlYWQxNihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxODg6c3RhdGljIGludCB3NTEwMF93cml0ZTE2KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1MzIgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTM6c3RhdGljIGludCB3NTEwMF9yZWFkYnVsayhzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoxOTg6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1bGsoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUzMiBhZGRyLCBjb25zdCB1OCAqYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTE5OS1cXHRcXHRcXHQgICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjIwNDpzdGF0aWMgaW50IHc1MTAwX3JlYWRidWYoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYsIHUxNiBvZmZzZXQsIHU4ICpidWYsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjA6XFx0cmV0ID0gdzUxMDBfcmVhZGJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyMS1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjI0OlxcdHJldHVybiB3NTEwMF9yZWFkYnVsayhwcml2LCBtZW1fc3RhcnQsIGJ1ZiArIGxlbiwgcmVtYWluKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjUtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTIyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyMjc6c3RhdGljIGludCB3NTEwMF93cml0ZWJ1ZihzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IG9mZnNldCwgY29uc3QgdTggKmJ1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yMjgtXFx0XFx0XFx0ICBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI0NDpcXHRyZXQgPSB3NTEwMF93cml0ZWJ1bGsocHJpdiwgYWRkciwgYnVmLCBsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI0NS1cXHRpZiAocmV0IHx8ICFyZW1haW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjQ4OlxcdHJldHVybiB3NTEwMF93cml0ZWJ1bGsocHJpdiwgbWVtX3N0YXJ0LCBidWYgKyBsZW4sIHJlbWFpbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjQ5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjUxOnN0YXRpYyBpbnQgdzUxMDBfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTY6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1JTVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjU3LVxcdG1kZWxheSg1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzoyNTg6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfTVIsIE1SX1BCKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjYzOnN0YXRpYyBpbnQgdzUxMDBfY29tbWFuZChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiwgdTE2IGNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI2NzpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9DUihwcml2KSwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MjcxOlxcdHdoaWxlICh3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0NSKHByaXYpKSAhPSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjcyLVxcdFxcdGlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4MDpzdGF0aWMgdm9pZCB3NTEwMF93cml0ZV9tYWNhZGRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjg0OlxcdHc1MTAwX3dyaXRlYnVsayhwcml2LCBXNTEwMF9TSEFSLCBuZGV2LVxcdTAwM2VkZXZfYWRkciwgRVRIX0FMRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4NS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjI4NzpzdGF0aWMgdm9pZCB3NTEwMF9zb2NrZXRfaW50cl9tYXNrKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2LCB1OCBtYXNrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTI4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk2OlxcdHc1MTAwX3dyaXRlKHByaXYsIGltciwgbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMjk3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0yOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mjk5OnN0YXRpYyB2b2lkIHc1MTAwX2VuYWJsZV9pbnRyKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzAxOlxcdHc1MTAwX3NvY2tldF9pbnRyX21hc2socHJpdiwgSVJfUzApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwMi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMwNDpzdGF0aWMgdm9pZCB3NTEwMF9kaXNhYmxlX2ludHIoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzA1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDY6XFx0dzUxMDBfc29ja2V0X2ludHJfbWFzayhwcml2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMDctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMDk6c3RhdGljIHZvaWQgdzUxMDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzEzLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMxNDpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9STVNSLCAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMTU6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUxMDBfVE1TUiwgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzE4OnN0YXRpYyB2b2lkIHc1MjAwX21lbW9yeV9jb25maWd1cmUoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMjU6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fUlhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzI2OlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MjAwX1NuX1RYTUVNX1NJWkUoMCksIDB4MTApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMjgtXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIDg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjMyOTpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTIwMF9Tbl9SWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzA6XFx0XFx0dzUxMDBfd3JpdGUocHJpdiwgVzUyMDBfU25fVFhNRU1fU0laRShpKSwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzMxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozMzQ6c3RhdGljIHZvaWQgdzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0MTpcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9SWE1FTV9TSVpFKDApLCAweDEwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNDI6XFx0dzUxMDBfd3JpdGUocHJpdiwgVzU1MDBfU25fVFhNRU1fU0laRSgwKSwgMHgxMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM0NC1cXHRmb3IgKGkgPSAxOyBpIFxcdTAwM2MgODsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzQ1OlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1NTAwX1NuX1JYTUVNX1NJWkUoaSksIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM0NjpcXHRcXHR3NTEwMF93cml0ZShwcml2LCBXNTUwMF9Tbl9UWE1FTV9TSVpFKGkpLCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNDctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1MDpzdGF0aWMgaW50IHc1MTAwX2h3X3Jlc2V0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzU0OlxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozNTY6XFx0dzUxMDBfZGlzYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM1NzpcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2MC1cXHRjYXNlIFc1MTAwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjM2MTpcXHRcXHR3NTEwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM2Mi1cXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc2OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzgyOnN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6MzkzOlxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTQ6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9PUEVOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzozOTU6XFx0dzUxMDBfZW5hYmxlX2ludHIocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtMzk2LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zOTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzk4OnN0YXRpYyB2b2lkIHc1MTAwX2h3X2Nsb3NlKHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTM5OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDAwOlxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MDE6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9DTE9TRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDAyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MTA6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDExLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDE5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDIwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0MjE6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDI5OnN0YXRpYyB1MzIgdzUxMDBfZ2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDMxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzNjpzdGF0aWMgdm9pZCB3NTEwMF9zZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHUzMiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00Mzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQzODpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQzOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDM6c3RhdGljIGludCB3NTEwMF9nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NDg6c3RhdGljIHZvaWQgdzUxMDBfZ2V0X3JlZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDQ5LVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3JlZ3MgKnJlZ3MsIHZvaWQgKmJ1ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1MTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NTMtXFx0cmVncy1cXHUwMDNldmVyc2lvbiA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU0OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFc1MTAwX0NPTU1PTl9SRUdTLCBidWYsIFc1MTAwX0NPTU1PTl9SRUdTX0xFTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU1LVxcdGJ1ZiArPSBXNTEwMF9DT01NT05fUkVHU19MRU47XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDU2OlxcdHc1MTAwX3JlYWRidWxrKHByaXYsIFMwX1JFR1MocHJpdiksIGJ1ZiwgVzUxMDBfUzBfUkVHU19MRU4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ1Ny19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ1OTpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDYxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ2My1cXHRuZXRpZl9zdG9wX3F1ZXVlKG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ2NDpcXHR3NTEwMF9od19yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0NjU6XFx0dzUxMDBfaHdfc3RhcnQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDY2LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Vycm9ycysrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ3MTpzdGF0aWMgdm9pZCB3NTEwMF9yZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDczOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ3NC1cXHRcXHRcXHRcXHRcXHQgICAgICAgcmVzdGFydF93b3JrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc2OlxcdHc1MTAwX3Jlc3RhcnQocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDc3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDc5OnN0YXRpYyB2b2lkIHc1MTAwX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDgxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDg1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODY6XFx0XFx0dzUxMDBfcmVzdGFydChuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy00ODctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo0ODk6c3RhdGljIHZvaWQgdzUxMDBfdHhfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTQ5MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NDkxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkyLVxcdHUxNiBvZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NDpcXHRvZmZzZXQgPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfVFhfV1IocHJpdikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NTpcXHR3NTEwMF93cml0ZWJ1Zihwcml2LCBvZmZzZXQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjQ5NjpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1RYX1dSKHByaXYpLCBvZmZzZXQgKyBza2ItXFx1MDAzZWxlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNDk3LVxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2J5dGVzICs9IHNrYi1cXHUwMDNlbGVuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwMTpcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1NFTkQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNDpzdGF0aWMgdm9pZCB3NTEwMF90eF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUwNjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdzUxMDBfcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHR4X3dvcmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTEzLVxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1MTQ6XFx0dzUxMDBfdHhfc2tiKHByaXYtXFx1MDAzZW5kZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTE1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTE3OnN0YXRpYyBuZXRkZXZfdHhfdCB3NTEwMF9zdGFydF90eChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUxOTpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUyNy1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUyODpcXHRcXHR3NTEwMF90eF9za2IobmRldiwgc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MjktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnc1MTAwX3J4X3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01MzUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjUzNjpcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTUzNy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTQwLVxcdHU4IGhlYWRlclsyXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NDE6XFx0dTE2IHJ4X2J1Zl9sZW4gPSB3NTEwMF9yZWFkMTYocHJpdiwgVzUxMDBfUzBfUlhfUlNSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ2OlxcdG9mZnNldCA9IHc1MTAwX3JlYWQxNihwcml2LCBXNTEwMF9TMF9SWF9SRChwcml2KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTQ3OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0LCBoZWFkZXIsIDIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU0OC1cXHRyeF9sZW4gPSBnZXRfdW5hbGlnbmVkX2JlMTYoaGVhZGVyKSAtIDI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTEtXFx0aWYgKHVubGlrZWx5KCFza2IpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTUyOlxcdFxcdHc1MTAwX3dyaXRlMTYocHJpdiwgVzUxMDBfUzBfUlhfUkQocHJpdiksIG9mZnNldCArIHJ4X2J1Zl9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU1MzpcXHRcXHR3NTEwMF9jb21tYW5kKHByaXYsIFMwX0NSX1JFQ1YpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU1NC1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9kcm9wcGVkKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NTgtXFx0c2tiX3B1dChza2IsIHJ4X2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTU5OlxcdHc1MTAwX3JlYWRidWYocHJpdiwgb2Zmc2V0ICsgMiwgc2tiLVxcdTAwM2VkYXRhLCByeF9sZW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU2MDpcXHR3NTEwMF93cml0ZTE2KHByaXYsIFc1MTAwX1MwX1JYX1JEKHByaXYpLCBvZmZzZXQgKyAyICsgcnhfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1NjE6XFx0dzUxMDBfY29tbWFuZChwcml2LCBTMF9DUl9SRUNWKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjItXFx0c2tiLVxcdTAwM2Vwcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgbmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcwOnN0YXRpYyB2b2lkIHc1MTAwX3J4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTcyOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU3My1cXHRcXHRcXHRcXHRcXHQgICAgICAgcnhfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc2OlxcdHdoaWxlICgoc2tiID0gdzUxMDBfcnhfc2tiKHByaXYtXFx1MDAzZW5kZXYpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzctXFx0XFx0bmV0aWZfcngoc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTc5OlxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4MC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjU4MjpzdGF0aWMgaW50IHc1MTAwX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo1ODQ6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IHc1MTAwX3ByaXYsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU4NS1cXHRpbnQgcnhfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy01ODctXFx0Zm9yIChyeF9jb3VudCA9IDA7IHJ4X2NvdW50IFxcdTAwM2MgYnVkZ2V0OyByeF9jb3VudCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTg4OlxcdFxcdHN0cnVjdCBza19idWZmICpza2IgPSB3NTEwMF9yeF9za2IocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNTk3LVxcdFxcdG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByeF9jb3VudCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NTk4OlxcdFxcdHc1MTAwX2VuYWJsZV9pbnRyKHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTU5OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA0OnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqbmRldl9pbnN0YW5jZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MDUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYwNi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IG5kZXZfaW5zdGFuY2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjA3OlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYwOTpcXHRpbnQgaXIgPSB3NTEwMF9yZWFkKHByaXYsIFc1MTAwX1MwX0lSKHByaXYpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTAtXFx0aWYgKCFpcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MTEtXFx0XFx0cmV0dXJuIElSUV9OT05FO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjYxMjpcXHR3NTEwMF93cml0ZShwcml2LCBXNTEwMF9TMF9JUihwcml2KSwgaXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYxOS1cXHRpZiAoaXIgXFx1MDAyNiBTMF9JUl9SRUNWKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjIwOlxcdFxcdHc1MTAwX2Rpc2FibGVfaW50cihwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjMxOnN0YXRpYyBpcnFyZXR1cm5fdCB3NTEwMF9kZXRlY3RfbGluayhpbnQgaXJxLCB2b2lkICpuZGV2X2luc3RhbmNlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTYzMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjMzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbmRldl9pbnN0YW5jZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo2MzQ6XFx0c3RydWN0IHc1MTAwX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02MzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjQ5OnN0YXRpYyB2b2lkIHc1MTAwX3NldHJ4X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6NjUxOlxcdHN0cnVjdCB3NTEwMF9wcml2ICpwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3NTEwMF9wcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTY1Mi1cXHRcXHRcXHRcXHRcXHQgICAgICAgc2V0cnhfd29yayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtNjUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjY1NDpcXHR3NTEwMF9od19zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy02NTUtfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODoyOTo1My4yMzMzNDU0OThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM4OTAzODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmNgIGRyaXZlci4gVGhpcyBpcyBmb3IgV2l6bmV0IFc1MTAwLCBXNTIwMCwgYW5kIFc1NTAwIFNQSSBFdGhlcm5ldCBjb250cm9sbGVycywgcmlnaHQ/IFRoZSBwYXRjaCBpcyBhZGRpbmcgYSBgbGlua19ncGlvYCB3aGljaCwgaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgbWVhbnMgaXQncyByZXF1ZXN0aW5nIGEgR1BJTyBwaW4sIGFuZCByZWdpc3RlcmluZyBhbiBpbnRlcnJ1cHQgZm9yIGl0IHRvIG1vbml0b3IgdGhlIGxpbmsgc3RhdGUuIE1ha2VzIHNlbnNlLiBHUElPIGZvciBsaW5rIHN0YXRlIGlzIHByZXR0eSBzdGFuZGFyZCBwcmFjdGljZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aWxsIHRoaXMgZXZlbiBiZSBoaXQgaW4gUUVNVT8gVGhlc2UgU1BJIGRldmljZXMsIGdlbmVyYWxseSwgeW91J2QgY29uZmlndXJlIHRoZW0gdGhyb3VnaCBkZXZpY2UgdHJlZSBvdmVybGF5cywgb3Igc29tZXRoaW5nIHNpbWlsYXIuIFN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSB0b3VjaCBTUEkgRXRoZXJuZXQgY29udHJvbGxlcnMgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBzZXR1cCBmb3IgdGhlbS4gQnV0IHdhaXQuLi4gZG9lc24ndCBzeXprYWxsZXIgKmhhdmUqIHNvbWUgbGV2ZWwgb2Ygc3VwcG9ydCBmb3IgU1BJPyBJIHZhZ3VlbHkgcmVjYWxsIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgdGhhdC4gT2theSwgc28gdGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGlzIHNwZWNpZmljYWxseSBjb25maWd1cmVkIHRvIGluc3RhbnRpYXRlIGEgV2l6bmV0IGRldmljZSBpbiBpdHMgY29uZmlndXJhdGlvbnMuIFdlIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN5emthbGxlciBkZXNjcmlwdGlvbnMgZm9yIHdpem5ldCBvciBTUEkuIFRoYXQnbGwgdGVsbCB1cyBpZiB3ZSdyZSBldmVuIHRlc3RpbmcgdGhpcyBjb2RlIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDQ2LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjI5OjU5LjI3MjI1MzQ0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2MzUwNzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIndpem5ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L3dpem5ldCx3NXgwMC55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9MTg9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtMjAtICAgIGVudW06XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDoyMTogICAgICAtIHdpem5ldCx3NTEwMFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw6MjI6ICAgICAgLSB3aXpuZXQsdzUyMDBcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sOjIzOiAgICAgIC0gd2l6bmV0LHc1NTAwXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbC0yNC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWw9NzQ9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpem5ldCx3NXgwMC55YW1sLTg1LSAgICAgICAgZXRoZXJuZXRAMDogdzU1MDBAMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXpuZXQsdzV4MDAueWFtbDo4NjogICAgICAgICAgY29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzU1MDBcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2l6bmV0LHc1eDAwLnlhbWwtODctICAgICAgICAgICAgcmVnID0gXFx1MDAzYzBcXHUwMDNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZz0xODg9c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZzoxODk6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnLTE5MC1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU9MTAxPW9iai0kKENPTkZJR19ORVRfVkVORE9SX1dBTkdYVU4pICs9IHdhbmd4dW4vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGU6MTAyOm9iai0kKENPTkZJR19ORVRfVkVORE9SX1dJWk5FVCkgKz0gd2l6bmV0L1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlLTEwMy1vYmotJChDT05GSUdfTkVUX1ZFTkRPUl9YSUxJTlgpICs9IHhpbGlueC9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy03LSAqIERhdGFzaGVldDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6ODogKiBodHRwOi8vd3d3Lndpem5ldC5jby5rci93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MTAwL0RvY3VtZW50L1c1MTAwX0RhdGFzaGVldF92MS4yLjYucGRmXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjk6ICogaHR0cDovL3dpem5ldGhvbWUuY2FmZTI0LmNvbS93cC1jb250ZW50L3VwbG9hZHMvd2l6bmV0aG9tZS9DaGlwL1c1MjAwL0RvY3VtZW50cy9XNTIwMF9EU19WMTQwRS5wZGZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmMtMTAtICogaHR0cDovL3dpendpa2kubmV0L3dpa2kvbGliL2V4ZS9mZXRjaC5waHA/bWVkaWE9cHJvZHVjdHM6dzU1MDA6dzU1MDBfZHNfdjEwNmVfMTQxMjMwLnBkZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jPTQxMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3NTEwMF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYzo0MTQ6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJ3aXpuZXQsdzUxMDBcXFwiLCAuZGF0YSA9IChjb25zdCB2b2lkKilXNTEwMCwgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAtc3BpLmM6NDE1OlxcdHsgLmNvbXBhdGlibGUgPSBcXFwid2l6bmV0LHc1MjAwXFxcIiwgLmRhdGEgPSAoY29uc3Qgdm9pZCopVzUyMDAsIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQxNjpcXHR7IC5jb21wYXRpYmxlID0gXFxcIndpem5ldCx3NTUwMFxcXCIsIC5kYXRhID0gKGNvbnN0IHZvaWQqKVc1NTAwLCB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00MTctXFx0eyB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDowMS4zNDg2MTIwMDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTA3MTc5Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2l6bmV0IERyaXZlciBQYXRjaCBmb3IgU3l6a2FsbGVyIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0YXJnZXRzIGEgdmVyeSBzcGVjaWZpYyBwaWVjZSBvZiBoYXJkd2FyZSDigJMgYSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0J3MgYSByZWFsLCBwaHlzaWNhbCBTUEkgZGV2aWNlLCB3aGljaCBpbW1lZGlhdGVseSBwcmVzZW50cyBhIGNoYWxsZW5nZS4gSSBrbm93IHRoYXQgdmFuaWxsYSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSB0aGVzZSBwcmVjaXNlbHkuIFRoZSBiaWcgcXVlc3Rpb24gaXMgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFN5emthbGxlcidzIHN0cmVuZ3RoIGlzIGl0cyBhYmlsaXR5IHRvIGZpbmQgYW5kIHRyaWdnZXIgYnVncyB0aHJvdWdoIGZ1enppbmcsIGJ1dCBpdHMgbW9kZWwgb2YgaG93IHRvICppbnN0YW50aWF0ZSogaGFyZHdhcmUgaXMga2V5IGhlcmUuXG5cblRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIGJlIGdldHRpbmcgdGhlIGRyaXZlciB0byBhY3R1YWxseSAqc2VlKiB0aGUgaGFyZHdhcmUuIFRoZSBnb2FsIGlzIHRvIHJlYWNoIGVpdGhlciB0aGUgYHc1MTAwX2RldGVjdF9saW5rYCBpbnRlcnJ1cHQgb3IgdGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24uIFRoZSBrZXkgZGVwZW5kZW5jeSBpcyBhICp2YWxpZCogU1BJIGRldmljZSB0aGF0IGhhcyBhIGBsaW5rLWdwaW9zYCBwcm9wZXJ0eS4gVGhhdCBwcm9wZXJ0eSBpcyB0aGUga2V5IHRvIGxldHRpbmcgdGhlIGRyaXZlciBrbm93IGl0IGlzIGNvbm5lY3RlZCB0byBhIGxpbmsgdG8gd29yayB3aXRoLlxuXG5Ob3cgSSdtIHRoaW5raW5nLi4uIGNhbiBTeXprYWxsZXIgbGV2ZXJhZ2UgZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3IgZXZlbiBuZXRsaW5rIGludGVyZmFjZXMgdG8gaW5zdGFudGlhdGUgYW4gU1BJIGRldmljZT8gSXQncyBwb3NzaWJsZSwgdGhvdWdoIEknbSBub3QgZW50aXJlbHkgY29uZmlkZW50LiBFdmVuIGlmIHdlICpjb3VsZCogY3JlYXRlIHRoYXQgU1BJIGRldmljZSBpbiB0aGUgc2ltdWxhdGVkIGVudmlyb25tZW50LCB0aGUgaGFyZHdhcmUgaXNuJ3QgZW11bGF0ZWQuIFRoYXQgbWVhbnMgYW55IFNQSSByZWFkcyBvciB3cml0ZXMgd291bGQgZWl0aGVyIGZhaWwgb3V0cmlnaHQgb3IgdGltZSBvdXQuIFRoYXQgd291bGQgcHJldmVudCB0aGUgZHJpdmVyIGZyb20gaW5pdGlhbGl6aW5nIHByb3Blcmx5IGFueXdheS5cblxuSSBuZWVkIHRvIGRpdmUgaW50byBgdzUxMDAuY2AgYW5kIHNwZWNpZmljYWxseSBsb29rIGF0IHRoZSBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcmR3YXJlIGNoZWNrcyBpdCBwZXJmb3Jtcy4gRG9lcyBpdCBkbyBhbnkga2luZCBvZiBpZGVudGlmaWNhdGlvbiBjaGVja3MgdG8gZGV0ZWN0IGlmIHRoZSBkZXZpY2UgaXMgYWN0dWFsbHkgcHJlc2VudCwgb3IgZG9lcyBpdCBqdXN0IGFzc3VtZSBpdCdzIHRoZXJlIGJhc2VkIG9uIHRoZSBkZXZpY2UgdHJlZT8gVW5kZXJzdGFuZGluZyB0aGF0IGZsb3cgaXMga2V5LiBJZiBpdCdzIGEgc2ltcGxlLCBwcmVkaWN0YWJsZSBzZXF1ZW5jZSB0aGVuIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSB0byBjcmFmdCBhIHN5emthbGxlciB0ZW1wbGF0ZSB0byB0cmlnZ2VyIHRoZSBjYWxsLiBPdGhlcndpc2UsIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBhIG1vcmUgaW52b2x2ZWQgYXBwcm9hY2gsIHN1Y2ggYXMgdXNpbmcgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgZW11bGF0aW9uIHN0cmF0ZWd5IGlmIHRoZSBoYXJkd2FyZSBjaGVja3MgYXJlIGNvbXBsZXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDQ1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjA4LjI1NTgxMTUwN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjc3MDc1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInc1MTAwX3Byb2JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYz00MjE9c3RhdGljIGludCB3NTEwMF9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC1zcGkuYy00NTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jOjQ1MzpcXHRyZXR1cm4gdzUxMDBfcHJvYmUoXFx1MDAyNnNwaS1cXHUwMDNlZGV2LCBvcHMsIHByaXZfc2l6ZSwgbWFjLCBzcGktXFx1MDAzZWlycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLXNwaS5jLTQ1NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYz03Mzk9RVhQT1JUX1NZTUJPTF9HUEwodzUxMDBfb3BzX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYzo3NDE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTc0Mi1cXHRcXHRpbnQgc2l6ZW9mX29wc19wcml2LCBjb25zdCB2b2lkICptYWNfYWRkciwgaW50IGlycSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTg4Mi19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6ODgzOkVYUE9SVF9TWU1CT0xfR1BMKHc1MTAwX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy04ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuaD0yOT12b2lkICp3NTEwMF9vcHNfcHJpdihjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmgtMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmg6MzE6aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5oLTMyLVxcdFxcdGludCBzaXplb2Zfb3BzX3ByaXYsIGNvbnN0IHZvaWQgKm1hY19hZGRyLCBpbnQgaXJxKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MTAuNTMyOTQ4MjA3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNTcwNDI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBIYXJkd2FyZSBJbml0aWFsaXphdGlvbiBpbiBgdzUxMDBfcHJvYmVgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgdzUxMDBfcHJvYmVgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBXNTEwMCBoYXJkd2FyZS4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBhbnkgdGhvcm91Z2ggZHJpdmVyIHdvdWxkIGluY2x1ZGUgc29tZSBraW5kIG9mIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGFuZCBzYW5pdHkgY2hlY2tzIHdpdGhpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIEknbSBob3BpbmcgdG8gZmluZCBjbGVhciBpbmRpY2F0b3JzIG9mIHJlZ2lzdGVyIHJlYWRzLCB3cml0ZXMsIGFuZCBwZXJoYXBzIGV2ZW4gc29tZSBleHBlY3RlZCByZXNwb25zZXMgdGhhdCB3b3VsZCBjb25maXJtIHRoZSBkZXZpY2UncyBwcmVzZW5jZSBhbmQgYmFzaWMgZnVuY3Rpb25hbGl0eS4gVGhpcyBpbml0aWFsIHByb2JpbmcgaXMgY3J1Y2lhbCDigJMgaXQncyB0aGUgZm91bmRhdGlvbiBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJ20gbG9va2luZyBmb3IgdGhlIFwiaGVsbG8gd29ybGRcIiBvZiB0aGlzIGRyaXZlciwgdGhlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBoYXJkd2FyZSBpcyBhbGl2ZSBhbmQga2lja2luZy4gSG9wZWZ1bGx5LCBpdCBpcyB0aGVyZSwgc28gSSBjYW4gc2VlIHdoYXQgaXMgYmVpbmcgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI1OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjE0LjY2ODY2MTg2MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIzNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc0MSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3NDE6XFx0aW50IHc1MTAwX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHc1MTAwX29wcyAqb3BzLFxcbiA3NDI6XFx0XFx0XFx0aW50IHNpemVvZl9vcHNfcHJpdiwgY29uc3Qgdm9pZCAqbWFjX2FkZHIsIGludCBpcnEpXFxuIDc0MzpcXHR7XFxuIDc0NDpcXHRcXHRzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdjtcXG4gNzQ1OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiA3NDY6XFx0XFx0aW50IGVycjtcXG4gNzQ3OlxcdFxcdHNpemVfdCBhbGxvY19zaXplO1xcbiA3NDg6XFx0XFxuIDc0OTpcXHRcXHRhbGxvY19zaXplID0gc2l6ZW9mKCpwcml2KTtcXG4gNzUwOlxcdFxcdGlmIChzaXplb2Zfb3BzX3ByaXYpIHtcXG4gNzUxOlxcdFxcdFxcdGFsbG9jX3NpemUgPSBBTElHTihhbGxvY19zaXplLCBORVRERVZfQUxJR04pO1xcbiA3NTI6XFx0XFx0XFx0YWxsb2Nfc2l6ZSArPSBzaXplb2Zfb3BzX3ByaXY7XFxuIDc1MzpcXHRcXHR9XFxuIDc1NDpcXHRcXHRhbGxvY19zaXplICs9IE5FVERFVl9BTElHTiAtIDE7XFxuIDc1NTpcXHRcXG4gNzU2OlxcdFxcdG5kZXYgPSBhbGxvY19ldGhlcmRldihhbGxvY19zaXplKTtcXG4gNzU3OlxcdFxcdGlmICghbmRldilcXG4gNzU4OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA3NTk6XFx0XFx0U0VUX05FVERFVl9ERVYobmRldiwgZGV2KTtcXG4gNzYwOlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIG5kZXYpO1xcbiA3NjE6XFx0XFx0cHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRzd2l0Y2ggKG9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiA3NjQ6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gNzY1OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3JlZ3MgPSBXNTEwMF9TMF9SRUdTO1xcbiA3NjY6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmID0gVzUxMDBfVFhfTUVNX1NUQVJUO1xcbiA3Njc6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfdHhfYnVmX3NpemUgPSBXNTEwMF9UWF9NRU1fU0laRTtcXG4gNzY4OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1ZiA9IFc1MTAwX1JYX01FTV9TVEFSVDtcXG4gNzY5OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3J4X2J1Zl9zaXplID0gVzUxMDBfUlhfTUVNX1NJWkU7XFxuIDc3MDpcXHRcXHRcXHRicmVhaztcXG4gNzcxOlxcdFxcdGNhc2UgVzUyMDA6XFxuIDc3MjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yZWdzID0gVzUyMDBfUzBfUkVHUztcXG4gNzczOlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1ZiA9IFc1MjAwX1RYX01FTV9TVEFSVDtcXG4gNzc0OlxcdFxcdFxcdHByaXYtXFx1MDAzZXMwX3R4X2J1Zl9zaXplID0gVzUyMDBfVFhfTUVNX1NJWkU7XFxuIDc3NTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWYgPSBXNTIwMF9SWF9NRU1fU1RBUlQ7XFxuIDc3NjpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF9yeF9idWZfc2l6ZSA9IFc1MjAwX1JYX01FTV9TSVpFO1xcbiA3Nzc6XFx0XFx0XFx0YnJlYWs7XFxuIDc3ODpcXHRcXHRjYXNlIFc1NTAwOlxcbiA3Nzk6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcmVncyA9IFc1NTAwX1MwX1JFR1M7XFxuIDc4MDpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWYgPSBXNTUwMF9UWF9NRU1fU1RBUlQ7XFxuIDc4MTpcXHRcXHRcXHRwcml2LVxcdTAwM2VzMF90eF9idWZfc2l6ZSA9IFc1NTAwX1RYX01FTV9TSVpFO1xcbiA3ODI6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmID0gVzU1MDBfUlhfTUVNX1NUQVJUO1xcbiA3ODM6XFx0XFx0XFx0cHJpdi1cXHUwMDNlczBfcnhfYnVmX3NpemUgPSBXNTUwMF9SWF9NRU1fU0laRTtcXG4gNzg0OlxcdFxcdFxcdGJyZWFrO1xcbiA3ODU6XFx0XFx0ZGVmYXVsdDpcXG4gNzg2OlxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIDc4NzpcXHRcXHRcXHRnb3RvIGVycl9yZWdpc3RlcjtcXG4gNzg4OlxcdFxcdH1cXG4gNzg5OlxcdFxcbiA3OTA6XFx0XFx0cHJpdi1cXHUwMDNlbmRldiA9IG5kZXY7XFxuIDc5MTpcXHRcXHRwcml2LVxcdTAwM2VvcHMgPSBvcHM7XFxuIDc5MjpcXHRcXHRwcml2LVxcdTAwM2VpcnEgPSBpcnE7XFxuIDc5MzpcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsIFxcXCJsaW5rXFxcIiwgR1BJT0RfSU4pO1xcbiA3OTQ6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pKSB7XFxuIDc5NTpcXHRcXHRcXHRlcnIgPSBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwcml2LVxcdTAwM2VsaW5rX2dwaW8pLFxcbiA3OTY6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gZ2V0IGxpbmsgR1BJT1xcXFxuXFxcIik7XFxuIDc5NzpcXHRcXHRcXHRwcml2LVxcdTAwM2VsaW5rX2dwaW8gPSBOVUxMO1xcbiA3OTg6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDc5OTpcXHRcXHR9XFxuIDgwMDpcXHRcXG4gODAxOlxcdFxcdG5kZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dzUxMDBfbmV0ZGV2X29wcztcXG4gODAyOlxcdFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNnc1MTAwX2V0aHRvb2xfb3BzO1xcbiA4MDM6XFx0XFx0bmV0aWZfbmFwaV9hZGRfd2VpZ2h0KG5kZXYsIFxcdTAwMjZwcml2LVxcdTAwM2VuYXBpLCB3NTEwMF9uYXBpX3BvbGwsIDE2KTtcXG4gODA0OlxcdFxcbiA4MDU6XFx0XFx0LyogVGhpcyBjaGlwIGRvZXNuJ3Qgc3VwcG9ydCBWTEFOIHBhY2tldHMgd2l0aCBub3JtYWwgTVRVLFxcbiA4MDY6XFx0XFx0ICogc28gZGlzYWJsZSBWTEFOIGZvciB0aGlzIGRldmljZS5cXG4gODA3OlxcdFxcdCAqL1xcbiA4MDg6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9WTEFOX0NIQUxMRU5HRUQ7XFxuIDgwOTpcXHRcXG4gODEwOlxcdFxcdGVyciA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gODExOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA4MTI6XFx0XFx0XFx0Z290byBlcnJfcmVnaXN0ZXI7XFxuIDgxMzpcXHRcXG4gODE0OlxcdFxcdHByaXYtXFx1MDAzZXhmZXJfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzXFxcIiwgV1FfTUVNX1JFQ0xBSU0gfCBXUV9QRVJDUFUsIDAsXFxuIDgxNTpcXHRcXHRcXHRcXHRcXHRcXHRuZXRkZXZfbmFtZShuZGV2KSk7XFxuIDgxNjpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZXhmZXJfd3EpIHtcXG4gODE3OlxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDgxODpcXHRcXHRcXHRnb3RvIGVycl93cTtcXG4gODE5OlxcdFxcdH1cXG4gODIwOlxcdFxcbiA4MjE6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VyeF93b3JrLCB3NTEwMF9yeF93b3JrKTtcXG4gODIyOlxcdFxcdElOSVRfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNldHhfd29yaywgdzUxMDBfdHhfd29yayk7XFxuIDgyMzpcXHRcXHRJTklUX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZXNldHJ4X3dvcmssIHc1MTAwX3NldHJ4X3dvcmspO1xcbiA4MjQ6XFx0XFx0SU5JVF9XT1JLKFxcdTAwMjZwcml2LVxcdTAwM2VyZXN0YXJ0X3dvcmssIHc1MTAwX3Jlc3RhcnRfd29yayk7XFxuIDgyNTpcXHRcXG4gODI2OlxcdFxcdGlmIChtYWNfYWRkcilcXG4gODI3OlxcdFxcdFxcdGV0aF9od19hZGRyX3NldChuZGV2LCBtYWNfYWRkcik7XFxuIDgyODpcXHRcXHRlbHNlXFxuIDgyOTpcXHRcXHRcXHRldGhfaHdfYWRkcl9yYW5kb20obmRldik7XFxuIDgzMDpcXHRcXG4gODMxOlxcdFxcdGlmIChwcml2LVxcdTAwM2VvcHMtXFx1MDAzZWluaXQpIHtcXG4gODMyOlxcdFxcdFxcdGVyciA9IHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlaW5pdChwcml2LVxcdTAwM2VuZGV2KTtcXG4gODMzOlxcdFxcdFxcdGlmIChlcnIpXFxuIDgzNDpcXHRcXHRcXHRcXHRnb3RvIGVycl9odztcXG4gODM1OlxcdFxcdH1cXG4gODM2OlxcdFxcbiA4Mzc6XFx0XFx0ZXJyID0gdzUxMDBfaHdfcmVzZXQocHJpdik7XFxuIDgzODpcXHRcXHRpZiAoZXJyKVxcbiA4Mzk6XFx0XFx0XFx0Z290byBlcnJfaHc7XFxuIDg0MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MTQuNjcwODkxMDgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MTUwMDQ2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgc25pcHBldCwgZnJhbWVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGB3NTEwMF9od19yZXNldGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCdzIGEga2V5IHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIHNvIEkgc2hvdWxkIHNlZSB3aGF0IGl0J3MgZG9pbmcuIExldCdzIGRlbHZlIGluIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgaGFyZHdhcmUgcmVzZXQgaXMgYmVpbmcgaGFuZGxlZCBoZXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgYW5kIGFueSByZWdpc3RlciBtYW5pcHVsYXRpb25zIGludm9sdmVkLiBUaGlzIGZ1bmN0aW9uJ3MgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBjcnVjaWFsIGluIGRldGVybWluaW5nIGhvdyByb2J1c3QgYW5kIHJlbGlhYmxlIHRoZSBvdmVyYWxsIFc1MTAwIGluaXRpYWxpemF0aW9uIGlzLiBIb3BlZnVsbHkgdGhlcmUgYXJlbid0IGFueSBnb3RjaGFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1NiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6MzA6MjAuNDg1ODk4MzE0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzNTA6XFx0c3RhdGljIGludCB3NTEwMF9od19yZXNldChzdHJ1Y3QgdzUxMDBfcHJpdiAqcHJpdilcXG4gMzUxOlxcdHtcXG4gMzUyOlxcdFxcdHUzMiBydHI7XFxuIDM1MzpcXHRcXG4gMzU0OlxcdFxcdHc1MTAwX3Jlc2V0KHByaXYpO1xcbiAzNTU6XFx0XFxuIDM1NjpcXHRcXHR3NTEwMF9kaXNhYmxlX2ludHIocHJpdik7XFxuIDM1NzpcXHRcXHR3NTEwMF93cml0ZV9tYWNhZGRyKHByaXYpO1xcbiAzNTg6XFx0XFxuIDM1OTpcXHRcXHRzd2l0Y2ggKHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlY2hpcF9pZCkge1xcbiAzNjA6XFx0XFx0Y2FzZSBXNTEwMDpcXG4gMzYxOlxcdFxcdFxcdHc1MTAwX21lbW9yeV9jb25maWd1cmUocHJpdik7XFxuIDM2MjpcXHRcXHRcXHRydHIgPSBXNTEwMF9SVFI7XFxuIDM2MzpcXHRcXHRcXHRicmVhaztcXG4gMzY0OlxcdFxcdGNhc2UgVzUyMDA6XFxuIDM2NTpcXHRcXHRcXHR3NTIwMF9tZW1vcnlfY29uZmlndXJlKHByaXYpO1xcbiAzNjY6XFx0XFx0XFx0cnRyID0gVzUxMDBfUlRSO1xcbiAzNjc6XFx0XFx0XFx0YnJlYWs7XFxuIDM2ODpcXHRcXHRjYXNlIFc1NTAwOlxcbiAzNjk6XFx0XFx0XFx0dzU1MDBfbWVtb3J5X2NvbmZpZ3VyZShwcml2KTtcXG4gMzcwOlxcdFxcdFxcdHJ0ciA9IFc1NTAwX1JUUjtcXG4gMzcxOlxcdFxcdFxcdGJyZWFrO1xcbiAzNzI6XFx0XFx0ZGVmYXVsdDpcXG4gMzczOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzNzQ6XFx0XFx0fVxcbiAzNzU6XFx0XFxuIDM3NjpcXHRcXHRpZiAodzUxMDBfcmVhZDE2KHByaXYsIHJ0cikgIT0gUlRSX0RFRkFVTFQpXFxuIDM3NzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzc4OlxcdFxcbiAzNzk6XFx0XFx0cmV0dXJuIDA7XFxuIDM4MDpcXHR9XFxuIDM4MTpcXHRcXG4gMzgyOlxcdHN0YXRpYyB2b2lkIHc1MTAwX2h3X3N0YXJ0KHN0cnVjdCB3NTEwMF9wcml2ICpwcml2KVxcbiAzODM6XFx0e1xcbiAzODQ6XFx0XFx0dTggbW9kZSA9IFMwX01SX01BQ1JBVztcXG4gMzg1OlxcdFxcbiAzODY6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2Vwcm9taXNjKSB7XFxuIDM4NzpcXHRcXHRcXHRpZiAocHJpdi1cXHUwMDNlb3BzLVxcdTAwM2VjaGlwX2lkID09IFc1NTAwKVxcbiAzODg6XFx0XFx0XFx0XFx0bW9kZSB8PSBXNTUwMF9TMF9NUl9NRjtcXG4gMzg5OlxcdFxcdFxcdGVsc2VcXG4gMzkwOlxcdFxcdFxcdFxcdG1vZGUgfD0gUzBfTVJfTUY7XFxuIDM5MTpcXHRcXHR9XFxuIDM5MjpcXHRcXG4gMzkzOlxcdFxcdHc1MTAwX3dyaXRlKHByaXYsIFc1MTAwX1MwX01SKHByaXYpLCBtb2RlKTtcXG4gMzk0OlxcdFxcdHc1MTAwX2NvbW1hbmQocHJpdiwgUzBfQ1JfT1BFTik7XFxuIDM5NTpcXHRcXHR3NTEwMF9lbmFibGVfaW50cihwcml2KTtcXG4gMzk2OlxcdH1cXG4gMzk3OlxcdFxcbiAzOTg6XFx0c3RhdGljIHZvaWQgdzUxMDBfaHdfY2xvc2Uoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuIDM5OTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjIwLjQ4NjA1NTg3NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU2NjUwMzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVzUxMDAgSGFyZHdhcmUgUmVzZXQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgYHc1MTAwX2h3X3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIHJlc2V0IHJvdXRpbmUgcmVsaWVzIG9uIHJlYWRpbmcgYSByZWdpc3Rlciwgc3BlY2lmaWNhbGx5IHVzaW5nIGB3NTEwMF9yZWFkMTYocHJpdiwgcnRyKWAuICBJdCdzIGV4cGVjdGluZyB0aGlzIHJlZ2lzdGVyLCBwcm9iYWJseSBzb21lIHNvcnQgb2Ygc3RhdHVzIG9yIGNvbnRyb2wgcmVnaXN0ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBXNTEwMCwgdG8gaG9sZCBhIHNwZWNpZmljIHZhbHVlLCBgUlRSX0RFRkFVTFRgLiBJZiB0aGUgdmFsdWUgZG9lc24ndCBtYXRjaCB0aGlzIGV4cGVjdGVkIGRlZmF1bHQsIHRoZSBmdW5jdGlvbiBmbGFncyBhIGhhcmR3YXJlIGZhaWx1cmUgd2l0aCBgLUVOT0RFVmAuXG5cbkhtbSwgdGhpcyBwcmVzZW50cyBhIHByb2JsZW0uICBTaW5jZSB0aGlzIGlzIGEgcGh5c2ljYWwgU1BJIGRldmljZSBhbmQsIGFzIEkgdW5kZXJzdGFuZCBpdCwgc3l6a2FsbGVyIGRvZXNuJ3QgZW11bGF0ZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBoYXJkd2FyZSwgdGhhdCByZWdpc3RlciByZWFkIGlzIHZlcnkgbGlrZWx5IHRvIGZhaWwuIE15IGd1dCB0ZWxscyBtZSBpdCdzIHByb2JhYmx5IGdvaW5nIHRvIHJldHVybiBzb21ldGhpbmcgb3RoZXIgdGhhbiBgUlRSX0RFRkFVTFRgIOKAkyBtYXliZSB6ZXJvLCBtYXliZSB3aGF0ZXZlciBnYXJiYWdlIHRoZSBkdW1teSBTUEkgZHJpdmVyIGlzIHNwaXR0aW5nIG91dC4gIEl0J3MgdW5saWtlbHkgdG8gYmUgdGhlIGNvcnJlY3QgZGVmYXVsdCBzdGF0ZSwgZ2l2ZW4gYSBsYWNrIG9mIHByb3BlciBpbml0aWFsaXphdGlvbiBhbmQgZW11bGF0aW9uLlxuXG5CdXQgd2FpdCwgd2hhdCBleGFjdGx5ICppcyogYFJUUl9ERUZBVUxUYD8gIEkgbmVlZCB0byBnbyBhbmQgZmluZCB3aGVyZSB0aGF0IGlzIGRlZmluZWQuIFRoYXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiAgSSdtIGd1ZXNzaW5nIHRoaXMgbWlnaHQgaGF2ZSBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgKlIqZXRyeSAqVCppbWUgKlIqZWdpc3Rlciwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG1heWJlPyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBhc3N1bWVkIGluaXRpYWwgc3RhdGUgb2YgdGhlIGhhcmR3YXJlIGluIG9yZGVyIHRvIHRyb3VibGVzaG9vdCB0aGlzLCBhbmQgdG8gZGV2ZWxvcCBzdHJhdGVnaWVzIHRvIGNpcmN1bXZlbnQgdGhpcyBleHBlY3RlZCBpbml0aWFsIHZhbHVlIGluIHRoZSBlbXVsYXRvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyMjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDoyNS43NDI3MTA3NTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjE0MzY3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUlRSX0RFRkFVTFRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzU9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmMtODktI2RlZmluZSBXNTEwMF9SVFJcXHRcXHQweDAwMTcgLyogUmV0cnkgVGltZS12YWx1ZSBSZWdpc3RlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jOjkwOiNkZWZpbmUgICBSVFJfREVGQVVMVFxcdFxcdCAgMjAwMCAvKiA9MHgwN2QwICgyMDAwKSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dpem5ldC93NTEwMC5jLTkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM9MzUwPXN0YXRpYyBpbnQgdzUxMDBfaHdfcmVzZXQoc3RydWN0IHc1MTAwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2l6bmV0L3c1MTAwLmM6Mzc2OlxcdGlmICh3NTEwMF9yZWFkMTYocHJpdiwgcnRyKSAhPSBSVFJfREVGQVVMVClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93aXpuZXQvdzUxMDAuYy0zNzctXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjMwOjI3Ljg2NDE1Mzc4N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODY5MjM5MDg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IEFuIEFuYWx5c2lzIG9mIHRoZSBXNTEwMCBTUEkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQuIFRoZSBgUlRSX0RFRkFVTFRgIHJlZ2lzdGVyIGlzIHNldCB0byAyMDAwICgweDA3ZDApLiBVbmxlc3Mgc3l6a2FsbGVyIGNhbiBzb21laG93IHNwZWNpZmljYWxseSBtb2NrIFNQSSByZWFkcyB0byByZXR1cm4gdGhpcyB2YWx1ZSBkdXJpbmcgdGhlIHByb2JlLCB0aGUgcHJvYmUgaXRzZWxmIHdpbGwgZmFpbCwgd2hpY2ggaXMgdGhlIGltbWVkaWF0ZSBpc3N1ZS4gSSBrbm93IHRoYXQgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhIGdlbmVyaWMgU1BJIG1vY2tpbmcgZnJhbWV3b3JrIGNvbmZpZ3VyYWJsZSBvbiBhIHBlci1kZXZpY2UgYmFzaXMuIEl0IG9mZmVycyBsaW1pdGVkIFNQSSBzdXBwb3J0IHRocm91Z2ggYHNwaWRldmAgYW5kIHNpbWlsYXIsIGJ1dCB0aGF0IGlzIGludGVuZGVkIGZvciB1c2Vyc3BhY2UgaW50ZXJhY3Rpb25zIHdpdGggU1BJLCBub3QgZm9yIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgZm9yIGEga2VybmVsIGRyaXZlci4gRXNzZW50aWFsbHksIHN5emthbGxlciBkb2VzIG5vdCBlbXVsYXRlIFNQSSBkZXZpY2VzIGF0IGFsbC5cblxuQmVjYXVzZSBvZiB0aGlzLCB0aGUgYHc1MTAwX3Byb2JlYCBjYWxsIHdpbGwgaW52YXJpYWJseSBmYWlsLCBtZWFuaW5nIHRoZSBuZXcgY29kZSBhZGRlZCBmb3IgSVJRIHJlcXVlc3RzIGFuZCB0aGUgYHc1MTAwX2RldGVjdF9saW5rYCBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIFRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGx5IGFkZGluZyBhIEdQSU8gcGluIGZvciBsaW5rIGRldGVjdGlvbiwgd2hpY2ggaXMgaGFyZHdhcmUtc3BlY2lmaWMuXG5cbkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBJdCBhbHNvIGFsaWducyB3aXRoIHRoZSByYXRpb25hbGUgb2YgY29kZSB0aGF0IFwicmVxdWlyZVtzXSBwaHlzaWNhbCAuLi4gaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gV2hpbGUgdGhpcyBpcyBTUEkgYW5kIG5vdCBQQ0llLCB0aGUgcHJpbmNpcGxlIGlzIHRoZSBzYW1lLiBJdCBpcyBhIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50IHBhdGNoLlxuXG5Ob3csIGxldCBtZSBkb3VibGUgY2hlY2s7IGlzIHRoZXJlIGFueSBvdGhlciB3YXkgdGhpcyBjb2RlIGNvdWxkIHBvc3NpYmx5IGJlIHJlYWNoZWQ/IEkgd2lsbCBxdWlja2x5IHZlcmlmeS4gVGhlIGB3NTEwMF9wcm9iZWAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYHc1MTAwX3NwaV9wcm9iZWAsIHdoaWNoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiBmb3IgdGhlIGB3NTEwMF9zcGlfZHJpdmVyYC4gVGhlIGRyaXZlciBzcGVjaWZpY2FsbHkgYmluZHMgdG8gU1BJIGRldmljZXMgd2l0aCBjb21wYXRpYmxlIHN0cmluZ3MgXCJ3aXpuZXQsdzUxMDBcIiwgXCJ3aXpuZXQsdzUyMDBcIiwgYW5kIFwid2l6bmV0LHc1NTAwXCIuIFdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYW4gZXF1aXZhbGVudCBlbXVsYXRpb24sIHRoZSBwcm9iZSB3aWxsIGZhaWwgYXQgYHc1MTAwX2h3X3Jlc2V0YC4gSXQgaXMgYSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlci5cblxuVGhlcmVmb3JlLCBjb25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTk2LCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxODozMDo0Ni41NTY1NDg4M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBXaXpuZXQgVzUxMDAvVzUyMDAvVzU1MDAgU1BJIEV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IGEgbGluayBHUElPLiBUaGlzIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFNQSSBkZXZpY2UgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHBlcmZvcm1zIGhhcmR3YXJlIHJlZ2lzdGVyIGNoZWNrcyAoZS5nLiwgdmVyaWZ5aW5nIHRoZSBSVFIgcmVnaXN0ZXIgdmFsdWUpIHRoYXQgd2lsbCBmYWlsIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50LCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFdpem5ldCBXNTEwMC9XNTIwMC9XNTUwMCBTUEkgRXRoZXJuZXQgZHJpdmVyIHRvIHN1cHBvcnQgYSBsaW5rIEdQSU8uIFRoaXMgaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgU1BJIGRldmljZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGUgZHJpdmVyJ3MgcHJvYmUgZnVuY3Rpb24gcGVyZm9ybXMgaGFyZHdhcmUgcmVnaXN0ZXIgY2hlY2tzIChlLmcuLCB2ZXJpZnlpbmcgdGhlIFJUUiByZWdpc3RlciB2YWx1ZSkgdGhhdCB3aWxsIGZhaWwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowcjvsc[1] Phase: Running StartedAt: 2026-08-04 18:30:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcjvsc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-04 18:30:58 +0000 UTC FinishedAt: 2026-08-04 18:31:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}